diff --git a/BUILD.gn b/BUILD.gn index d001c03..3b95216 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -1156,6 +1156,7 @@ if (!is_win) { group("webui_closure_compile") { data_deps = [ + "chrome/browser/resources/engagement:closure_compile", "ui/webui/resources:closure_compile", ] }
diff --git a/DEPS b/DEPS index eabae8ca..e946e5a 100644 --- a/DEPS +++ b/DEPS
@@ -79,11 +79,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '8bac928009b8689f082e48ad5bc62f65297b894b', + 'skia_revision': '461ef7af88cc966007c464130a971ec86c803f1d', # 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': 'c2a9fb06f14acd9d393885973e3722ee3d0609ac', + 'v8_revision': 'b2a75aa261671bca28890a5dfbce87d96d8eaef4', # 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. @@ -91,7 +91,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '8f184ae9de068d685c1f896d6c027e9cddcc72f3', + 'angle_revision': '7618eaf9ad454f81c95e4e508747ac5eef74df82', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling build tools # and whatever else without interference from each other. @@ -135,7 +135,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': '406b235a95c475c4bd67cf13f46603a5a2e027e8', + 'catapult_revision': '6fbfa7cb20f44fdf0a0336137a33febc44f6fd84', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -657,7 +657,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '3c1cb0203b6cfc10389e85a350b2ea6ca29d01ce', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '9a58cc00e0b20e5d816e907beb5758bfa302003d', # commit position 21742 + Var('webrtc_git') + '/src.git' + '@' + '2e18061033d36923b2377cbb31dd64e4494f49d2', # commit position 21742 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
diff --git a/ash/accessibility/accessibility_controller.cc b/ash/accessibility/accessibility_controller.cc index 9a9d6e5c..cc6f5ae 100644 --- a/ash/accessibility/accessibility_controller.cc +++ b/ash/accessibility/accessibility_controller.cc
@@ -362,56 +362,62 @@ pref_change_registrar_->Init(prefs); pref_change_registrar_->Add( prefs::kAccessibilityAutoclickEnabled, - base::Bind(&AccessibilityController::UpdateAutoclickFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateAutoclickFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityAutoclickDelayMs, - base::Bind(&AccessibilityController::UpdateAutoclickDelayFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateAutoclickDelayFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityCaretHighlightEnabled, - base::Bind(&AccessibilityController::UpdateCaretHighlightFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateCaretHighlightFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityCursorHighlightEnabled, - base::Bind(&AccessibilityController::UpdateCursorHighlightFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateCursorHighlightFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityFocusHighlightEnabled, - base::Bind(&AccessibilityController::UpdateFocusHighlightFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateFocusHighlightFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityHighContrastEnabled, - base::Bind(&AccessibilityController::UpdateHighContrastFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateHighContrastFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityLargeCursorEnabled, - base::Bind(&AccessibilityController::UpdateLargeCursorFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateLargeCursorFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityLargeCursorDipSize, - base::Bind(&AccessibilityController::UpdateLargeCursorFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateLargeCursorFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityMonoAudioEnabled, - base::Bind(&AccessibilityController::UpdateMonoAudioFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateMonoAudioFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilitySpokenFeedbackEnabled, - base::Bind(&AccessibilityController::UpdateSpokenFeedbackFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateSpokenFeedbackFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilitySelectToSpeakEnabled, - base::Bind(&AccessibilityController::UpdateSelectToSpeakFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateSelectToSpeakFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityStickyKeysEnabled, - base::Bind(&AccessibilityController::UpdateStickyKeysFromPref, - base::Unretained(this))); + base::BindRepeating(&AccessibilityController::UpdateStickyKeysFromPref, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kAccessibilityVirtualKeyboardEnabled, - base::Bind(&AccessibilityController::UpdateVirtualKeyboardFromPref, - base::Unretained(this))); + base::BindRepeating( + &AccessibilityController::UpdateVirtualKeyboardFromPref, + base::Unretained(this))); // Load current state. UpdateAutoclickFromPref();
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index ae7b613c..2f939080 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -329,6 +329,7 @@ views::AXAuraObjCache::GetInstance()->GetID(shelf->GetStatusAreaWidget()); node_data->AddIntAttribute(ax::mojom::IntAttribute::kPreviousFocusId, previous_id); + node_data->SetNameExplicitlyEmpty(); } void LockContentsView::OnUsersChanged(
diff --git a/ash/shelf/shelf_controller.cc b/ash/shelf/shelf_controller.cc index d0f4b352..44278c4b 100644 --- a/ash/shelf/shelf_controller.cc +++ b/ash/shelf/shelf_controller.cc
@@ -315,11 +315,11 @@ pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>(); pref_change_registrar_->Init(pref_service); pref_change_registrar_->Add(prefs::kShelfAlignmentLocal, - base::Bind(&SetShelfAlignmentFromPrefs)); + base::BindRepeating(&SetShelfAlignmentFromPrefs)); pref_change_registrar_->Add(prefs::kShelfAutoHideBehaviorLocal, - base::Bind(&SetShelfAutoHideFromPrefs)); + base::BindRepeating(&SetShelfAutoHideFromPrefs)); pref_change_registrar_->Add(prefs::kShelfPreferences, - base::Bind(&SetShelfBehaviorsFromPrefs)); + base::BindRepeating(&SetShelfBehaviorsFromPrefs)); } void ShelfController::OnTabletModeStarted() {
diff --git a/ash/system/bluetooth/bluetooth_power_controller.cc b/ash/system/bluetooth/bluetooth_power_controller.cc index d9a13e1..69d6ba1 100644 --- a/ash/system/bluetooth/bluetooth_power_controller.cc +++ b/ash/system/bluetooth/bluetooth_power_controller.cc
@@ -75,7 +75,7 @@ active_user_pref_change_registrar_->Init(active_user_pref_service_); active_user_pref_change_registrar_->Add( prefs::kUserBluetoothAdapterEnabled, - base::Bind( + base::BindRepeating( &BluetoothPowerController::OnBluetoothPowerActiveUserPrefChanged, base::Unretained(this))); }
diff --git a/ash/system/night_light/night_light_controller.cc b/ash/system/night_light/night_light_controller.cc index d3b23ce..8b59211b 100644 --- a/ash/system/night_light/night_light_controller.cc +++ b/ash/system/night_light/night_light_controller.cc
@@ -417,24 +417,24 @@ pref_change_registrar_->Init(active_user_pref_service_); pref_change_registrar_->Add( prefs::kNightLightEnabled, - base::Bind(&NightLightController::OnEnabledPrefChanged, - base::Unretained(this))); + base::BindRepeating(&NightLightController::OnEnabledPrefChanged, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kNightLightTemperature, - base::Bind(&NightLightController::OnColorTemperaturePrefChanged, - base::Unretained(this))); + base::BindRepeating(&NightLightController::OnColorTemperaturePrefChanged, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kNightLightScheduleType, - base::Bind(&NightLightController::OnScheduleTypePrefChanged, - base::Unretained(this))); + base::BindRepeating(&NightLightController::OnScheduleTypePrefChanged, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kNightLightCustomStartTime, - base::Bind(&NightLightController::OnCustomSchedulePrefsChanged, - base::Unretained(this))); + base::BindRepeating(&NightLightController::OnCustomSchedulePrefsChanged, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kNightLightCustomEndTime, - base::Bind(&NightLightController::OnCustomSchedulePrefsChanged, - base::Unretained(this))); + base::BindRepeating(&NightLightController::OnCustomSchedulePrefsChanged, + base::Unretained(this))); } void NightLightController::InitFromUserPrefs() {
diff --git a/ash/system/palette/palette_tray.cc b/ash/system/palette/palette_tray.cc index 3d8825b..d4cb635 100644 --- a/ash/system/palette/palette_tray.cc +++ b/ash/system/palette/palette_tray.cc
@@ -206,8 +206,8 @@ pref_change_registrar_user_->Init(pref_service); pref_change_registrar_user_->Add( prefs::kEnableStylusTools, - base::Bind(&PaletteTray::OnPaletteEnabledPrefChanged, - base::Unretained(this))); + base::BindRepeating(&PaletteTray::OnPaletteEnabledPrefChanged, + base::Unretained(this))); // Read the initial value. OnPaletteEnabledPrefChanged(); @@ -253,8 +253,8 @@ pref_change_registrar_local_->Init(local_state_pref_service_); pref_change_registrar_local_->Add( prefs::kHasSeenStylus, - base::Bind(&PaletteTray::OnHasSeenStylusPrefChanged, - base::Unretained(this))); + base::BindRepeating(&PaletteTray::OnHasSeenStylusPrefChanged, + base::Unretained(this))); OnHasSeenStylusPrefChanged(); }
diff --git a/ash/system/session/logout_button_tray.cc b/ash/system/session/logout_button_tray.cc index 1b75e07..eaca905 100644 --- a/ash/system/session/logout_button_tray.cc +++ b/ash/system/session/logout_button_tray.cc
@@ -86,12 +86,12 @@ pref_change_registrar_->Init(prefs); pref_change_registrar_->Add( prefs::kShowLogoutButtonInTray, - base::Bind(&LogoutButtonTray::UpdateShowLogoutButtonInTray, - base::Unretained(this))); + base::BindRepeating(&LogoutButtonTray::UpdateShowLogoutButtonInTray, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kLogoutDialogDurationMs, - base::Bind(&LogoutButtonTray::UpdateLogoutDialogDuration, - base::Unretained(this))); + base::BindRepeating(&LogoutButtonTray::UpdateLogoutDialogDuration, + base::Unretained(this))); // Read the initial values. UpdateShowLogoutButtonInTray();
diff --git a/ash/touch/touch_devices_controller.cc b/ash/touch/touch_devices_controller.cc index 72143c3..fdbe7d0 100644 --- a/ash/touch/touch_devices_controller.cc +++ b/ash/touch/touch_devices_controller.cc
@@ -151,16 +151,16 @@ pref_change_registrar_->Init(prefs); pref_change_registrar_->Add( prefs::kTapDraggingEnabled, - base::Bind(&TouchDevicesController::UpdateTapDraggingEnabled, - base::Unretained(this))); + base::BindRepeating(&TouchDevicesController::UpdateTapDraggingEnabled, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kTouchpadEnabled, - base::Bind(&TouchDevicesController::UpdateTouchpadEnabled, - base::Unretained(this))); + base::BindRepeating(&TouchDevicesController::UpdateTouchpadEnabled, + base::Unretained(this))); pref_change_registrar_->Add( prefs::kTouchscreenEnabled, - base::Bind(&TouchDevicesController::UpdateTouchscreenEnabled, - base::Unretained(this))); + base::BindRepeating(&TouchDevicesController::UpdateTouchscreenEnabled, + base::Unretained(this))); // Load current state. UpdateTapDraggingEnabled(); UpdateTouchpadEnabled(); @@ -198,7 +198,7 @@ GetInputDeviceControllerClient()->SetInternalTouchpadEnabled( prefs->GetBoolean(prefs::kTouchpadEnabled), - base::BindOnce(&OnSetTouchpadEnabledDone)); + base::BindRepeating(&OnSetTouchpadEnabledDone)); } void TouchDevicesController::UpdateTouchscreenEnabled() {
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h index fc2c46d..dedd142 100644 --- a/base/process/process_metrics.h +++ b/base/process/process_metrics.h
@@ -135,17 +135,9 @@ // convenience wrapper for CreateProcessMetrics(). static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics(); - // Returns the current space allocated for the pagefile, in bytes (these pages - // may or may not be in memory). On Linux, this returns the total virtual - // memory size. - size_t GetPagefileUsage() const; - // Returns the peak space allocated for the pagefile, in bytes. - size_t GetPeakPagefileUsage() const; // Returns the current working set size, in bytes. On Linux, this returns // the resident set size. size_t GetWorkingSetSize() const; - // Returns the peak working set size, in bytes. - size_t GetPeakWorkingSetSize() const; // Returns private and sharedusage, in bytes. Private bytes is the amount of // memory currently allocated to a process that cannot be shared. Returns // false on platform specific error conditions. Note: |private_bytes|
diff --git a/base/process/process_metrics_freebsd.cc b/base/process/process_metrics_freebsd.cc index ebbaaaf..abd2b35 100644 --- a/base/process/process_metrics_freebsd.cc +++ b/base/process/process_metrics_freebsd.cc
@@ -26,21 +26,6 @@ return WrapUnique(new ProcessMetrics(process)); } -size_t ProcessMetrics::GetPagefileUsage() const { - struct kinfo_proc info; - int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ }; - size_t length = sizeof(info); - - if (sysctl(mib, arraysize(mib), &info, &length, NULL, 0) < 0) - return 0; - - return info.ki_size; -} - -size_t ProcessMetrics::GetPeakPagefileUsage() const { - return 0; -} - size_t ProcessMetrics::GetWorkingSetSize() const { struct kinfo_proc info; int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ }; @@ -52,10 +37,6 @@ return info.ki_rssize * getpagesize(); } -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - return 0; -} - bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes, size_t* shared_bytes) const { WorkingSetKBytes ws_usage;
diff --git a/base/process/process_metrics_fuchsia.cc b/base/process/process_metrics_fuchsia.cc index 5204383..daedbd8 100644 --- a/base/process/process_metrics_fuchsia.cc +++ b/base/process/process_metrics_fuchsia.cc
@@ -30,21 +30,11 @@ return 0.0; } -size_t ProcessMetrics::GetPagefileUsage() const { - NOTIMPLEMENTED(); // TODO(fuchsia): https://crbug.com/706592. - return 0; -} - size_t ProcessMetrics::GetWorkingSetSize() const { NOTIMPLEMENTED(); // TODO(fuchsia): https://crbug.com/706592. return 0; } -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - NOTIMPLEMENTED(); // TODO(fuchsia): https://crbug.com/706592. - return 0; -} - bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const { NOTIMPLEMENTED(); // TODO(fuchsia): https://crbug.com/706592. return false;
diff --git a/base/process/process_metrics_ios.cc b/base/process/process_metrics_ios.cc index 31c812de..6ede765 100644 --- a/base/process/process_metrics_ios.cc +++ b/base/process/process_metrics_ios.cc
@@ -43,13 +43,6 @@ return 0; } -size_t ProcessMetrics::GetPagefileUsage() const { - task_basic_info_64 task_info_data; - if (!GetTaskInfo(&task_info_data)) - return 0; - return task_info_data.virtual_size; -} - size_t ProcessMetrics::GetWorkingSetSize() const { task_basic_info_64 task_info_data; if (!GetTaskInfo(&task_info_data))
diff --git a/base/process/process_metrics_linux.cc b/base/process/process_metrics_linux.cc index 5997713..ace6ee18 100644 --- a/base/process/process_metrics_linux.cc +++ b/base/process/process_metrics_linux.cc
@@ -211,28 +211,12 @@ return WrapUnique(new ProcessMetrics(process)); } -// On Linux, return vsize. -size_t ProcessMetrics::GetPagefileUsage() const { - return internal::ReadProcStatsAndGetFieldAsSizeT(process_, - internal::VM_VSIZE); -} - -// On Linux, return the high water mark of vsize. -size_t ProcessMetrics::GetPeakPagefileUsage() const { - return ReadProcStatusAndGetFieldAsSizeT(process_, "VmPeak") * 1024; -} - // On Linux, return RSS. size_t ProcessMetrics::GetWorkingSetSize() const { return internal::ReadProcStatsAndGetFieldAsSizeT(process_, internal::VM_RSS) * getpagesize(); } -// On Linux, return the high water mark of RSS. -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - return ReadProcStatusAndGetFieldAsSizeT(process_, "VmHWM") * 1024; -} - bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes, size_t* shared_bytes) const { WorkingSetKBytes ws_usage;
diff --git a/base/process/process_metrics_mac.cc b/base/process/process_metrics_mac.cc index 63c59e2..fc8e9805 100644 --- a/base/process/process_metrics_mac.cc +++ b/base/process/process_metrics_mac.cc
@@ -132,17 +132,6 @@ return WrapUnique(new ProcessMetrics(process, port_provider)); } -size_t ProcessMetrics::GetPagefileUsage() const { - task_basic_info_64 task_info_data; - if (!GetTaskInfo(TaskForPid(process_), &task_info_data)) - return 0; - return task_info_data.virtual_size; -} - -size_t ProcessMetrics::GetPeakPagefileUsage() const { - return 0; -} - size_t ProcessMetrics::GetWorkingSetSize() const { size_t resident_bytes = 0; if (!GetMemoryBytes(nullptr, nullptr, &resident_bytes, nullptr)) @@ -150,10 +139,6 @@ return resident_bytes; } -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - return 0; -} - bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes, size_t* shared_bytes) const { return GetMemoryBytes(private_bytes, shared_bytes, nullptr, nullptr);
diff --git a/base/process/process_metrics_openbsd.cc b/base/process/process_metrics_openbsd.cc index 77b43bd1..3bc5c8fb 100644 --- a/base/process/process_metrics_openbsd.cc +++ b/base/process/process_metrics_openbsd.cc
@@ -21,27 +21,6 @@ return WrapUnique(new ProcessMetrics(process)); } -size_t ProcessMetrics::GetPagefileUsage() const { - struct kinfo_proc info; - size_t length; - int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_, - sizeof(struct kinfo_proc), 0 }; - - if (sysctl(mib, arraysize(mib), NULL, &length, NULL, 0) < 0) - return -1; - - mib[5] = (length / sizeof(struct kinfo_proc)); - - if (sysctl(mib, arraysize(mib), &info, &length, NULL, 0) < 0) - return -1; - - return (info.p_vm_tsize + info.p_vm_dsize + info.p_vm_ssize); -} - -size_t ProcessMetrics::GetPeakPagefileUsage() const { - return 0; -} - size_t ProcessMetrics::GetWorkingSetSize() const { struct kinfo_proc info; size_t length; @@ -59,10 +38,6 @@ return info.p_vm_rssize * getpagesize(); } -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - return 0; -} - bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes, size_t* shared_bytes) const { WorkingSetKBytes ws_usage;
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc index 61f0bf4..01fb28a 100644 --- a/base/process/process_metrics_win.cc +++ b/base/process/process_metrics_win.cc
@@ -46,23 +46,6 @@ return WrapUnique(new ProcessMetrics(process)); } -size_t ProcessMetrics::GetPagefileUsage() const { - PROCESS_MEMORY_COUNTERS pmc; - if (GetProcessMemoryInfo(process_.Get(), &pmc, sizeof(pmc))) { - return pmc.PagefileUsage; - } - return 0; -} - -// Returns the peak space allocated for the pagefile, in bytes. -size_t ProcessMetrics::GetPeakPagefileUsage() const { - PROCESS_MEMORY_COUNTERS pmc; - if (GetProcessMemoryInfo(process_.Get(), &pmc, sizeof(pmc))) { - return pmc.PeakPagefileUsage; - } - return 0; -} - // Returns the current working set size, in bytes. size_t ProcessMetrics::GetWorkingSetSize() const { PROCESS_MEMORY_COUNTERS pmc; @@ -72,15 +55,6 @@ return 0; } -// Returns the peak working set size, in bytes. -size_t ProcessMetrics::GetPeakWorkingSetSize() const { - PROCESS_MEMORY_COUNTERS pmc; - if (GetProcessMemoryInfo(process_.Get(), &pmc, sizeof(pmc))) { - return pmc.PeakWorkingSetSize; - } - return 0; -} - bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes, size_t* shared_bytes) const { // PROCESS_MEMORY_COUNTERS_EX is not supported until XP SP2.
diff --git a/base/test/launcher/unit_test_launcher.cc b/base/test/launcher/unit_test_launcher.cc index f7bae466..1d4439c 100644 --- a/base/test/launcher/unit_test_launcher.cc +++ b/base/test/launcher/unit_test_launcher.cc
@@ -191,14 +191,14 @@ return true; } -int LaunchUnitTestsInternal(const RunTestSuiteCallback& run_test_suite, +int LaunchUnitTestsInternal(RunTestSuiteCallback run_test_suite, size_t parallel_jobs, int default_batch_limit, bool use_job_objects, - const Closure& gtest_init) { + OnceClosure gtest_init) { #if defined(OS_ANDROID) // We can't easily fork on Android, just run the test suite directly. - return run_test_suite.Run(); + return std::move(run_test_suite).Run(); #else bool force_single_process = false; if (CommandLine::ForCurrentProcess()->HasSwitch( @@ -222,7 +222,7 @@ CommandLine::ForCurrentProcess()->HasSwitch( switches::kTestChildProcess) || force_single_process) { - return run_test_suite.Run(); + return std::move(run_test_suite).Run(); } #endif @@ -233,7 +233,7 @@ TimeTicks start_time(TimeTicks::Now()); - gtest_init.Run(); + std::move(gtest_init).Run(); TestTimeouts::Initialize(); int batch_limit = default_batch_limit; @@ -567,23 +567,24 @@ int LaunchUnitTests(int argc, char** argv, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { CommandLine::Init(argc, argv); size_t parallel_jobs = NumParallelJobs(); if (parallel_jobs == 0U) { return 1; } - return LaunchUnitTestsInternal(run_test_suite, parallel_jobs, + return LaunchUnitTestsInternal(std::move(run_test_suite), parallel_jobs, kDefaultTestBatchLimit, true, - Bind(&InitGoogleTestChar, &argc, argv)); + BindOnce(&InitGoogleTestChar, &argc, argv)); } int LaunchUnitTestsSerially(int argc, char** argv, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { CommandLine::Init(argc, argv); - return LaunchUnitTestsInternal(run_test_suite, 1U, kDefaultTestBatchLimit, - true, Bind(&InitGoogleTestChar, &argc, argv)); + return LaunchUnitTestsInternal(std::move(run_test_suite), 1U, + kDefaultTestBatchLimit, true, + BindOnce(&InitGoogleTestChar, &argc, argv)); } int LaunchUnitTestsWithOptions(int argc, @@ -591,27 +592,27 @@ size_t parallel_jobs, int default_batch_limit, bool use_job_objects, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { CommandLine::Init(argc, argv); - return LaunchUnitTestsInternal(run_test_suite, parallel_jobs, + return LaunchUnitTestsInternal(std::move(run_test_suite), parallel_jobs, default_batch_limit, use_job_objects, - Bind(&InitGoogleTestChar, &argc, argv)); + BindOnce(&InitGoogleTestChar, &argc, argv)); } #if defined(OS_WIN) int LaunchUnitTests(int argc, wchar_t** argv, bool use_job_objects, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { // Windows CommandLine::Init ignores argv anyway. CommandLine::Init(argc, NULL); size_t parallel_jobs = NumParallelJobs(); if (parallel_jobs == 0U) { return 1; } - return LaunchUnitTestsInternal(run_test_suite, parallel_jobs, + return LaunchUnitTestsInternal(std::move(run_test_suite), parallel_jobs, kDefaultTestBatchLimit, use_job_objects, - Bind(&InitGoogleTestWChar, &argc, argv)); + BindOnce(&InitGoogleTestWChar, &argc, argv)); } #endif // defined(OS_WIN)
diff --git a/base/test/launcher/unit_test_launcher.h b/base/test/launcher/unit_test_launcher.h index 219e136..0d1c21e0 100644 --- a/base/test/launcher/unit_test_launcher.h +++ b/base/test/launcher/unit_test_launcher.h
@@ -19,17 +19,15 @@ namespace base { // Callback that runs a test suite and returns exit code. -using RunTestSuiteCallback = Callback<int(void)>; +using RunTestSuiteCallback = OnceCallback<int(void)>; // Launches unit tests in given test suite. Returns exit code. -int LaunchUnitTests(int argc, - char** argv, - const RunTestSuiteCallback& run_test_suite); +int LaunchUnitTests(int argc, char** argv, RunTestSuiteCallback run_test_suite); // Same as above, but always runs tests serially. int LaunchUnitTestsSerially(int argc, char** argv, - const RunTestSuiteCallback& run_test_suite); + RunTestSuiteCallback run_test_suite); // Launches unit tests in given test suite. Returns exit code. // |parallel_jobs| is the number of parallel test jobs. @@ -41,7 +39,7 @@ size_t parallel_jobs, int default_batch_limit, bool use_job_objects, - const RunTestSuiteCallback& run_test_suite); + RunTestSuiteCallback run_test_suite); #if defined(OS_WIN) // Launches unit tests in given test suite. Returns exit code. @@ -49,7 +47,7 @@ int LaunchUnitTests(int argc, wchar_t** argv, bool use_job_objects, - const RunTestSuiteCallback& run_test_suite); + RunTestSuiteCallback run_test_suite); #endif // defined(OS_WIN) // Delegate to abstract away platform differences for unit tests.
diff --git a/base/test/launcher/unit_test_launcher_ios.cc b/base/test/launcher/unit_test_launcher_ios.cc index acb6c71..0bb31f7 100644 --- a/base/test/launcher/unit_test_launcher_ios.cc +++ b/base/test/launcher/unit_test_launcher_ios.cc
@@ -16,7 +16,7 @@ int LaunchUnitTests(int argc, char** argv, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { CHECK(CommandLine::InitializedForCurrentProcess() || CommandLine::Init(argc, argv)); const CommandLine* command_line = CommandLine::ForCurrentProcess(); @@ -36,7 +36,7 @@ return 0; } - return run_test_suite.Run(); + return std::move(run_test_suite).Run(); } } // namespace base
diff --git a/base/test/launcher/unit_test_launcher_nacl_nonsfi.cc b/base/test/launcher/unit_test_launcher_nacl_nonsfi.cc index b2cf14a..237a3da 100644 --- a/base/test/launcher/unit_test_launcher_nacl_nonsfi.cc +++ b/base/test/launcher/unit_test_launcher_nacl_nonsfi.cc
@@ -15,7 +15,7 @@ int LaunchUnitTests(int argc, char** argv, - const RunTestSuiteCallback& run_test_suite) { + RunTestSuiteCallback run_test_suite) { CHECK(CommandLine::InitializedForCurrentProcess() || CommandLine::Init(argc, argv)); const CommandLine* command_line = CommandLine::ForCurrentProcess(); @@ -45,7 +45,7 @@ } } - return run_test_suite.Run(); + return std::move(run_test_suite).Run(); } } // namespace base
diff --git a/base/test/run_all_unittests.cc b/base/test/run_all_unittests.cc index 05f3012..0ad84ed5 100644 --- a/base/test/run_all_unittests.cc +++ b/base/test/run_all_unittests.cc
@@ -11,5 +11,5 @@ base::TestSuite test_suite(argc, argv); return base::LaunchUnitTests( argc, argv, - base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); + base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite))); }
diff --git a/build/android/docs/build_config.md b/build/android/docs/build_config.md new file mode 100644 index 0000000..29764eec --- /dev/null +++ b/build/android/docs/build_config.md
@@ -0,0 +1,170 @@ +# Introduction + +This document describes the `.build_config` files that are used by the +Chromium build system for Android-specific targets like APK, resources, +and more. + +[TOC] + +# I. Overview of .build_config files: + +The Android build requires performing computations about dependencies in +various targets, which are not possible with the GN build language. To address +this, `.build_config` files are written during the build to store the needed +per-target information as JSON files. + +They are always written to `$target_gen_dir/${target_name}.build_config`. + +Many scripts under [`build/android/gyp/`](build/android_gyp/), which are used +during the build, can also accept parameter arguments using +`@FileArg references`, which look like: + + --some-param=@FileArg(<filename>:<key1>:<key2>:..<keyN>) + +This placeholder will ensure that `<filename>` is read as a JSON file, then +return the value at `[key1][key2]...[keyN]` for the `--some-param` option. + +Apart from that, the scripts do not need to know anything about the structure +of `.build_config` files (but the GN rules that invoke them do and select +which `@FileArg()` references to use). + +For a concrete example, consider the following GN fragment: + +```gn +# From //ui/android/BUILD.gn: +android_resources("ui_java_resources") { + custom_package = "org.chromium.ui" + resource_dirs = [ "java/res" ] + deps = [ + ":ui_strings_grd", + ] +} +``` + +This will end up generating the following JSON file under +`$CHROMIUM_OUTPUT_DIR/gen/ui/android/ui_java_resources.build_config`: + +```json +{ + "deps_info": { + "deps_configs": [ + "gen/ui/android/ui_strings_grd.build_config" + ], + "name": "ui_java_resources.build_config", + "package_name": "org.chromium.ui", + "path": "gen/ui/android/ui_java_resources.build_config", + "r_text": "gen/ui/android/ui_java_resources_R.txt", + "resources_dirs": [ + "../../ui/android/java/res" + ], + "resources_zip": "resource_zips/ui/android/ui_java_resources.resources.zip", + "srcjar": "gen/ui/android/ui_java_resources.srcjar", + "type": "android_resources" + }, + "gradle": {}, + "resources": { + "dependency_zips": [ + "resource_zips/ui/android/ui_strings_grd.resources.zip" + ], + "extra_package_names": [], + "extra_r_text_files": [] + } +} +``` + +NOTE: All path values in `.build_config` files are relative to your +`$CHROMIUM_OUTPUT_DIR`. + +# II. Generation of .build_config files: + +They are generated by the GN [`write_build_config()`](gn_write_build_config) +internal template, which ends up invoking +[`write_build_config.py`](write_build_config_py). For our example above, this +is with the following parameters: + +``` +python ../../build/android/gyp/write_build_config.py \ + --type=android_resources \ + --depfile gen/ui/android/ui_java_resources__build_config.d \ + --deps-configs=\[\"gen/ui/android/ui_strings_grd.build_config\"\] \ + --build-config gen/ui/android/ui_java_resources.build_config \ + --resources-zip resource_zips/ui/android/ui_java_resources.resources.zip \ + --package-name org.chromium.ui \ + --r-text gen/ui/android/ui_java_resources_R.txt \ + --resource-dirs=\[\"../../ui/android/java/res\"\] \ + --srcjar gen/ui/android/ui_java_resources.srcjar +``` + +Note that *most* of the content of the JSON file comes from command-line +parameters, but not all of it. + +In particular, the `resources['dependency_zips']` entry was computed by +inspecting the content of all dependencies (here, only +`ui_string_grd.build_config`), and collecting their +`deps_configs['resources_zip']` values. + +Because a target's `.build_config` file will always be generated after +that of all of its dependencies, +[`write_build_config.py`](write_build_config_py) can traverse the +whole (transitive) set of direct *and* indirect dependencies for a given target +and extract useful information out of it. + +This is the kind of processing that cannot be done at the GN language level, +and is very powerful for Android builds. + + +# III. Usage of .build_config files: + +In addition to being parsed by `write_build_config.py`, when they are listed +in the `--deps-configs` of a given target, the `.build_config` files are used +by other scripts under [build/android/gyp/] to build stuff. + +For example, the GN `android_resources` template uses it to invoke the +[`process_resources.py`] script with the following command, in order to +generate various related files (e.g. `ui_java_resources_R.txt`): + +```sh +python ../../build/android/gyp/process_resources.py \ + --depfile gen/ui/android/ui_java_resources_1.d \ + --android-sdk-jar ../../third_party/android_tools/sdk/platforms/android-27/android.jar \ + --aapt-path ../../third_party/android_tools/sdk/build-tools/27.0.3/aapt \ + --dependencies-res-zips=@FileArg\(gen/ui/android/ui_java_resources.build_config:resources:dependency_zips\) \ + --extra-res-packages=@FileArg\(gen/ui/android/ui_java_resources.build_config:resources:extra_package_names\) \ + --extra-r-text-files=@FileArg\(gen/ui/android/ui_java_resources.build_config:resources:extra_r_text_files\) \ + --resource-dirs=\[\"../../ui/android/java/res\"\] \ + --debuggable \ + --resource-zip-out resource_zips/ui/android/ui_java_resources.resources.zip \ + --r-text-out gen/ui/android/ui_java_resources_R.txt \ + --srcjar-out gen/ui/android/ui_java_resources.srcjar \ + --non-constant-id \ + --custom-package org.chromium.ui \ + --shared-resources +``` + +Note the use of `@FileArg()` references here, to tell the script where to find +the information it needs. + + +# IV. Format of .build_config files: + +Thanks to `@FileArg()` references, Python build scripts under +[`build/android/gyp/`](build/android/gyp/) do not need to know anything +about the internal format of `.build_config` files. + +This format is decided between internal GN build rules and +[`write_build_config.py`][write_build_config_py]. Since these changes rather +often, the format documentation is kept inside the Python script itself, but +can be extracted as a Markdown file and visualized with the following commands: + +```sh +# Extract .build_config format documentation +build/android/gyp/write_build_config.py \ + --generate-markdown-format-doc > /tmp/format.md + +# Launch a browser to visualize the format documentation. +python tools/md_browser/md_browser.py -d /tmp /tmp/format.md +``` + +[build/android/gyp/]: https://chromium.googlesource.com/chromium/src/build/+/master/android/gyp/ +[gn_write_build_config]: https://cs.chromium.org/chromium/src/build/config/android/internal_rules.gni?q=write_build_config&sq=package:chromium +[write_build_config_py]: https://chromium.googlesource.com/chromium/src/build/+/master/android/gyp/write_build_config.py
diff --git a/build/android/docs/coverage.md b/build/android/docs/coverage.md index 3cc4c99..3c6c7c3 100644 --- a/build/android/docs/coverage.md +++ b/build/android/docs/coverage.md
@@ -14,29 +14,43 @@ ## How to collect EMMA coverage data 1. Use the following GN build arguments: - ``` - target_os = "android" - emma_coverage = true - emma_filter = "org.chromium.chrome.browser.ntp.*,-*Test*,-*Fake*,-*Mock*" - ``` - The filter syntax is as documented for the [EMMA coverage - filters](http://emma.sourceforge.net/reference/ch02s06s02.html). - Now when building, **.em** files will be created in the build directory. +``` + target_os = "android" + emma_coverage = true + emma_filter = "org.chromium.chrome.browser.ntp.*,-*Test*,-*Fake*,-*Mock*" +``` + +The filter syntax is as documented for the [EMMA coverage +filters](http://emma.sourceforge.net/reference/ch02s06s02.html). + +Now when building, **.em** files will be created in the build directory. + 2. Run tests, with option `--coverage-dir <directory>`, to specify where to save the .ec file. For example, you can run chrome junit tests: `out/Debug/bin/run_chrome_junit_tests --coverage-dir /tmp/coverage`. + 3. Turn off strict mode when running instrumentation tests by adding `--strict-mode=off` because the EMMA code causes strict mode violations by accessing disk. + 4. Use a pre-L Android OS (running Dalvik) because code coverage is not supported in ART. + 5. The coverage results of junit and instrumentation tests will be merged automatically if they are in the same directory. + 6. Now we have both .em and .ec files. We can create a html report using `generate_emma_html.py`, for example: - `build/android/generate_emma_html.py --coverage-dir /tmp/coverage/ - --metadata-dir out/Debug/ --output example.html`. + +``` + build/android/generate_emma_html.py \ + --coverage-dir /tmp/coverage/ \ + --metadata-dir out/Debug/ \ + --output example.html +``` Then an example.html containing coverage info will be created: - `EMMA: writing [html] report to - [<your_current_directory>/example.html] …` + +``` + EMMA: writing [html] report to [<your_current_directory>/example.html] ... +```
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py index f1d8dbe..329c4f2 100755 --- a/build/android/gyp/write_build_config.py +++ b/build/android/gyp/write_build_config.py
@@ -24,6 +24,465 @@ 2. Either (a) or (b) a. inputs/deps ensure that the action runs whenever one of the files changes b. the files are added to the action's depfile + +NOTE: All paths within .build_config files are relative to $OUTPUT_CHROMIUM_DIR. + +This is a technical note describing the format of .build_config files. +Please keep it updated when changing this script. For extraction and +visualization instructions, see build/android/docs/build_config.md + +------------- BEGIN_MARKDOWN --------------------------------------------------- +The .build_config file format +=== + +# Introduction + +This document tries to explain the format of `.build_config` generated during +the Android build of Chromium. For a higher-level explanation of these files, +please read +[build/android/docs/build_config.md](build/android/docs/build_config.md). + +# The `deps_info` top-level dictionary: + +All `.build_config` files have a required `'deps_info'` key, whose value is a +dictionary describing the target and its dependencies. The latter has the +following required keys: + +## Required keys in `deps_info`: + +* `deps_info['type']`: The target type as a string. + + The following types are known by the internal GN build rules and the + build scripts altogether: + + * [java_binary](#target_java_binary) + * [java_annotation_processor](#target_java_annotation_processor) + * [junit_binary](#target_junit_binary) + * [java_library](#target_java_library) + * [android_assets](#target_android_assets) + * [android_resources](#target_android_resources) + * [android_apk](#target_android_apk) + * [dist_jar](#target_dist_jar) + * [dist_aar](#target_dist_aar) + * [resource_rewriter](#target_resource_rewriter) + * [group](#target_group) + + See later sections for more details of some of these. + +* `deps_info['path']`: Path to the target's `.build_config` file. + +* `deps_info['name']`: Nothing more than the basename of `deps_info['path']` +at the moment. + +* `deps_info['deps_configs']`: List of paths to the `.build_config` files of +all *direct* dependencies of the current target. + + NOTE: Because the `.build_config` of a given target is always generated + after the `.build_config` of its dependencies, the `write_build_config.py` + script can use chains of `deps_configs` to compute transitive dependencies + for each target when needed. + +## Optional keys in `deps_info`: + +The following keys will only appear in the `.build_config` files of certain +target types: + +* `deps_info['requires_android']`: True to indicate that the corresponding +code uses Android-specific APIs, and thus cannot run on the host within a +regular JVM. May only appear in Java-related targets. + +* `deps_info['supports_android']`: +May appear in Java-related targets, and indicates that +the corresponding code doesn't use Java APIs that are not available on +Android. As such it may run either on the host or on an Android device. + +* `deps_info['assets']`: +Only seen for the [`android_assets`](#target_android_assets) type. See below. + +* `deps_info['package_name']`: Java package name associated with this target. + + NOTE: For `android_resources` targets, + this is the package name for the corresponding R class. For `android_apk` + targets, this is the corresponding package name. This does *not* appear for + other target types. + +* `deps_info['android_manifest']`: +Path to an AndroidManifest.xml file related to the current target. + +# Top-level `resources` dictionary: + +This dictionary only appears for a few target types that can contain or +relate to Android resources (e.g. `android_resources` or `android_apk`): + +* `resources['dependency_zips']`: +List of `deps_info['resources_zip']` entries for all `android_resources` +dependencies for the current target. + +* `resource['extra_package_names']`: +Always empty for `android_resources` types. Otherwise, +the list of `deps_info['package_name']` entries for all `android_resources` +dependencies for the current target. Computed automatically by +`write_build_config.py`. + +* `resources['extra_r_text_files']`: +Always empty for `android_resources` types. Otherwise, the list of +`deps_info['r_text']` entries for all `android_resources` dependencies for +the current target. Computed automatically. + + +# `.build_config` target types description: + +## <a name="target_group">Target type `group`</a>: + +This type corresponds to a simple target that is only used to group +dependencies. It matches the `java_group()` GN template. Its only top-level +`deps_info` keys are `supports_android` (always True), and `deps_configs`. + + +## <a name="target_android_resources">Target type `android_resources`</a>: + +This type corresponds to targets that are used to group Android resource files. +For example, all `android_resources` dependencies of an `android_apk` will +end up packaged into the final APK by the build system. + +It uses the following keys: + +* `deps_info['resource_dirs']`: +List of paths to the source directories containing the resources for this +target. This key is optional, because some targets can refer to prebuilt +`.aar` archives. + + +* `deps_info['resources_zip']`: +*Required*. Path to the `.resources.zip` file that contains all raw/uncompiled +resource files for this target (and also no `R.txt`, `R.java` or `R.class`). + + If `deps_info['resource_dirs']` is missing, this must point to a prebuilt + `.aar` archive containing resources. Otherwise, this will point to a + zip archive generated at build time, wrapping the content of + `deps_info['resource_dirs']` into a single zip file. + +* `deps_info['package_name']`: +Java package name that the R class for this target belongs to. + +* `deps_info['android_manifest']`: +Optional. Path to the top-level Android manifest file associated with these +resources (if not provided, an empty manifest will be used to generate R.txt). + +* `deps_info['r_text']`: +Provide the path to the `R.txt` file that describes the resources wrapped by +this target. Normally this file is generated from the content of the resource +directories or zip file, but some targets can provide their own `R.txt` file +if they want. + +* `deps_info['srcjar_path']`: +Path to the `.srcjar` file that contains the auto-generated `R.java` source +file corresponding to the content of `deps_info['r_text']`. This is *always* +generated from the content of `deps_info['r_text']` by the +`build/android/gyp/process_resources.py` script. + + +## <a name="target_android_assets">Target type `android_assets`</a>: + +This type corresponds to targets used to group Android assets, i.e. liberal +files that will be placed under `//assets/` within the final APK. + +These use an `deps_info['assets']` key to hold a dictionary of values related +to assets covered by this target. + +* `assets['sources']`: +The list of all asset source paths for this target. Each source path can +use an optional `:<zipPath>` suffix, where `<zipPath>` is the final location +of the assets (relative to `//assets/`) within the APK. + +* `assets['outputs']`: +Optional. Some of the sources might be renamed before being stored in the +final //assets/ sub-directory. When this happens, this contains a list of +all renamed output file paths + + NOTE: When not empty, the first items of `assets['sources']` must match + every item in this list. Extra sources correspond to non-renamed sources. + + NOTE: This comes from the `asset_renaming_destinations` parameter for the + `android_assets()` GN template. + +* `assets['disable_compression']`: +Optional. Will be True to indicate that these assets should be stored +uncompressed in the final APK. For example, this is necessary for locale +.pak files used by the System WebView feature. + +* `assets['treat_as_locale_paks']`: +Optional. Will be True to indicate that these assets are locale `.pak` files +(containing localized strings for C++). These are later processed to generate +a special ``.build_config`.java` source file, listing all supported Locales in +the current build. + + +## <a name="target_java_library">Target type `java_library`</a>: + +This type is used to describe target that wrap Java bytecode, either created +by compiling sources, or providing them with a prebuilt jar. + +* `deps_info['unprocessed_jar_path']`: +Path to the original .jar file for this target, before any kind of processing +through Proguard or other tools. For most targets this is generated +from sources, with a name like `$target_name.javac.jar`. However, when using +a prebuilt jar, this will point to the source archive directly. + +* `deps_info['jar_path']`: +Path to a file that is the result of processing +`deps_info['unprocessed_jar_path']` with various tools. + +* `deps_info['interface_jar_path']: +Path to the interface jar generated for this library. This corresponds to +a jar file that only contains declarations. Generated by running the `ijar` +tool on `deps_info['jar_path']` + +* `deps_info['dex_path']`: +Path to the `.dex` file generated for this target, from `deps_info['jar_path']` +unless this comes from a prebuilt `.aar` archive. + +* `deps_info['is_prebuilt']`: +True to indicate that this target corresponds to a prebuilt `.jar` file. +In this case, `deps_info['unprocessed_jar_path']` will point to the source +`.jar` file. Otherwise, it will be point to a build-generated file. + +* `deps_info['java_sources_file']`: +Path to a single `.sources` file listing all the Java sources that were used +to generate the library (simple text format, one `.jar` path per line). + +* `deps_info['owned_resource_dirs']`: +List of all resource directories belonging to all resource dependencies for +this target. + +* `deps_info['owned_resource_zips']`: +List of all resource zip files belonging to all resource dependencies for this +target. + +* `deps_info['javac']`: +A dictionary containing information about the way the sources in this library +are compiled. Appears also on other Java-related targets. See the [dedicated +section about this](#dict_javac) below for details. + +* `deps_info['javac_full_classpath']`: +The classpath used when performing bytecode processing. Essentially the +collection of all `deps_info['unprocessed_jar_path']` entries for the target +and all its dependencies. + +* `deps_info['javac_full_interface_classpath']`: +The classpath used when using the errorprone compiler. + +* `deps_info['proguard_enabled"]`: +True to indicate that ProGuard processing is enabled for this target. + +* `deps_info['proguard_configs"]`: +A list of paths to ProGuard configuration files related to this library. + +* `deps_info['extra_classpath_jars']: +For some Java related types, a list of extra `.jar` files to use at build time +but not at runtime. + +## <a name="target_java_binary">Target type `java_binary`</a>: + +This type corresponds to a Java binary, which is nothing more than a +`java_library` target that also provides a main class name. It thus inherits +all entries from the `java_library` type, and adds: + +* `deps_info['main_class']`: +Name of the main Java class that serves as an entry point for the binary. + +* `deps_info['java_runtime_classpath']`: +The classpath used when running a Java or Android binary. Essentially the +collection of all `deps_info['jar_path']` entries for the target and all its +dependencies. + + +## <a name="target_junit_binary">Target type `junit_binary`</a>: + +A target type for JUnit-specific binaries. Identical to +[`java_binary`](#target_java_binary) in the context of `.build_config` files, +except the name. + + +## <a name="target_java_annotation_processor">Target type \ +`java_annotation_processor`</a>: + +A target type for Java annotation processors. Identical to +[`java_binary`](#target_java_binary) in the context of `.build_config` files, +except the name, except that it requires a `deps_info['main_class']` entry. + + +## <a name="target_android_apk">Target type `android_apk`</a>: + +Corresponds to an Android APK. Inherits from the +[`java_binary`](#target_java_binary) type and adds: + +* `deps_info['apk_path']`: +Path to the raw, unsigned, APK generated by this target. + +* `deps_info['incremental_apk_path']`: +Path to the raw, unsigned, incremental APK generated by this target. + +* `deps_info['incremental_install_json_path']`: +Path to the JSON file with per-apk details for incremental install. +See `build/android/gyp/incremental/write_installer_json.py` for more +details about its content. + +* `deps_info['non_native_packed_relocations']`: +A string that is either "True" or "False" (why a string?). True to indicate +that this uses packed relocations that may not be supported by the target +Android system for this build (this generally requires the Chromium linker +to be used to load the native libraries). + +* `deps_info['dist_jar']['all_interface_jars']`: +For `android_apk` and `dist_jar` targets, a list of all interface jar files +that will be merged into the final `.jar` file for distribution. + +* `deps_info['final_dex']['dependency_dex_files']`: +The list of paths to all `deps_info['dex_path']` entries for all library +dependencies for this APK. + +* `native['libraries']` +List of native libraries for the primary ABI to be embedded in this APK. +E.g. [ "libchrome.so" ] (i.e. this doesn't include any ABI sub-directory +prefix). + +* `native['java_libraries_list']` +The same list as `native['libraries']` as a string holding a Java source +fragment, e.g. `"{\"chrome\"}"`, without any `lib` prefix, and `.so` +suffix (as expected by `System.loadLibrary()`). + +* `native['second_abi_libraries']` +List of native libraries for the secondary ABI to be embedded in this APK. +Empty if only a single ABI is supported. + +* `native['secondary_abi_java_libraries_list']` +The same list as `native['second_abi_libraries']` as a Java source string. + +* `assets` +A list of assets stored compressed in the APK. Each entry has the format +`<source-path>:<destination-path>`, where `<source-path>` is relative to +`$CHROMIUM_OUTPUT_DIR`, and `<destination-path>` is relative to `//assets/` +within the APK. + +NOTE: Not to be confused with the `deps_info['assets']` dictionary that +belongs to `android_assets` targets only. + +* `uncompressed_assets` +A list of uncompressed assets stored in the APK. Each entry has the format +`<source-path>:<destination-path>` too. + +* `compressed_locales_java_list` +A string holding a Java source fragment that gives the list of locales stored +compressed in the `//assets/` directory. E.g. `"{\"am\","\ar\",\"en-US\"}"`. +Note that the files will be stored with the `.pak` extension (e.g. +`//assets/en-US.pak`). + +* `uncompressed_locales_java_list` +A string holding a Java source fragment that gives the list of locales stored +uncompressed in the `//assets/stored-locales/` directory. These are used for +the System WebView feature only. Note that the files will be stored with the +`.pak` extension (e.g. `//assets/stored-locales/en-US.apk`). + +* `extra_android_manifests` +A list of `deps_configs['android_manifest]` entries, for all resource +dependencies for this target. I.e. a list of paths to manifest files for +all the resources in this APK. These will be merged with the root manifest +file to generate the final one used to build the APK. + +* `java_resources_jars` +This is a list of `.jar` files whose *Java* resources should be included in +the final APK. For example, this is used to copy the `.res` files from the +EMMA Coverage tool. The copy will omit any `.class` file and the top-level +`//meta-inf/` directory from the input jars. Everything else will be copied +into the final APK as-is. + +NOTE: This has nothing to do with *Android* resources. + +* `jni['all_source']` +The list of all `deps_info['java_sources_file']` entries for all library +dependencies for this APK. Note: this is a list of files, where each file +contains a list of Java source files. This is used for JNI registration. + +* `deps_info['proguard_all_configs"]`: +The collection of all 'deps_info['proguard_configs']` values from this target +and all its dependencies. + +* `deps_info['proguard_all_extra_jars"]`: +The collection of all 'deps_info['extra_classpath_jars']` values from all +dependencies. + +## <a name="target_dist_aar">Target type `dist_aar`</a>: + +This type corresponds to a target used to generate an `.aar` archive for +distribution. The archive's content is determined by the target's dependencies. + +This always has the following entries: + + * `deps_info['supports_android']` (always True). + * `deps_info['requires_android']` (always True). + * `deps_info['proguard_configs']` (optional). + + +## <a name="target_dist_jar">Target type `dist_jar`</a>: + +This type is similar to [`dist_aar`](#target_dist_aar) but is not +Android-specific, and used to create a `.jar` file that can be later +redistributed. + +This always has the following entries: + + * `deps_info['proguard_enabled']` (False by default). + * `deps_info['proguard_configs']` (optional). + * `deps_info['supports_android']` (True by default). + * `deps_info['requires_android']` (False by default). + + + +## <a name="target_resource_rewriter">Target type `resource_rewriter`</a>: + +The ResourceRewriter Java class is in charge of rewriting resource IDs at +runtime, for the benefit of the System WebView feature. This is a special +target type for it. + +Its `.build_config` only keeps a list of dependencies in its +`deps_info['deps_configs']` key. + +## <a name="dict_javac">The `deps_info['javac']` dictionary</a>: + +This dictionary appears in Java-related targets (e.g. `java_library`, +`android_apk` and others), and contains information related to the compilation +of Java sources, class files, and jars. + +* `javac['srcjars']` +For `java_library` targets, this is the list of all `deps_info['srcjar_path']` +from all resource dependencies for the current target (and these contain +corresponding R.java source files). For other target types, this is an empty +list. + +* `javac['resource_packages']` +For `java_library` targets, this is the list of package names for all resource +dependencies for the current target. Order must match the one from +`javac['srcjars']`. For other target types, this key does not exist. + +* `javac['classpath']` +The classpath used to compile this target when annotation processors are +present. + +* `javac['interface_classpath']` +The classpath used to compile this target when annotation processors are +not present. These are also always used to known when a target needs to be +rebuilt. + +* `javac['processor_classpath']` +The classpath listing the jars used for annotation processors. I.e. sent as +`-processorpath` when invoking `javac`. + +* `javac['processor_classes']` +The list of annotation processor main classes. I.e. sent as `-processor' when +invoking `javac`. + +--------------- END_MARKDOWN --------------------------------------------------- """ import itertools @@ -41,6 +500,25 @@ _RESOURCE_TYPES = ('android_assets', 'android_resources') +def _ExtractMarkdownDocumentation(input_text): + """Extract Markdown documentation from a list of input strings lines. + + This generates a list of strings extracted from |input_text|, by looking + for '-- BEGIN_MARKDOWN --' and '-- END_MARKDOWN --' line markers.""" + in_markdown = False + result = [] + for line in input_text.splitlines(): + if in_markdown: + if '-- END_MARKDOWN --' in line: + in_markdown = False + else: + result.append(line) + else: + if '-- BEGIN_MARKDOWN --' in line: + in_markdown = True + + return result + class AndroidManifest(object): def __init__(self, path): self.path = path @@ -348,10 +826,21 @@ parser.add_option('--fail', help='GN-list of error message lines to fail with.') + parser.add_option('--generate-markdown-format-doc', action='store_true', + help='Dump the Markdown .build_config format documentation ' + 'then exit immediately.') + options, args = parser.parse_args(argv) if args: parser.error('No positional arguments should be given.') + + if options.generate_markdown_format_doc: + doc_lines = _ExtractMarkdownDocumentation(__doc__) + for line in doc_lines: + print(line) + return 0 + if options.fail: parser.error('\n'.join(build_utils.ParseGnList(options.fail)))
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc index 0c4c2ea..ed0c21af 100644 --- a/cc/blink/web_display_item_list_impl.cc +++ b/cc/blink/web_display_item_list_impl.cc
@@ -84,7 +84,7 @@ void WebDisplayItemListImpl::AppendFloatClipItem( const blink::WebFloatRect& clip_rect) { - bool antialias = false; + bool antialias = true; display_item_list_->StartPaint(); display_item_list_->push<cc::SaveOp>(); display_item_list_->push<cc::ClipRectOp>(gfx::RectFToSkRect(clip_rect),
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index 725a371..c0cacd6d 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -333,10 +333,10 @@ <dimen name="ntp_search_box_transition_length">16dp</dimen> <dimen name="ntp_search_box_logo_padding">8dp</dimen> <dimen name="ntp_search_box_voice_search_margin_end_modern">6dp</dimen> - <!-- Lateral offset added to the search box bounds when modern is enabled. 8dp is added to both - the top and bottom bounds to bring the 40dp modern_toolbar_background_size to 56dp + <!-- Negative lateral inset added to the search box bounds when modern is enabled. 8dp is added + to both the top and bottom bounds to bring the 40dp modern_toolbar_background_size to 56dp (matches toolbar_height_no_shadow). --> - <dimen name="ntp_search_box_bounds_lateral_offset_modern">8dp</dimen> + <dimen name="ntp_search_box_bounds_lateral_inset_modern">-8dp</dimen> <dimen name="ntp_wide_card_lateral_margins">48dp</dimen> <dimen name="ntp_list_item_min_height">48dp</dimen> <dimen name="ntp_shadow_height">9dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegate.java index fa697225..b918a82 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegate.java
@@ -88,10 +88,9 @@ /** * @param url The requested url. - * @param tab The current tab. * @return Whether we should block the navigation and request file access before proceeding. */ - boolean shouldRequestFileAccess(String url, Tab tab); + boolean shouldRequestFileAccess(String url); /** * Trigger a UI affordance that will ask the user to grant file access. After the access @@ -99,10 +98,9 @@ * * @param intent The intent to continue loading the file URL. * @param referrerUrl The HTTP referrer URL. - * @param tab The current tab. * @param needsToCloseTab Whether this action should close the current tab. */ - void startFileIntent(Intent intent, String referrerUrl, Tab tab, boolean needsToCloseTab); + void startFileIntent(Intent intent, String referrerUrl, boolean needsToCloseTab); /** * Launches a Chrome Custom Tab to be shown on top of a WebappActivity. @@ -117,11 +115,10 @@ * * @param url The new URL after clobbering the current tab. * @param referrerUrl The HTTP referrer URL. - * @param tab The current tab. * @return OverrideUrlLoadingResult (if the tab has been clobbered, or we're launching an * intent.) */ - OverrideUrlLoadingResult clobberCurrentTab(String url, String referrerUrl, Tab tab); + OverrideUrlLoadingResult clobberCurrentTab(String url, String referrerUrl); /** Adds a window id to the intent, if necessary. */ void maybeSetWindowId(Intent intent); @@ -147,20 +144,17 @@ /** * Check if the URL should be handled by an instant app, or kick off an async request for an * instant app banner. - * @param tab The current tab. * @param url The current URL. * @param referrerUrl The referrer URL. * @param isIncomingRedirect Whether we are handling an incoming redirect to an instant app. * @return Whether we launched an instant app. */ - boolean maybeLaunchInstantApp(Tab tab, String url, String referrerUrl, - boolean isIncomingRedirect); + boolean maybeLaunchInstantApp(String url, String referrerUrl, boolean isIncomingRedirect); /** - * @param tab The current tab. * @return whether this navigation is from the search results page. */ - boolean isSerpReferrer(Tab tab); + boolean isSerpReferrer(); /** * @return The previously committed URL from the WebContents.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java index ebbb979..97e1a994 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -398,8 +398,7 @@ final String fallbackUrl, final Tab tab, final boolean needsToCloseTab, final boolean proxy) { try { - startIncognitoIntentInternal( - intent, referrerUrl, fallbackUrl, tab, needsToCloseTab, proxy); + startIncognitoIntentInternal(intent, referrerUrl, fallbackUrl, needsToCloseTab, proxy); } catch (BadTokenException e) { return false; } @@ -407,9 +406,9 @@ } private void startIncognitoIntentInternal(final Intent intent, final String referrerUrl, - final String fallbackUrl, final Tab tab, final boolean needsToCloseTab, - final boolean proxy) { - Context context = tab.getWindowAndroid().getContext().get(); + final String fallbackUrl, final boolean needsToCloseTab, final boolean proxy) { + if (!hasValidTab()) return; + Context context = mTab.getWindowAndroid().getContext().get(); if (!(context instanceof Activity)) return; Activity activity = (Activity) context; @@ -421,9 +420,9 @@ @Override public void onClick(DialogInterface dialog, int which) { startActivity(intent, proxy); - if (tab != null && !tab.isClosing() && tab.isInitialized() + if (mTab != null && !mTab.isClosing() && mTab.isInitialized() && needsToCloseTab) { - closeTab(tab); + closeTab(); } } }) @@ -431,23 +430,23 @@ new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - loadIntent(intent, referrerUrl, fallbackUrl, tab, needsToCloseTab, + loadIntent(intent, referrerUrl, fallbackUrl, mTab, needsToCloseTab, true); } }) .setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { - loadIntent(intent, referrerUrl, fallbackUrl, tab, needsToCloseTab, true); + loadIntent(intent, referrerUrl, fallbackUrl, mTab, needsToCloseTab, true); } }) .show(); } @Override - public boolean shouldRequestFileAccess(String url, Tab tab) { + public boolean shouldRequestFileAccess(String url) { // If the tab is null, then do not attempt to prompt for access. - if (tab == null) return false; + if (!hasValidTab()) return false; // If the url points inside of Chromium's data directory, no permissions are necessary. // This is required to prevent permission prompt when uses wants to access offline pages. @@ -455,30 +454,32 @@ return false; } - return !tab.getWindowAndroid().hasPermission(permission.READ_EXTERNAL_STORAGE) - && tab.getWindowAndroid().canRequestPermission(permission.READ_EXTERNAL_STORAGE); + return !mTab.getWindowAndroid().hasPermission(permission.READ_EXTERNAL_STORAGE) + && mTab.getWindowAndroid().canRequestPermission(permission.READ_EXTERNAL_STORAGE); } @Override - public void startFileIntent(final Intent intent, final String referrerUrl, final Tab tab, - final boolean needsToCloseTab) { + public void startFileIntent( + final Intent intent, final String referrerUrl, final boolean needsToCloseTab) { PermissionCallback permissionCallback = new PermissionCallback() { @Override public void onRequestPermissionsResult(String[] permissions, int[] grantResults) { - if (grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - loadIntent(intent, referrerUrl, null, tab, needsToCloseTab, tab.isIncognito()); + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED + && hasValidTab()) { + loadIntent( + intent, referrerUrl, null, mTab, needsToCloseTab, mTab.isIncognito()); } else { // TODO(tedchoc): Show an indication to the user that the navigation failed // instead of silently dropping it on the floor. if (needsToCloseTab) { // If the access was not granted, then close the tab if necessary. - closeTab(tab); + closeTab(); } } } }; - tab.getWindowAndroid().requestPermissions( + if (!hasValidTab()) return; + mTab.getWindowAndroid().requestPermissions( new String[] {permission.READ_EXTERNAL_STORAGE}, permissionCallback); } @@ -494,7 +495,7 @@ String url = fallbackUrl != null ? fallbackUrl : intent.getDataString(); if (!UrlUtilities.isAcceptedScheme(url)) { - if (needsToCloseTab) closeTab(tab); + if (needsToCloseTab) closeTab(); return; } @@ -509,7 +510,7 @@ IntentHandler.addTrustedIntentExtras(intent); startActivity(intent, false); - if (needsToCloseTab) closeTab(tab); + if (needsToCloseTab) closeTab(); return; } @@ -534,8 +535,7 @@ } @Override - public OverrideUrlLoadingResult clobberCurrentTab( - String url, String referrerUrl, final Tab tab) { + public OverrideUrlLoadingResult clobberCurrentTab(String url, String referrerUrl) { int transitionType = PageTransition.LINK; final LoadUrlParams loadUrlParams = new LoadUrlParams(url, transitionType); if (!TextUtils.isEmpty(referrerUrl)) { @@ -543,7 +543,7 @@ new Referrer(referrerUrl, WebReferrerPolicy.ALWAYS); loadUrlParams.setReferrer(referrer); } - if (tab != null) { + if (hasValidTab()) { // Loading URL will start a new navigation which cancels the current one // that this clobbering is being done for. It leads to UAF. To avoid that, // we're loading URL asynchronously. See https://crbug.com/732260. @@ -552,7 +552,7 @@ public void run() { // Tab might be closed when this is run. See https://crbug.com/662877 if (!mIsTabDestroyed) { - tab.loadUrl(loadUrlParams); + mTab.loadUrl(loadUrlParams); } } }); @@ -589,10 +589,11 @@ return Telephony.Sms.getDefaultSmsPackage(mApplicationContext); } - private void closeTab(Tab tab) { - Context context = tab.getWindowAndroid().getContext().get(); + private void closeTab() { + if (!hasValidTab()) return; + Context context = mTab.getWindowAndroid().getContext().get(); if (context instanceof ChromeActivity) { - ((ChromeActivity) context).getTabModelSelector().closeTab(tab); + ((ChromeActivity) context).getTabModelSelector().closeTab(mTab); } } @@ -611,12 +612,12 @@ } @Override - public boolean isSerpReferrer(Tab tab) { + public boolean isSerpReferrer() { // TODO (thildebr): Investigate whether or not we can use getLastCommittedUrl() instead of // the NavigationController. - if (tab == null || tab.getWebContents() == null) return false; + if (!hasValidTab() || mTab.getWebContents() == null) return false; - NavigationController nController = tab.getWebContents().getNavigationController(); + NavigationController nController = mTab.getWebContents().getNavigationController(); int index = nController.getLastCommittedEntryIndex(); if (index == -1) return false; @@ -627,13 +628,14 @@ } @Override - public boolean maybeLaunchInstantApp(Tab tab, String url, String referrerUrl, - boolean isIncomingRedirect) { - if (tab == null || tab.getWebContents() == null) return false; + public boolean maybeLaunchInstantApp( + String url, String referrerUrl, boolean isIncomingRedirect) { + if (!hasValidTab() || mTab.getWebContents() == null) return false; InstantAppsHandler handler = InstantAppsHandler.getInstance(); - Intent intent = tab.getTabRedirectHandler() != null - ? tab.getTabRedirectHandler().getInitialIntent() : null; + Intent intent = mTab.getTabRedirectHandler() != null + ? mTab.getTabRedirectHandler().getInitialIntent() + : null; // TODO(mariakhomenko): consider also handling NDEF_DISCOVER action redirects. if (isIncomingRedirect && intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) { // Set the URL the redirect was resolved to for checking the existence of the @@ -644,9 +646,9 @@ LaunchIntentDispatcher.isCustomTabIntent(resolvedIntent), true); } else if (!isIncomingRedirect) { // Check if the navigation is coming from SERP and skip instant app handling. - if (isSerpReferrer(tab)) return false; + if (isSerpReferrer()) return false; return handler.handleNavigation(getAvailableContext(), url, - TextUtils.isEmpty(referrerUrl) ? null : Uri.parse(referrerUrl), tab); + TextUtils.isEmpty(referrerUrl) ? null : Uri.parse(referrerUrl), mTab); } return false; } @@ -669,4 +671,11 @@ proxyIntent.putExtra(AuthenticatedProxyActivity.AUTHENTICATED_INTENT_EXTRA, intent); getAvailableContext().startActivity(proxyIntent); } + + /** + * @return Whether or not we have a valid {@link Tab} available. + */ + private boolean hasValidTab() { + return mTab != null && !mIsTabDestroyed; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java index 534e2b9..23bf672c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -230,9 +230,8 @@ // to Chrome. This check should happen for reloads, navigations, etc..., which is why // it occurs before the subsequent blocks. if (params.getUrl().startsWith(UrlConstants.FILE_URL_SHORT_PREFIX) - && mDelegate.shouldRequestFileAccess(params.getUrl(), params.getTab())) { - mDelegate.startFileIntent( - intent, params.getReferrerUrl(), params.getTab(), + && mDelegate.shouldRequestFileAccess(params.getUrl())) { + mDelegate.startFileIntent(intent, params.getReferrerUrl(), params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent()); if (DEBUG) Log.i(TAG, "OVERRIDE_WITH_ASYNC_ACTION: Requesting filesystem access"); return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION; @@ -259,12 +258,10 @@ if (handler.shouldStayInChrome(isExternalProtocol) || handler.shouldNotOverrideUrlLoading()) { // http://crbug.com/659301: Handle redirects to Instant Apps out of Custom Tabs. - if (handler.isFromCustomTabIntent() - && !isExternalProtocol - && incomingIntentRedirect + if (handler.isFromCustomTabIntent() && !isExternalProtocol && incomingIntentRedirect && !handler.shouldNavigationTypeStayInChrome() - && mDelegate.maybeLaunchInstantApp(params.getTab(), params.getUrl(), - params.getReferrerUrl(), true)) { + && mDelegate.maybeLaunchInstantApp( + params.getUrl(), params.getReferrerUrl(), true)) { if (DEBUG) { Log.i(TAG, "OVERRIDE_WITH_EXTERNAL_INTENT: Launching redirect to " + "an instant app"); @@ -439,13 +436,14 @@ // startActivityIfNeeded or startActivity. if (!isExternalProtocol) { if (mDelegate.countSpecializedHandlers(resolvingInfos) == 0) { - if (incomingIntentRedirect && mDelegate.maybeLaunchInstantApp( - params.getTab(), params.getUrl(), params.getReferrerUrl(), true)) { + if (incomingIntentRedirect + && mDelegate.maybeLaunchInstantApp( + params.getUrl(), params.getReferrerUrl(), true)) { if (DEBUG) Log.i(TAG, "OVERRIDE_WITH_EXTERNAL_INTENT: Instant Apps redirect"); return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; } else if (linkNotFromIntent && !params.isIncognito() - && mDelegate.maybeLaunchInstantApp(params.getTab(), params.getUrl(), - params.getReferrerUrl(), false)) { + && mDelegate.maybeLaunchInstantApp( + params.getUrl(), params.getReferrerUrl(), false)) { if (DEBUG) Log.i(TAG, "OVERRIDE_WITH_EXTERNAL_INTENT: Instant Apps link"); return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; } @@ -511,8 +509,7 @@ boolean isDirectInstantAppsIntent = isExternalProtocol && InstantAppsHandler.isIntentToInstantApp(intent); - boolean shouldProxyForInstantApps = isDirectInstantAppsIntent - && mDelegate.isSerpReferrer(params.getTab()); + boolean shouldProxyForInstantApps = isDirectInstantAppsIntent && mDelegate.isSerpReferrer(); if (shouldProxyForInstantApps) { RecordHistogram.recordEnumeratedHistogram("Android.InstantApps.DirectInstantAppsIntent", AIA_INTENT_SERP, AIA_INTENT_BOUNDARY); @@ -674,8 +671,7 @@ params.getRedirectHandler().setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); } if (DEBUG) Log.i(TAG, "OVERRIDE: clobberCurrentTab called"); - return mDelegate.clobberCurrentTab( - browserFallbackUrl, params.getReferrerUrl(), params.getTab()); + return mDelegate.clobberCurrentTab(browserFallbackUrl, params.getReferrerUrl()); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java index 57a0029..41a77df 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
@@ -148,10 +148,10 @@ private ContextMenuManager mContextMenuManager; /** - * Lateral offset to add to the top and bottom of the search box bounds. May be 0 if no offset - * should be applied. + * Lateral inset to add to the top and bottom of the search box bounds. May be 0 if no inset + * should be applied. See {@link Rect#inset(int, int)}. */ - private int mSearchBoxBoundsLateralOffset; + private int mSearchBoxBoundsLateralInset; /** * Manages the view interaction with the rest of the system. @@ -290,8 +290,8 @@ if (!DeviceFormFactor.isTablet()) { mSearchBoxView.getLayoutParams().height = getResources().getDimensionPixelSize( R.dimen.modern_toolbar_background_size); - mSearchBoxBoundsLateralOffset = getResources().getDimensionPixelSize( - R.dimen.ntp_search_box_bounds_lateral_offset_modern); + mSearchBoxBoundsLateralInset = getResources().getDimensionPixelSize( + R.dimen.ntp_search_box_bounds_lateral_inset_modern); } else { mSearchBoxView.getLayoutParams().height = getResources().getDimensionPixelSize(R.dimen.toolbar_height_no_shadow); @@ -774,7 +774,7 @@ + mNewTabPageLayout.getPaddingTop(); int target = Math.max(basePosition, mSearchBoxView.getBottom() - mSearchBoxView.getPaddingBottom() - + mSearchBoxBoundsLateralOffset); + - mSearchBoxBoundsLateralInset); mNewTabPageLayout.setTranslationY(percent * (basePosition - target)); } @@ -811,10 +811,9 @@ int searchBoxX = (int) mSearchBoxView.getX(); int searchBoxY = (int) mSearchBoxView.getY(); bounds.set(searchBoxX + mSearchBoxView.getPaddingLeft(), - searchBoxY + mSearchBoxView.getPaddingTop() - mSearchBoxBoundsLateralOffset, + searchBoxY + mSearchBoxView.getPaddingTop(), searchBoxX + mSearchBoxView.getWidth() - mSearchBoxView.getPaddingRight(), - searchBoxY + mSearchBoxView.getHeight() - mSearchBoxView.getPaddingBottom() - + mSearchBoxBoundsLateralOffset); + searchBoxY + mSearchBoxView.getHeight() - mSearchBoxView.getPaddingBottom()); translation.set(0, 0); @@ -833,6 +832,10 @@ translation.offset((int) view.getX(), (int) view.getY()); } bounds.offset(translation.x, translation.y); + + if (translation.y != Integer.MIN_VALUE) { + bounds.inset(0, mSearchBoxBoundsLateralInset); + } } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/AndroidUiGestureTarget.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/AndroidUiGestureTarget.java index cf314d13..8cced29 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/AndroidUiGestureTarget.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/AndroidUiGestureTarget.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.vr_shell; +import android.view.MotionEvent; import android.view.View; import org.chromium.base.annotations.CalledByNative; @@ -31,7 +32,8 @@ @CalledByNative private void setPointer(int x, int y) { - mMotionEventSynthesizer.setPointer(0 /* index */, x, y, 0 /* id */); + mMotionEventSynthesizer.setPointer( + 0 /* index */, x, y, 0 /* id */, MotionEvent.TOOL_TYPE_STYLUS); } @CalledByNative
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java index e235112..78a666a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
@@ -844,7 +844,9 @@ if (mBrandColor != null && mWebappInfo.displayMode() != WebDisplayMode.FULLSCREEN) { taskDescriptionColor = mBrandColor; statusBarColor = ColorUtils.getDarkenedColorForStatusBar(mBrandColor); - getToolbarManager().updatePrimaryColor(mBrandColor, false); + if (getToolbarManager() != null) { + getToolbarManager().updatePrimaryColor(mBrandColor, false); + } } ApiCompatibilityUtils.setTaskDescription(this, title, icon,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java index d0e2070..0c849bb 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java
@@ -1561,13 +1561,12 @@ } @Override - public boolean shouldRequestFileAccess(String url, Tab tab) { + public boolean shouldRequestFileAccess(String url) { return shouldRequestFileAccess; } @Override - public void startFileIntent(Intent intent, String referrerUrl, Tab tab, - boolean needsToCloseTab) { + public void startFileIntent(Intent intent, String referrerUrl, boolean needsToCloseTab) { startFileIntentCalled = true; } @@ -1577,8 +1576,7 @@ } @Override - public OverrideUrlLoadingResult clobberCurrentTab( - String url, String referrerUrl, Tab tab) { + public OverrideUrlLoadingResult clobberCurrentTab(String url, String referrerUrl) { mNewUrlAfterClobbering = url; mReferrerUrlForClobbering = referrerUrl; return OverrideUrlLoadingResult.OVERRIDE_WITH_CLOBBERING_TAB; @@ -1608,13 +1606,13 @@ } @Override - public boolean maybeLaunchInstantApp(Tab tab, String url, String referrerUrl, - boolean isIncomingRedirect) { + public boolean maybeLaunchInstantApp( + String url, String referrerUrl, boolean isIncomingRedirect) { return mCanHandleWithInstantApp; } @Override - public boolean isSerpReferrer(Tab tab) { + public boolean isSerpReferrer() { return mIsSerpReferrer; }
diff --git a/chrome/android/monochrome/BUILD.gn b/chrome/android/monochrome/BUILD.gn index 2553c5d..940f5d30 100644 --- a/chrome/android/monochrome/BUILD.gn +++ b/chrome/android/monochrome/BUILD.gn
@@ -14,3 +14,21 @@ "//components/about_ui/android:aboutui_java", ] } + +group("monochrome_apk_checker") { + testonly = true + data_deps = [ + "//chrome/android:chrome_modern_public_apk", + "//chrome/android:monochrome_public_apk", + ] + if (public_android_sdk) { + # system_webview_apk only defined for public sdk builds, so this dependency + # must be guarded. + data_deps += [ "//android_webview:system_webview_apk" ] + } + + data = [ + "./scripts/monochrome_apk_checker.py", + "./scripts/monochrome_apk_checker_wrapper.py", + ] +}
diff --git a/chrome/android/monochrome/scripts/monochrome_apk_checker.py b/chrome/android/monochrome/scripts/monochrome_apk_checker.py new file mode 100755 index 0000000..f90dbe4 --- /dev/null +++ b/chrome/android/monochrome/scripts/monochrome_apk_checker.py
@@ -0,0 +1,239 @@ +#!/usr/bin/env python2.7 +# +# 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 argparse +import re +import os +import posixpath +import StringIO +import sys +import subprocess + +from contextlib import closing + + +def BuildFileMatchRegex(*file_matchers): + return re.compile('^' + '|'.join(file_matchers) + '$') + + +# Chrome specific files which are not in Monochrome.apk +CHROME_SPECIFIC = BuildFileMatchRegex( + r'lib/.*/libchrome\.so', + r'lib/.*/libchrome\.\d{4}\.\d{2,3}\.so', # libchrome placeholders + r'lib/.*/libchromium_android_linker\.so', + r'lib/.*/libchromeview\.so', # placeholder library + r'lib/.*/crazy\.libchrome\.so', + r'lib/.*/crazy\.libchrome\.align', + r'lib/.*/gdbserver', + # Monochrome doesn't have any res directories whose api number is less + # than v24. + r'res/.*-v1\d/.*\.xml', + r'res/.*-v2[0-3]/.*\.xml', + r'META-INF/.*', + r'assets/metaresources.arsc', + r'assets/AndroidManifest.xml') + +# WebView specific files which are not in Monochrome.apk +WEBVIEW_SPECIFIC = BuildFileMatchRegex( + r'lib/.*/libwebviewchromium\.so', + r'assets/webview_licenses.notice', + r'res/.*/icon_webview.webp', + r'META-INF/.*', + # Monochrome doesn't have any res directories + # whose api level is less than v24. + r'res/.*-v1\d/.*\.xml', + r'res/.*-v2[0-3]/.*\.xml', + r'lib/.*/gdbserver') + +# The files in Chrome are not same as those in Monochrome +CHROME_CHANGES = BuildFileMatchRegex( + r'AndroidManifest\.xml', + r'resources\.arsc', + r'classes\.dex', + r'res/.*\.xml', # Resource id isn't same + # All pak files except chrome_100_percent.pak are different + r'assets/resources\.pak', + r'assets/am\.pak', + r'assets/ar\.pak', + r'assets/bg\.pak', + r'assets/ca\.pak', + r'assets/cs\.pak', + r'assets/da\.pak', + r'assets/de\.pak', + r'assets/el\.pak', + r'assets/en-GB\.pak', + r'assets/en-US\.pak', + r'assets/es-419\.pak', + r'assets/es\.pak', + r'assets/fa\.pak', + r'assets/fi\.pak', + r'assets/fil\.pak', + r'assets/fr\.pak', + r'assets/he\.pak', + r'assets/hi\.pak', + r'assets/hr\.pak', + r'assets/hu\.pak', + r'assets/id\.pak', + r'assets/it\.pak', + r'assets/ja\.pak', + r'assets/ko\.pak', + r'assets/lt\.pak', + r'assets/lv\.pak', + r'assets/nb\.pak', + r'assets/nl\.pak', + r'assets/pl\.pak', + r'assets/pt-BR\.pak', + r'assets/pt-PT\.pak', + r'assets/ro\.pak', + r'assets/ru\.pak', + r'assets/sk\.pak', + r'assets/sl\.pak', + r'assets/sr\.pak', + r'assets/sv\.pak', + r'assets/sw\.pak', + r'assets/th\.pak', + r'assets/tr\.pak', + r'assets/uk\.pak', + r'assets/vi\.pak', + r'assets/zh-CN\.pak', + r'assets/zh-TW\.pak') + +# The files in WebView are not same as those in Monochrome +WEBVIEW_CHANGES = BuildFileMatchRegex( + r'AndroidManifest\.xml', + r'resources\.arsc', + r'classes\.dex', + r'res/.*\.xml', # Resource id isn't same + r'assets/.*\.pak') # All pak files are not same as Monochrome + +# Parse the output of unzip -lv, like +# 2384 Defl:N 807 66% 2001-01-01 00:00 2f2d9fce res/xml/privacy.xml +ZIP_ENTRY = re.compile( + "^ *[0-9]+ +\S+ +[0-9]+ +(?P<cmpr>[0-9]{1,2})% +\S+ +\S+ +" + "(?P<crc>[0-9a-fA-F]+) +(?P<name>\S+)" + ) + +class APKEntry: + def __init__(self, filename, crc, uncompressed): + self.filename = filename + self.CRC = crc + self.uncompressed = uncompressed + +def DumpAPK(apk): + args = ['unzip', '-lv'] + args.append(apk) + content = subprocess.check_output(args) + apk_entries = [] + with closing(StringIO.StringIO(content)) as f: + for line in f: + match = ZIP_ENTRY.match(line) + if match: + apk_entries.append(APKEntry(match.group('name'), + match.group('crc'), + match.group('cmpr') == 0)) + return apk_entries + +def VerifySameFile(monochrome_dict, apk, changes): + """ Verify files from apk are same as those in monochrome except files + in changes + """ + diff = [] + for a in apk: + # File may not exists due to exists_in_some_form(). + m = monochrome_dict.get(a.filename) + if m and m.CRC != a.CRC and not changes.match(m.filename): + diff.append(a.filename) + if len(diff): + raise Exception("The following files are not same as Monochrome:\n %s" % + '\n'.join(diff)) + + +def VerifyUncompressed(monochrome, apk): + """ Verify files not being compressed in apk are also uncompressed in + Monochrome APK + """ + uncompressed = [i.filename for i in apk if i.uncompressed ] + monochrome_uncompressed = [i.filename for i in monochrome if i.uncompressed] + compressed = [u for u in uncompressed if u not in monochrome_uncompressed] + if len(compressed): + raise Exception("The following files are compressed in Monochrome:\n %s" % + '\n'.join(compressed)) + +def SuperSetOf(monochrome, apk): + """ Verify Monochrome is super set of apk. + """ + def exists_in_some_form(f): + if f in monochrome: + return True + if not f.startswith('res/'): + return False + name = '/' + posixpath.basename(f) + # Some resources will exists in apk but not in monochrome due to the + # difference in minSdkVersion. https://crbug.com/794438 + # E.g.: + # apk could have: res/drawable/foo.png, res/drawable-v23/foo.png + # monochrome (minSdkVersion=24) would need only: res/drawable-v23/foo.png + return any(x.endswith(name) for x in monochrome) + + missing_files = [f for f in apk if not exists_in_some_form(f)] + if len(missing_files): + raise Exception("The following files are missing in Monochrome:\n %s" % + '\n'.join(missing_files)) + + +def RemoveSpecific(apk_entries, specific): + return [i for i in apk_entries + if not specific.search(i.filename) ] + + +def ParseArgs(args): + """Parses command line options. + + Returns: + An Namespace from argparse.parse_args() + """ + parser = argparse.ArgumentParser(prog='monochrome_apk_checker') + + parser.add_argument('--monochrome-apk', + required=True, + help='The monochrome APK path') + parser.add_argument('--chrome-apk', + required=True, + help='The chrome APK path.') + parser.add_argument('--system-webview-apk', + required=True, + help='The system webview APK path.') + return parser.parse_args(args) + + +def main(): + options = ParseArgs(sys.argv[1:]) + monochrome = DumpAPK(options.monochrome_apk) + monochrome_files = [f.filename for f in monochrome] + monochrome_dict = dict([(i.filename, i) for i in monochrome]) + + chrome = RemoveSpecific(DumpAPK(options.chrome_apk), + CHROME_SPECIFIC) + if len(chrome) == 0: + raise Exception("Chrome should have common files with Monochrome") + + webview = RemoveSpecific(DumpAPK(options.system_webview_apk), + WEBVIEW_SPECIFIC) + if len(webview) == 0: + raise Exception("WebView should have common files with Monochrome") + + def check_apk(apk): + apk_files = [f.filename for f in apk] + SuperSetOf(monochrome_files, apk_files) + VerifyUncompressed(monochrome, apk) + VerifySameFile(monochrome_dict, chrome, CHROME_CHANGES) + VerifySameFile(monochrome_dict, webview, WEBVIEW_CHANGES) + + check_apk(chrome) + check_apk(webview) + +if __name__ == '__main__': + sys.exit(main())
diff --git a/chrome/android/monochrome/scripts/monochrome_apk_checker_wrapper.py b/chrome/android/monochrome/scripts/monochrome_apk_checker_wrapper.py new file mode 100755 index 0000000..eee7d2c --- /dev/null +++ b/chrome/android/monochrome/scripts/monochrome_apk_checker_wrapper.py
@@ -0,0 +1,57 @@ +#!/usr/bin/env python2.7 +# +# 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. + +# This is just a wrapper script around monochrome_apk_checker.py that +# understands and uses the isolated-script arguments + +import argparse +import json +import sys +import subprocess +import time + +def main(): + parser = argparse.ArgumentParser(prog='monochrome_apk_checker_wrapper') + + parser.add_argument('--script', + required=True, + help='The path to the monochrome_apk_checker.py script') + parser.add_argument('--isolated-script-test-output', + required=True) + # ignored, but required to satisfy the isolated_script interface. + parser.add_argument('--isolated-script-test-perf-output') + args, extra = parser.parse_known_args(sys.argv[1:]) + + cmd = [args.script] + extra + + start_time = time.time() + ret = subprocess.call(cmd) + success = ret == 0 + + # Schema is at //docs/testing/json_test_results_format.md + with open(args.isolated_script_test_output, 'w') as fp: + json.dump({ + 'version': 3, + 'interrupted': False, + 'path_delimiter': '/', + 'seconds_since_epoch': start_time, + 'num_failures_by_type': { + 'PASS': int(success), + 'FAIL': int(not success), + }, + 'tests': { + 'monochrome_apk_checker': { + 'expected': 'PASS', + 'actual': 'PASS' if success else 'FAIL', + } + } + }, fp) + + return ret + + +if __name__ == '__main__': + sys.exit(main())
diff --git a/chrome/app/BUILD.gn b/chrome/app/BUILD.gn index b431e696..2df48fa 100644 --- a/chrome/app/BUILD.gn +++ b/chrome/app/BUILD.gn
@@ -365,10 +365,7 @@ } if (is_chromeos) { - deps += [ - "//chrome/browser/chromeos", - "//components/metrics/leak_detector:leak_detector", - ] + deps += [ "//chrome/browser/chromeos" ] } if (enable_plugins && enable_nacl) {
diff --git a/chrome/app/DEPS b/chrome/app/DEPS index b517fdd..13633b3 100644 --- a/chrome/app/DEPS +++ b/chrome/app/DEPS
@@ -17,7 +17,6 @@ "+components/component_updater", "+components/content_settings/core/common/content_settings_pattern.h", "+components/crash", - "+components/metrics/leak_detector", "+components/nacl/common", "+components/nacl/renderer/plugin/ppapi_entrypoints.h", "+components/nacl/zygote",
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc index 189bc4c..39ea4c2 100644 --- a/chrome/app/chrome_main_delegate.cc +++ b/chrome/app/chrome_main_delegate.cc
@@ -109,7 +109,6 @@ #include "chromeos/chromeos_paths.h" #include "chromeos/chromeos_switches.h" #include "chromeos/hugepage_text/hugepage_text.h" -#include "components/metrics/leak_detector/leak_detector.h" #endif #if defined(OS_ANDROID) @@ -694,15 +693,6 @@ // partially-initialized, which the TLS object is supposed to protect again. profiling::InitTLSSlot(); -#if defined (OS_CHROMEOS) - // The TLS slot used by metrics::LeakDetector needs to be initialized early to - // ensure that it gets assigned a low slow number. If it gets initialized too - // late, the glibc TLS system will require a malloc call in order to allocate - // storage for a higher slot number. Normally that's not a problem, but in - // LeakDetector it will result in recursive alloc hook function calls. - metrics::LeakDetector::InitTLSSlot(); -#endif - return false; }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 4eef4289..15dc00ca 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -6218,10 +6218,10 @@ <message name="IDS_LOAD_STATE_RESOLVING_PROXY_FOR_URL"> Resolving proxy... </message> - <message name="IDS_LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT"> + <message name="IDS_LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE"> Resolving host in proxy script... </message> - <message name="IDS_LOAD_STATE_DOWNLOADING_PROXY_SCRIPT"> + <message name="IDS_LOAD_STATE_DOWNLOADING_PAC_FILE"> Downloading proxy script... </message> <message name="IDS_LOAD_STATE_RESOLVING_HOST"> @@ -7765,6 +7765,9 @@ <message name="IDS_SIGNIN_ERROR_EMAIL_TITLE" desc="Title of the signin error tab modal dialog when username can be retrieved to display."> Can't sign in to <ph name="USERNAME">$1<ex>Jane.Doe@gmail.com</ex></ph> </message> + <message name="IDS_SIGNIN_ERROR_DICE_EMAIL_TITLE" desc="Title of the signin error tab modal dialog when username can be retrieved to display and when Desktop Identity Consistency is enabled."> + Can't sync to <ph name="USERNAME">$1<ex>Jane.Doe@gmail.com</ex></ph> + </message> <message name="IDS_SIGNIN_ERROR_CLOSE_BUTTON_LABEL" desc="Label of the Close button in the signin error dialog."> Close </message>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 19f277d..8f0b8b20 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1438,6 +1438,9 @@ <message name="IDS_SETTINGS_INTERNET_NETWORK_PROXY_WPAD" desc="Settings > Internet > Network details: Web Proxy Auto Discovery (WPAD) label."> Web Proxy Auto Discovery URL: </message> + <message name="IDS_SETTINGS_INTERNET_NETWORK_PROXY_WPAD_NONE" desc="Settings > Internet > Network details: Value for Web Proxy Auto Discovery when no URL is provided."> + Not provided + </message> <message name="IDS_SETTINGS_INTERNET_MOBILE_SEARCH" desc="Settings > Internet > Message in Mobile section when searching for mobile networks."> Searching for mobile networks </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index ba7bc65f..42077f1c 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2817,10 +2817,6 @@ "memory/memory_kills_monitor.h", "metrics/chromeos_metrics_provider.cc", "metrics/chromeos_metrics_provider.h", - "metrics/leak_detector/leak_detector_controller.cc", - "metrics/leak_detector/leak_detector_controller.h", - "metrics/leak_detector/leak_detector_remote_controller.cc", - "metrics/leak_detector/leak_detector_remote_controller.h", "metrics/perf/cpu_identity.cc", "metrics/perf/cpu_identity.h", "metrics/perf/perf_output.cc", @@ -2865,10 +2861,6 @@ "//services/ui/public/interfaces", "//ui/ozone", ] - public_deps += [ - "//components/metrics/leak_detector:interfaces", - "//components/metrics/leak_detector:leak_detector", - ] allow_circular_includes_from += [ "//chrome/browser/chromeos" ] if (enable_native_notifications) {
diff --git a/chrome/browser/android/shortcut_info.cc b/chrome/browser/android/shortcut_info.cc index d5c0837..8ad91bc 100644 --- a/chrome/browser/android/shortcut_info.cc +++ b/chrome/browser/android/shortcut_info.cc
@@ -74,7 +74,7 @@ icon_urls.push_back(icon.src.spec()); if (manifest.share_target) - share_target_url_template = manifest.share_target->url_template.string(); + share_target_url_template = manifest.share_target->url_template; } void ShortcutInfo::UpdateSource(const Source new_source) {
diff --git a/chrome/browser/android/shortcut_info.h b/chrome/browser/android/shortcut_info.h index bd213d9..afee35da 100644 --- a/chrome/browser/android/shortcut_info.h +++ b/chrome/browser/android/shortcut_info.h
@@ -94,7 +94,7 @@ GURL best_primary_icon_url; GURL best_badge_icon_url; std::vector<std::string> icon_urls; - base::string16 share_target_url_template; + GURL share_target_url_template; }; #endif // CHROME_BROWSER_ANDROID_SHORTCUT_INFO_H_
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc index 8de49dab..c0840ff6 100644 --- a/chrome/browser/android/webapk/webapk_installer.cc +++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -219,10 +219,10 @@ std::string* scope = web_app_manifest->add_scopes(); scope->assign(GetScope(shortcut_info).spec()); - if (!shortcut_info.share_target_url_template.empty()) { + if (!shortcut_info.share_target_url_template.is_empty()) { webapk::ShareTarget* share_target = web_app_manifest->add_share_targets(); share_target->set_url_template( - base::UTF16ToUTF8(shortcut_info.share_target_url_template)); + shortcut_info.share_target_url_template.spec()); } if (shortcut_info.best_primary_icon_url.is_empty()) {
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 18f40cd..fcc1ce4 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -289,7 +289,6 @@ #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/system/input_device_settings.h" #include "chrome/browser/mash_service_registry.h" -#include "chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h" #include "chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h" #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_finder.h" @@ -3112,11 +3111,6 @@ } #endif -#if defined(OS_CHROMEOS) - registry->AddInterface<metrics::mojom::LeakDetector>( - base::Bind(&metrics::LeakDetectorRemoteController::Create), - ui_task_runner); -#endif for (auto* ep : extra_parts_) { ep->ExposeInterfacesToRenderer(registry, associated_registry, render_process_host);
diff --git a/chrome/browser/chrome_content_browser_manifest_overlay.json b/chrome/browser/chrome_content_browser_manifest_overlay.json index b016c054..fea6c4c4 100644 --- a/chrome/browser/chrome_content_browser_manifest_overlay.json +++ b/chrome/browser/chrome_content_browser_manifest_overlay.json
@@ -11,7 +11,6 @@ "chrome::mojom::NetBenchmarking", "extensions::StashService", "metrics::mojom::CallStackProfileCollector", - "metrics::mojom::LeakDetector", "mojom::ModuleEventSink", "rappor::mojom::RapporRecorder", "safe_browsing::mojom::SafeBrowsing",
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index bf0b959..38dfb91ed 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -99,7 +99,6 @@ "//components/language/core/common", "//components/login", "//components/metrics:serialization", - "//components/metrics/leak_detector", "//components/onc", "//components/ownership", "//components/pairing", @@ -1781,7 +1780,6 @@ "../extensions/updater/local_extension_cache_unittest.cc", "../memory/memory_kills_monitor_unittest.cc", "../metrics/chromeos_metrics_provider_unittest.cc", - "../metrics/leak_detector/leak_detector_controller_unittest.cc", "../metrics/perf/cpu_identity_unittest.cc", "../metrics/perf/random_selector_unittest.cc", "../policy/default_geolocation_policy_handler_unittest.cc",
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc index b802c4f..bde5181f 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
@@ -91,6 +91,7 @@ std::unique_ptr<EasyUnlockNotificationController> notification_controller) : EasyUnlockService(profile), turn_off_flow_status_(EasyUnlockService::IDLE), + scoped_crypt_auth_device_manager_observer_(this), will_unlock_using_easy_unlock_(false), lock_screen_last_shown_timestamp_(base::TimeTicks::Now()), deferring_device_load_(false), @@ -490,7 +491,7 @@ GetAccountId()); } - GetCryptAuthDeviceManager()->AddObserver(this); + scoped_crypt_auth_device_manager_observer_.Add(GetCryptAuthDeviceManager()); LoadRemoteDevices(); StartPromotionManager(); } @@ -507,8 +508,7 @@ turn_off_flow_status_ = EasyUnlockService::IDLE; proximity_auth::ScreenlockBridge::Get()->RemoveObserver(this); - if (GetCryptAuthDeviceManager()) - GetCryptAuthDeviceManager()->RemoveObserver(this); + scoped_crypt_auth_device_manager_observer_.RemoveAll(); } bool EasyUnlockServiceRegular::IsAllowedInternal() const {
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.h index 9cd8f2f..5acd47d 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.h
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/macros.h" +#include "base/scoped_observer.h" #include "base/time/time.h" #include "build/build_config.h" #include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h" @@ -158,6 +159,8 @@ TurnOffFlowStatus turn_off_flow_status_; std::unique_ptr<cryptauth::CryptAuthClient> cryptauth_client_; + ScopedObserver<cryptauth::CryptAuthDeviceManager, EasyUnlockServiceRegular> + scoped_crypt_auth_device_manager_observer_; AutoPairingResultCallback auto_pairing_callback_;
diff --git a/chrome/browser/download/download_ui_controller.cc b/chrome/browser/download/download_ui_controller.cc index 15279d7..28d98a2 100644 --- a/chrome/browser/download/download_ui_controller.cc +++ b/chrome/browser/download/download_ui_controller.cc
@@ -143,7 +143,8 @@ content::WebContents* web_contents = content::DownloadItemUtils::GetWebContents(item); if (web_contents && (item->IsSavePackageDownload() || - (web_contents->GetURL() != item->GetOriginalUrl() && + (!web_contents->GetURL().is_empty() && + web_contents->GetURL() != item->GetOriginalUrl() && web_contents->GetURL() != item->GetURL()))) { auto* security_state_tab_helper = SecurityStateTabHelper::FromWebContents(web_contents);
diff --git a/chrome/browser/extensions/policy_handlers.cc b/chrome/browser/extensions/policy_handlers.cc index 5affb86..6370023 100644 --- a/chrome/browser/extensions/policy_handlers.cc +++ b/chrome/browser/extensions/policy_handlers.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/logging.h" +#include "build/build_config.h" #include "chrome/browser/extensions/extension_management_constants.h" #include "chrome/browser/extensions/external_policy_loader.h" #include "components/crx_file/id_util.h" @@ -19,8 +20,13 @@ #include "components/strings/grit/components_strings.h" #include "extensions/browser/pref_names.h" #include "extensions/common/extension.h" +#include "extensions/common/extension_urls.h" #include "url/gurl.h" +#if defined(OS_WIN) +#include "base/win/win_util.h" +#endif + namespace extensions { // ExtensionListPolicyHandler implementation ----------------------------------- @@ -263,8 +269,23 @@ IDS_POLICY_NOT_SPECIFIED_ERROR); return false; } - // Verifies that update URL is valid. - if (!GURL(update_url).is_valid()) { + if (GURL(update_url).is_valid()) { +// Unless enterprise managed only extensions from the Chrome Webstore +// can be force installed. +#if defined(OS_WIN) + // We can't use IsWebstoreUpdateUrl() here since the ExtensionClient + // isn't set this early during startup. + if (!base::win::IsEnterpriseManaged() && + !base::LowerCaseEqualsASCII( + update_url, extension_urls::kChromeWebstoreUpdateURL)) { + errors->AddError(policy_name(), it.key(), + IDS_POLICY_OFF_CWS_URL_ERROR, + extension_urls::kChromeWebstoreUpdateURL); + return false; + } +#endif + } else { + // Warns about an invalid update URL. errors->AddError( policy_name(), IDS_POLICY_INVALID_UPDATE_URL_ERROR, it.key()); return false;
diff --git a/chrome/browser/extensions/policy_handlers_unittest.cc b/chrome/browser/extensions/policy_handlers_unittest.cc index aaf3807..a613dd0 100644 --- a/chrome/browser/extensions/policy_handlers_unittest.cc +++ b/chrome/browser/extensions/policy_handlers_unittest.cc
@@ -6,6 +6,7 @@ #include "base/json/json_reader.h" #include "base/strings/stringprintf.h" +#include "build/build_config.h" #include "chrome/browser/extensions/external_policy_loader.h" #include "chrome/browser/extensions/policy_handlers.h" #include "components/policy/core/browser/policy_error_map.h" @@ -17,6 +18,10 @@ #include "extensions/browser/pref_names.h" #include "testing/gtest/include/gtest/gtest.h" +#if defined(OS_WIN) +#include "base/win/win_util.h" +#endif + namespace extensions { const char kTestPref[] = "unit_test.test_pref"; @@ -345,6 +350,11 @@ } TEST(ExtensionSettingsPolicyHandlerTest, ApplyPolicySettings) { +// Mark as enterprise managed. +#if defined(OS_WIN) + base::win::SetDomainStateForTesting(true); +#endif + std::string error; std::unique_ptr<base::Value> policy_value = base::JSONReader::ReadAndReturnError( @@ -370,4 +380,34 @@ EXPECT_EQ(*policy_value, *value); } +// Only enterprise managed machines can auto install extensions from a location +// other than the webstore https://crbug.com/809004. +#if defined(OS_WIN) +TEST(ExtensionSettingsPolicyHandlerTest, NonManagedOffWebstoreExtension) { + // Mark as not enterprise managed. + base::win::SetDomainStateForTesting(false); + + std::string error; + std::unique_ptr<base::Value> policy_value = + base::JSONReader::ReadAndReturnError( + kTestManagementPolicy2, + base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, nullptr, &error); + ASSERT_TRUE(policy_value.get()) << error; + + policy::Schema chrome_schema = + policy::Schema::Wrap(policy::GetChromeSchemaData()); + policy::PolicyMap policy_map; + policy::PolicyErrorMap errors; + PrefValueMap prefs; + ExtensionSettingsPolicyHandler handler(chrome_schema); + + policy_map.Set(policy::key::kExtensionSettings, + policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, + policy::POLICY_SOURCE_CLOUD, policy_value->CreateDeepCopy(), + nullptr); + EXPECT_FALSE(handler.CheckPolicySettings(policy_map, &errors)); + EXPECT_FALSE(errors.empty()); +} +#endif + } // namespace extensions
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc index fddd71b8..f4cb6af 100644 --- a/chrome/browser/io_thread.cc +++ b/chrome/browser/io_thread.cc
@@ -767,7 +767,7 @@ network::URLRequestContextBuilderMojo* builder) const { #if defined(OS_CHROMEOS) builder->SetDhcpFetcherFactory( - std::make_unique<chromeos::DhcpProxyScriptFetcherFactoryChromeos>()); + std::make_unique<chromeos::DhcpPacFileFetcherFactoryChromeos>()); #endif builder->set_pac_quick_check_enabled(WpadQuickCheckEnabled());
diff --git a/chrome/browser/lifetime/browser_close_manager_browsertest.cc b/chrome/browser/lifetime/browser_close_manager_browsertest.cc index 6d8d525..2b7cc0aa 100644 --- a/chrome/browser/lifetime/browser_close_manager_browsertest.cc +++ b/chrome/browser/lifetime/browser_close_manager_browsertest.cc
@@ -582,8 +582,16 @@ // are treated the same as the user accepting the close, but do not close the // tab early. // Regression for crbug.com/365052 caused CHECK in tabstrip. +// Flaky on Mac and Linux: https://crbug.com/819541 +#if defined(OS_LINUX) || defined(OS_MACOSX) +#define MAYBE_TestBeforeUnloadMultipleSlowWindows \ + DISABLED_TestBeforeUnloadMultipleSlowWindows +#else +#define MAYBE_TestBeforeUnloadMultipleSlowWindows \ + TestBeforeUnloadMultipleSlowWindows +#endif IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, - TestBeforeUnloadMultipleSlowWindows) { + MAYBE_TestBeforeUnloadMultipleSlowWindows) { const int kBrowserCount = 5; const int kResposiveBrowserIndex = 2; // Create multiple browsers with all tabs except one responding after
diff --git a/chrome/browser/metrics/chromeos_metrics_provider.cc b/chrome/browser/metrics/chromeos_metrics_provider.cc index 00c38cb1..55a9481 100644 --- a/chrome/browser/metrics/chromeos_metrics_provider.cc +++ b/chrome/browser/metrics/chromeos_metrics_provider.cc
@@ -20,7 +20,6 @@ #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chromeos/system/statistics_provider.h" -#include "components/metrics/leak_detector/leak_detector.h" #include "components/metrics/metrics_service.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" @@ -146,14 +145,6 @@ void ChromeOSMetricsProvider::Init() { perf_provider_.Init(); - -#if defined(ARCH_CPU_X86_64) - // Currently, the runtime memory leak detector is only supported on x86_64 - // systems. - if (base::FeatureList::IsEnabled(features::kRuntimeMemoryLeakDetector)) { - leak_detector_controller_.reset(new metrics::LeakDetectorController); - } -#endif } void ChromeOSMetricsProvider::AsyncInit(const base::Closure& done_callback) { @@ -252,14 +243,6 @@ } } - if (leak_detector_controller_) { - std::vector<metrics::MemoryLeakReportProto> reports; - leak_detector_controller_->GetLeakReports(&reports); - for (auto& report : reports) { - uma_proto->add_memory_leak_report()->Swap(&report); - } - } - RecordEnrollmentStatus(); RecordArcState(); }
diff --git a/chrome/browser/metrics/chromeos_metrics_provider.h b/chrome/browser/metrics/chromeos_metrics_provider.h index a1dce11..2550b32 100644 --- a/chrome/browser/metrics/chromeos_metrics_provider.h +++ b/chrome/browser/metrics/chromeos_metrics_provider.h
@@ -9,7 +9,6 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" -#include "chrome/browser/metrics/leak_detector/leak_detector_controller.h" #include "chrome/browser/metrics/perf/perf_provider_chromeos.h" #include "components/metrics/metrics_provider.h" @@ -95,9 +94,6 @@ // For collecting systemwide perf data. metrics::PerfProvider perf_provider_; - // Enables runtime memory leak detection and gets notified of leak reports. - std::unique_ptr<metrics::LeakDetectorController> leak_detector_controller_; - // Bluetooth Adapter instance for collecting information about paired devices. scoped_refptr<device::BluetoothAdapter> adapter_;
diff --git a/chrome/browser/metrics/leak_detector/OWNERS b/chrome/browser/metrics/leak_detector/OWNERS deleted file mode 100644 index 1e32bebc..0000000 --- a/chrome/browser/metrics/leak_detector/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://components/metrics/leak_detector/OWNERS
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller.cc b/chrome/browser/metrics/leak_detector/leak_detector_controller.cc deleted file mode 100644 index 9f035062..0000000 --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.cc +++ /dev/null
@@ -1,298 +0,0 @@ -// Copyright 2016 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/metrics/leak_detector/leak_detector_controller.h" - -#include <algorithm> - -#include "base/logging.h" -#include "base/memory/weak_ptr.h" -#include "base/rand_util.h" -#include "base/strings/string_number_conversions.h" -#include "base/sys_info.h" -#include "components/metrics/leak_detector/gnu_build_id_reader.h" -#include "components/variations/variations_associated_data.h" -#include "content/public/browser/browser_thread.h" - -namespace metrics { - -namespace { - -using ParamsMap = std::map<std::string, std::string>; - -// Returns a mapping of param names to param values, obtained from the -// variations system. Both names and values are strings. -ParamsMap GetRawVariationParams() { - const char kFieldTrialName[] = "RuntimeMemoryLeakDetector"; - ParamsMap result; - variations::GetVariationParams(kFieldTrialName, &result); - return result; -} - -// Reads the raw variation parameters and parses them to obtain values for the -// parameters used by the memory leak detector itself. Any parameters not -// present in the variation info or that cannot be parsed will be filled in with -// default values. Returns a MemoryLeakReportProto with the parameter fields -// filled in. -MemoryLeakReportProto::Params GetLeakDetectorParams() { - // Variation parameter names. - const char kSamplingRateParam[] = "sampling_rate"; - const char kMaxStackDepthParam[] = "max_stack_depth"; - const char kAnalysisIntervalKbParam[] = "analysis_interval_kb"; - const char kSizeSuspicionThresholdParam[] = "size_suspicion_threshold"; - const char kCallStackSuspicionThresholdParam[] = - "call_stack_suspicion_threshold"; - - // Default parameter values. - double kDefaultSamplingRate = 1.0f / 256; - size_t kDefaultMaxStackDepth = 4; - uint64_t kDefaultAnalysisIntervalKb = 32768; - uint32_t kDefaultSizeSuspicionThreshold = 4; - uint32_t kDefaultCallStackSuspicionThreshold = 4; - - double sampling_rate = 0; - size_t max_stack_depth = 0; - uint64_t analysis_interval_kb = 0; - uint32_t size_suspicion_threshold = 0; - uint32_t call_stack_suspicion_threshold = 0; - - const ParamsMap params = GetRawVariationParams(); - - // Even if the variation param data does not exist and |params| ends up empty, - // the below code will assign default values. - auto iter = params.find(kSamplingRateParam); - if (iter == params.end() || - !base::StringToDouble(iter->second, &sampling_rate)) { - sampling_rate = kDefaultSamplingRate; - } - - iter = params.find(kMaxStackDepthParam); - if (iter == params.end() || - !base::StringToSizeT(iter->second, &max_stack_depth)) { - max_stack_depth = kDefaultMaxStackDepth; - } - - iter = params.find(kAnalysisIntervalKbParam); - if (iter == params.end() || - !base::StringToUint64(iter->second, &analysis_interval_kb)) { - analysis_interval_kb = kDefaultAnalysisIntervalKb; - } - - iter = params.find(kSizeSuspicionThresholdParam); - if (iter == params.end() || - !base::StringToUint(iter->second, &size_suspicion_threshold)) { - size_suspicion_threshold = kDefaultSizeSuspicionThreshold; - } - - iter = params.find(kCallStackSuspicionThresholdParam); - if (iter == params.end() || - !base::StringToUint(iter->second, &call_stack_suspicion_threshold)) { - call_stack_suspicion_threshold = kDefaultCallStackSuspicionThreshold; - } - - MemoryLeakReportProto_Params result; - result.set_sampling_rate(sampling_rate); - result.set_max_stack_depth(max_stack_depth); - result.set_analysis_interval_bytes(analysis_interval_kb * 1024); - result.set_size_suspicion_threshold(size_suspicion_threshold); - result.set_call_stack_suspicion_threshold(call_stack_suspicion_threshold); - return result; -} - -// Parses the parameters related to randomly enabling leak detector on different -// processes, from the raw parameter strings provided by the variations. -// Args: -// - browser_probability: probability that the leak detector will be enabled on -// browser process (spawned once per session). -// - renderer_probability: probability that the leak detector will be enabled on -// renderer process (spawned many times per session). -// - max_renderer_processes_enabled: The maximum number of renderer processes on -// which the leak detector can be enabled -// simultaneously. -// -// Probabilities are in the range [0, 1]. Anything higher or lower will not be -// clamped but it will not affect the outcome, since these probabilities are -// compared against the value of base::RandDouble() (aka the "dice roll"), which -// will be within this range. -void GetLeakDetectorEnableParams(double* browser_probability, - double* renderer_probability, - int* max_renderer_processes_enabled) { - const char kBrowserEnableProbabilityParam[] = - "browser_process_enable_probability"; - const char kRendererEnableProbabilityParam[] = - "renderer_process_enable_probability"; - const char kMaxRendererProcessesEnabledParam[] = - "max_renderer_processes_enabled"; - const double kDefaultProbability = 0.0; - const int kDefaultNumProcessesEnabled = 0; - - const ParamsMap params = GetRawVariationParams(); - auto iter = params.find(kBrowserEnableProbabilityParam); - if (iter == params.end() || - !base::StringToDouble(iter->second, browser_probability)) { - *browser_probability = kDefaultProbability; - } - iter = params.find(kRendererEnableProbabilityParam); - if (iter == params.end() || - !base::StringToDouble(iter->second, renderer_probability)) { - *renderer_probability = kDefaultProbability; - } - iter = params.find(kMaxRendererProcessesEnabledParam); - if (iter == params.end() || - !base::StringToInt(iter->second, max_renderer_processes_enabled)) { - *max_renderer_processes_enabled = kDefaultNumProcessesEnabled; - } -} - -} // namespace - -LeakDetectorController::LeakDetectorController() - : params_(GetLeakDetectorParams()), - browser_process_enable_probability_(0), - renderer_process_enable_probability_(0), - max_renderer_processes_with_leak_detector_enabled_(0), - num_renderer_processes_with_leak_detector_enabled_(0), - enable_collect_memory_usage_step_(true), - waiting_for_collect_memory_usage_step_(false), - weak_ptr_factory_(this) { - // Read the build ID once and store it. - leak_detector::gnu_build_id_reader::ReadBuildID(&build_id_); - - GetLeakDetectorEnableParams( - &browser_process_enable_probability_, - &renderer_process_enable_probability_, - &max_renderer_processes_with_leak_detector_enabled_); - - // Register the LeakDetectorController with the remote controller, so this - // class can send/receive data to/from remote processes. - LeakDetectorRemoteController::SetLocalControllerInstance(this); - - // Conditionally launch browser process based on probability. - if (base::RandDouble() < browser_process_enable_probability_) { - LeakDetector* detector = LeakDetector::GetInstance(); - detector->AddObserver(this); - - // Leak detector parameters are stored in |params_|. - detector->Init(params_, content::BrowserThread::GetTaskRunnerForThread( - content::BrowserThread::UI)); - } -} - -LeakDetectorController::~LeakDetectorController() { - DCHECK(thread_checker_.CalledOnValidThread()); - LeakDetector::GetInstance()->RemoveObserver(this); - LeakDetectorRemoteController::SetLocalControllerInstance(nullptr); -} - -void LeakDetectorController::GetLeakReports( - std::vector<MemoryLeakReportProto>* reports) { - DCHECK(thread_checker_.CalledOnValidThread()); - reports->swap(stored_reports_); - stored_reports_.clear(); -} - -void LeakDetectorController::OnLeaksFound( - const std::vector<MemoryLeakReportProto>& reports) { - StoreLeakReports(reports, MemoryLeakReportProto::BROWSER_PROCESS); -} - -MemoryLeakReportProto_Params -LeakDetectorController::GetParamsAndRecordRequest() { - if (ShouldRandomlyEnableLeakDetectorOnRendererProcess()) { - ++num_renderer_processes_with_leak_detector_enabled_; - return params_; - } - // If the leak detector is not to be enabled on the remote process, send an - // empty MemoryLeakReportProto_Params protobuf. The remote process will not - // initialize the leak detector since |sampling_rate| is 0. - return MemoryLeakReportProto_Params(); -} - -void LeakDetectorController::SendLeakReports( - const std::vector<MemoryLeakReportProto>& reports) { - StoreLeakReports(reports, MemoryLeakReportProto::RENDERER_PROCESS); -} - -void LeakDetectorController::OnRemoteProcessShutdown() { - DCHECK_GT(num_renderer_processes_with_leak_detector_enabled_, 0); - --num_renderer_processes_with_leak_detector_enabled_; -} - -LeakDetectorController::TotalMemoryGrowthTracker::TotalMemoryGrowthTracker() - : total_usage_kb_(0) {} - -LeakDetectorController::TotalMemoryGrowthTracker::~TotalMemoryGrowthTracker() {} - -bool LeakDetectorController::TotalMemoryGrowthTracker::UpdateSample( - base::ProcessId pid, - int sample, - int* diff) { - total_usage_kb_ += sample; - return false; -} - -bool LeakDetectorController::ShouldRandomlyEnableLeakDetectorOnRendererProcess() - const { - return base::RandDouble() < renderer_process_enable_probability_ && - num_renderer_processes_with_leak_detector_enabled_ < - max_renderer_processes_with_leak_detector_enabled_; -} - -void LeakDetectorController::OnMemoryDetailCollectionDone(size_t index) { - DCHECK(thread_checker_.CalledOnValidThread()); - DCHECK(waiting_for_collect_memory_usage_step_); - waiting_for_collect_memory_usage_step_ = false; - - // The available physical memory must be translated from bytes - // and the total memory usage must be translated from kb. - MemoryLeakReportProto::MemoryUsageInfo mem_info; - mem_info.set_available_ram_mb( - base::SysInfo::AmountOfAvailablePhysicalMemory() / 1024 / 1024); - mem_info.set_chrome_ram_usage_mb( - total_memory_growth_tracker_.total_usage_kb() / 1024); - - // Update all reports that arrived in the meantime. - for (; index < stored_reports_.size(); index++) { - stored_reports_[index].mutable_memory_usage_info()->CopyFrom(mem_info); - } -} - -void LeakDetectorController::StoreLeakReports( - const std::vector<MemoryLeakReportProto>& reports, - MemoryLeakReportProto::ProcessType process_type) { - DCHECK(thread_checker_.CalledOnValidThread()); - - // Postpone a task of collecting info about the memory usage. - // When the task is done, all reports collected after this point - // will be updated, unless GetLeakReports() gets called first. - if (enable_collect_memory_usage_step_ && - !waiting_for_collect_memory_usage_step_) { - waiting_for_collect_memory_usage_step_ = true; - - total_memory_growth_tracker_.reset(); - - // Idea of using MetricsMemoryDetails is similar as in - // ChromeMetricsServiceClient. However, here generation of histogram data - // is suppressed. - base::Closure callback = - base::Bind(&LeakDetectorController::OnMemoryDetailCollectionDone, - weak_ptr_factory_.GetWeakPtr(), stored_reports_.size()); - - scoped_refptr<MetricsMemoryDetails> details( - new MetricsMemoryDetails(callback, &total_memory_growth_tracker_)); - details->set_generate_histograms(false); - details->StartFetch(); - } - - for (const auto& report : reports) { - // Store the report and insert stored parameters. - stored_reports_.push_back(report); - stored_reports_.back().mutable_params()->CopyFrom(params_); - stored_reports_.back().set_source_process(process_type); - stored_reports_.back().mutable_build_id()->assign(build_id_.begin(), - build_id_.end()); - } -} - -} // namespace metrics
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller.h b/chrome/browser/metrics/leak_detector/leak_detector_controller.h deleted file mode 100644 index 5ab2818..0000000 --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.h +++ /dev/null
@@ -1,134 +0,0 @@ -// Copyright 2016 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_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_CONTROLLER_H_ -#define CHROME_BROWSER_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_CONTROLLER_H_ - -#include <stdint.h> - -#include <vector> - -#include "base/macros.h" -#include "base/threading/thread_checker.h" -#include "chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h" -#include "chrome/browser/metrics/metrics_memory_details.h" -#include "components/metrics/leak_detector/leak_detector.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -namespace metrics { - -// This class initializes the LeakDetector on the browser process and registers -// itself to be notified of leak reports. -class LeakDetectorController - : public LeakDetector::Observer, - public LeakDetectorRemoteController::LocalController { - public: - LeakDetectorController(); - ~LeakDetectorController() override; - - // Retrieves all reports in |stored_reports_|, moving them to |*reports|. - // |stored_reports_| is empty afterwards. - void GetLeakReports(std::vector<MemoryLeakReportProto>* reports); - - protected: - // LeakDetector::Observer: - void OnLeaksFound(const std::vector<MemoryLeakReportProto>& reports) override; - - // LeakDetectorRemoteController::LocalController: - MemoryLeakReportProto::Params GetParamsAndRecordRequest() override; - void SendLeakReports( - const std::vector<MemoryLeakReportProto>& reports) override; - void OnRemoteProcessShutdown() override; - - void set_enable_collect_memory_usage_step(bool enabled) { - enable_collect_memory_usage_step_ = enabled; - } - - private: - // Accumulates total memory usage info inside MetricsMemoryDetails. - class TotalMemoryGrowthTracker : public MemoryGrowthTracker { - public: - TotalMemoryGrowthTracker(); - ~TotalMemoryGrowthTracker() override; - - // Updates the inner counter by sample (in kb). Returns always false - // to suppress generating growth/shrink histograms in MetricsMemoryDetails. - bool UpdateSample(base::ProcessId pid, int sample, int* diff) override; - - size_t total_usage_kb() const { return total_usage_kb_; } - void reset() { total_usage_kb_ = 0; } - - private: - size_t total_usage_kb_; - - DISALLOW_COPY_AND_ASSIGN(TotalMemoryGrowthTracker); - }; - - // Returns true to indicate that LeakDetector should be enabled on a renderer - // process. This is determined as follows: - // 1. If the number of processes running LeakDetector is not at max, returns - // true with a probability of |per_process_enable_probability_|. - // 2. If the number of processes running LeakDetector has reached the max, - // returns false. - bool ShouldRandomlyEnableLeakDetectorOnRendererProcess() const; - - // Stores a given array of leak reports in |stored_reports_|. |process_type| - // is the type of process that generated these reports. The reports must all - // come from the same process type. - void StoreLeakReports(const std::vector<MemoryLeakReportProto>& reports, - MemoryLeakReportProto::ProcessType process_type); - - // Method called from MetricsMemoryDetails when memory usage gets measured. - // Updates |memory_usage_info| in stored_reports_[i] for i >= |index|. - void OnMemoryDetailCollectionDone(size_t index); - - // All leak reports received through OnLeakFound() are stored in protobuf - // format. - std::vector<MemoryLeakReportProto> stored_reports_; - - // Contains all the parameters passed to LeakDetector. Store them in a single - // protobuf message instead of in separate member variables. - const MemoryLeakReportProto::Params params_; - - // The build ID of the current Chrome binary. - std::vector<uint8_t> build_id_; - - // The probability that each process will have the leak detector enabled on - // it. For remote processes, this is determined by sending |params_| for - // initialization. If the remote process is not to have leak detector enabled, - // |params_.sampling_rate()| will be set to 0. Whether or not to enable for a - // particular process is independent of the decision for all other processes. - double browser_process_enable_probability_; - double renderer_process_enable_probability_; - - // The maximum allowed number of renderer processes with leak detector running - // simultaneously. - int max_renderer_processes_with_leak_detector_enabled_; - - // The number of renderer processes on which the leak detector has been - // enabled and is running. - int num_renderer_processes_with_leak_detector_enabled_; - - // For thread safety. - base::ThreadChecker thread_checker_; - - // An object passed to MetricsMemoryDetails for collecting memory usage. - TotalMemoryGrowthTracker total_memory_growth_tracker_; - - // A flag indicating if a task should be scheduled to populate memory usage - // information in the reports. - bool enable_collect_memory_usage_step_; - - // Indicates that collecting memory usage is running. - bool waiting_for_collect_memory_usage_step_; - - // For passing |this| into a callback. - base::WeakPtrFactory<LeakDetectorController> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorController); -}; - -} // namespace metrics - -#endif // CHROME_BROWSER_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_CONTROLLER_H_
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller_unittest.cc b/chrome/browser/metrics/leak_detector/leak_detector_controller_unittest.cc deleted file mode 100644 index 03904c6..0000000 --- a/chrome/browser/metrics/leak_detector/leak_detector_controller_unittest.cc +++ /dev/null
@@ -1,274 +0,0 @@ -// Copyright 2016 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/metrics/leak_detector/leak_detector_controller.h" - -#include <set> - -#include "base/lazy_instance.h" -#include "base/macros.h" -#include "content/public/test/test_browser_thread_bundle.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -namespace metrics { - -namespace { - -// Converts a vector of values into a protobuf RepeatedField. Although there is -// no hard requirement, T should be a POD type since that is what RepeatedField -// is used for in protobuf classes. -template <typename T> -void InitializeRepeatedField(const std::vector<T>& input, - ::google::protobuf::RepeatedField<T>* output) { - *output = ::google::protobuf::RepeatedField<T>(input.begin(), input.end()); -} - -} // namespace - -// Test class for LeakDetectorController that exposes protected methods. -class TestLeakDetectorController : public LeakDetectorController { - public: - using LeakDetectorController::OnLeaksFound; - - // This constructor suppresses starting memory metrics job in the superclass. - TestLeakDetectorController() { - LeakDetectorController::set_enable_collect_memory_usage_step(false); - } - - private: - DISALLOW_COPY_AND_ASSIGN(TestLeakDetectorController); -}; - -class LeakDetectorControllerTest : public ::testing::Test { - public: - LeakDetectorControllerTest() {} - - private: - // For supporting content::BrowserThread operations. - content::TestBrowserThreadBundle thread_bundle_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorControllerTest); -}; - -// Use a global instance of the test class because LeakDetectorController -// initializes class LeakDetector, which can only be initialized once, enforced -// by an internal CHECK. Multiple initializations of LeakDetectorController in -// the same process will result in multiple initializations of class -// LeakDetector. It has to be Leaky as running its destructor will otherwise -// DCHECK when called outside the scope of a TestBrowserThreadBundle. -// -// See src/components/metrics/leak_detector/leak_detector.h for more info. -base::LazyInstance<TestLeakDetectorController>::Leaky - g_leak_detector_controller_unittest_instance = LAZY_INSTANCE_INITIALIZER; - -TEST_F(LeakDetectorControllerTest, SingleReport) { - MemoryLeakReportProto report; - report.set_size_bytes(8); - InitializeRepeatedField({1, 2, 3, 4}, report.mutable_call_stack()); - - TestLeakDetectorController* controller = - &g_leak_detector_controller_unittest_instance.Get(); - controller->OnLeaksFound({report}); - - std::vector<MemoryLeakReportProto> stored_reports; - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(1U, stored_reports.size()); - - const MemoryLeakReportProto& proto = stored_reports[0]; - EXPECT_EQ(8U, proto.size_bytes()); - ASSERT_EQ(4, proto.call_stack().size()); - EXPECT_EQ(1U, proto.call_stack().Get(0)); - EXPECT_EQ(2U, proto.call_stack().Get(1)); - EXPECT_EQ(3U, proto.call_stack().Get(2)); - EXPECT_EQ(4U, proto.call_stack().Get(3)); - - // Check that default leak detector parameters are stored in the leak report. - // Default values are listed in leak_detector_controller.cc. - EXPECT_DOUBLE_EQ(1.0f / 256, proto.params().sampling_rate()); - EXPECT_EQ(4U, proto.params().max_stack_depth()); - EXPECT_EQ(32U * 1024 * 1024, proto.params().analysis_interval_bytes()); - EXPECT_EQ(4U, proto.params().size_suspicion_threshold()); - EXPECT_EQ(4U, proto.params().call_stack_suspicion_threshold()); - - // No more reports. - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); -} - -TEST_F(LeakDetectorControllerTest, SingleReportHistory) { - MemoryLeakReportProto report; - - auto* entry = report.add_alloc_breakdown_history(); - InitializeRepeatedField({100, 200, 300}, entry->mutable_counts_by_size()); - entry->set_count_for_call_stack(15); - - entry = report.add_alloc_breakdown_history(); - InitializeRepeatedField({150, 250, 350, 650}, - entry->mutable_counts_by_size()); - entry->set_count_for_call_stack(30); - - entry = report.add_alloc_breakdown_history(); - InitializeRepeatedField({200, 300, 400, 700, 800}, - entry->mutable_counts_by_size()); - entry->set_count_for_call_stack(45); - - TestLeakDetectorController* controller = - &g_leak_detector_controller_unittest_instance.Get(); - controller->OnLeaksFound({report}); - - std::vector<MemoryLeakReportProto> stored_reports; - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(1U, stored_reports.size()); - - const auto& history = stored_reports[0].alloc_breakdown_history(); - ASSERT_EQ(3, history.size()); - - ASSERT_EQ(3, history.Get(0).counts_by_size().size()); - EXPECT_EQ(100U, history.Get(0).counts_by_size(0)); - EXPECT_EQ(200U, history.Get(0).counts_by_size(1)); - EXPECT_EQ(300U, history.Get(0).counts_by_size(2)); - EXPECT_EQ(15U, history.Get(0).count_for_call_stack()); - - ASSERT_EQ(4, history.Get(1).counts_by_size_size()); - EXPECT_EQ(150U, history.Get(1).counts_by_size(0)); - EXPECT_EQ(250U, history.Get(1).counts_by_size(1)); - EXPECT_EQ(350U, history.Get(1).counts_by_size(2)); - EXPECT_EQ(650U, history.Get(1).counts_by_size(3)); - EXPECT_EQ(30U, history.Get(1).count_for_call_stack()); - - ASSERT_EQ(5, history.Get(2).counts_by_size_size()); - EXPECT_EQ(200U, history.Get(2).counts_by_size(0)); - EXPECT_EQ(300U, history.Get(2).counts_by_size(1)); - EXPECT_EQ(400U, history.Get(2).counts_by_size(2)); - EXPECT_EQ(700U, history.Get(2).counts_by_size(3)); - EXPECT_EQ(800U, history.Get(2).counts_by_size(4)); - EXPECT_EQ(45U, history.Get(2).count_for_call_stack()); - - // No more reports. - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); -} - -TEST_F(LeakDetectorControllerTest, MultipleReportsSeparately) { - TestLeakDetectorController* controller = - &g_leak_detector_controller_unittest_instance.Get(); - std::vector<MemoryLeakReportProto> stored_reports; - - // Pass in first report. - MemoryLeakReportProto report1; - report1.set_size_bytes(8); - InitializeRepeatedField({1, 2, 3, 4}, report1.mutable_call_stack()); - - controller->OnLeaksFound({report1}); - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(1U, stored_reports.size()); - - EXPECT_EQ(8U, stored_reports[0].size_bytes()); - ASSERT_EQ(4, stored_reports[0].call_stack().size()); - EXPECT_EQ(1U, stored_reports[0].call_stack().Get(0)); - EXPECT_EQ(2U, stored_reports[0].call_stack().Get(1)); - EXPECT_EQ(3U, stored_reports[0].call_stack().Get(2)); - EXPECT_EQ(4U, stored_reports[0].call_stack().Get(3)); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); - - // Pass in second report. - MemoryLeakReportProto report2; - report2.set_size_bytes(16); - InitializeRepeatedField({5, 6, 7, 8, 9, 10}, report2.mutable_call_stack()); - controller->OnLeaksFound({report2}); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(1U, stored_reports.size()); - - EXPECT_EQ(16U, stored_reports[0].size_bytes()); - ASSERT_EQ(6, stored_reports[0].call_stack().size()); - EXPECT_EQ(5U, stored_reports[0].call_stack().Get(0)); - EXPECT_EQ(6U, stored_reports[0].call_stack().Get(1)); - EXPECT_EQ(7U, stored_reports[0].call_stack().Get(2)); - EXPECT_EQ(8U, stored_reports[0].call_stack().Get(3)); - EXPECT_EQ(9U, stored_reports[0].call_stack().Get(4)); - EXPECT_EQ(10U, stored_reports[0].call_stack().Get(5)); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); - - // Pass in third report. - MemoryLeakReportProto report3; - report3.set_size_bytes(24); - InitializeRepeatedField({9, 10, 11, 12, 13, 14, 15, 16}, - report3.mutable_call_stack()); - controller->OnLeaksFound({report3}); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(1U, stored_reports.size()); - - EXPECT_EQ(24U, stored_reports[0].size_bytes()); - ASSERT_EQ(8, stored_reports[0].call_stack().size()); - EXPECT_EQ(9U, stored_reports[0].call_stack().Get(0)); - EXPECT_EQ(10U, stored_reports[0].call_stack().Get(1)); - EXPECT_EQ(11U, stored_reports[0].call_stack().Get(2)); - EXPECT_EQ(12U, stored_reports[0].call_stack().Get(3)); - EXPECT_EQ(13U, stored_reports[0].call_stack().Get(4)); - EXPECT_EQ(14U, stored_reports[0].call_stack().Get(5)); - EXPECT_EQ(15U, stored_reports[0].call_stack().Get(6)); - EXPECT_EQ(16U, stored_reports[0].call_stack().Get(7)); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); -} - -TEST_F(LeakDetectorControllerTest, MultipleReportsTogether) { - std::vector<MemoryLeakReportProto> reports(3); - reports[0].set_size_bytes(8); - InitializeRepeatedField({1, 2, 3, 4}, reports[0].mutable_call_stack()); - reports[1].set_size_bytes(16); - InitializeRepeatedField({5, 6, 7, 8, 9, 10}, reports[1].mutable_call_stack()); - reports[2].set_size_bytes(24); - InitializeRepeatedField({9, 10, 11, 12, 13, 14, 15, 16}, - reports[2].mutable_call_stack()); - - TestLeakDetectorController* controller = - &g_leak_detector_controller_unittest_instance.Get(); - controller->OnLeaksFound(reports); - - std::vector<MemoryLeakReportProto> stored_reports; - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(3U, stored_reports.size()); - - EXPECT_EQ(8U, stored_reports[0].size_bytes()); - ASSERT_EQ(4, stored_reports[0].call_stack().size()); - EXPECT_EQ(1U, stored_reports[0].call_stack().Get(0)); - EXPECT_EQ(2U, stored_reports[0].call_stack().Get(1)); - EXPECT_EQ(3U, stored_reports[0].call_stack().Get(2)); - EXPECT_EQ(4U, stored_reports[0].call_stack().Get(3)); - - EXPECT_EQ(16U, stored_reports[1].size_bytes()); - ASSERT_EQ(6, stored_reports[1].call_stack().size()); - EXPECT_EQ(5U, stored_reports[1].call_stack().Get(0)); - EXPECT_EQ(6U, stored_reports[1].call_stack().Get(1)); - EXPECT_EQ(7U, stored_reports[1].call_stack().Get(2)); - EXPECT_EQ(8U, stored_reports[1].call_stack().Get(3)); - EXPECT_EQ(9U, stored_reports[1].call_stack().Get(4)); - EXPECT_EQ(10U, stored_reports[1].call_stack().Get(5)); - - EXPECT_EQ(24U, stored_reports[2].size_bytes()); - ASSERT_EQ(8, stored_reports[2].call_stack().size()); - EXPECT_EQ(9U, stored_reports[2].call_stack().Get(0)); - EXPECT_EQ(10U, stored_reports[2].call_stack().Get(1)); - EXPECT_EQ(11U, stored_reports[2].call_stack().Get(2)); - EXPECT_EQ(12U, stored_reports[2].call_stack().Get(3)); - EXPECT_EQ(13U, stored_reports[2].call_stack().Get(4)); - EXPECT_EQ(14U, stored_reports[2].call_stack().Get(5)); - EXPECT_EQ(15U, stored_reports[2].call_stack().Get(6)); - EXPECT_EQ(16U, stored_reports[2].call_stack().Get(7)); - - controller->GetLeakReports(&stored_reports); - ASSERT_EQ(0U, stored_reports.size()); -} - -} // namespace metrics
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc deleted file mode 100644 index d7c1c98..0000000 --- a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc +++ /dev/null
@@ -1,97 +0,0 @@ -// Copyright 2016 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/metrics/leak_detector/leak_detector_remote_controller.h" - -#include <utility> - -#include "base/bind.h" -#include "base/callback.h" -#include "base/memory/ptr_util.h" -#include "components/metrics/leak_detector/protobuf_to_mojo_converter.h" -#include "content/public/browser/browser_thread.h" -#include "mojo/public/cpp/bindings/strong_binding.h" - -namespace metrics { - -namespace { - -// All instances of LeakDetectorRemoteController will need to reference a single -// LocalController instance, referenced by this pointer. All remote LeakDetector -// clients will get their params from and send leak reports to this instance. -LeakDetectorRemoteController::LocalController* g_local_controller = nullptr; - -} // namespace - -LeakDetectorRemoteController::~LeakDetectorRemoteController() {} - -// static -void LeakDetectorRemoteController::Create( - mojom::LeakDetectorRequest request) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - std::unique_ptr<LeakDetectorRemoteController> controller = - base::WrapUnique(new LeakDetectorRemoteController); - base::Closure error_handler = - base::Bind(&LeakDetectorRemoteController::OnRemoteProcessShutdown, - base::Unretained(controller.get())); - auto binding = - mojo::MakeStrongBinding(std::move(controller), std::move(request)); - binding->set_connection_error_handler(error_handler); -} - -void LeakDetectorRemoteController::GetParams( - mojom::LeakDetector::GetParamsCallback callback) { - // If no controller exists, send an empty param protobuf. The remote caller - // should not initialize anything if the params are empty. - MemoryLeakReportProto_Params params; - if (g_local_controller) { - params = g_local_controller->GetParamsAndRecordRequest(); - // A non-zero sampling rate tells the remote process to enable the leak - // detector. Otherwise, the remote process will not initialize it. - leak_detector_enabled_on_remote_process_ = params.sampling_rate() > 0; - } - - mojo::StructPtr<mojom::LeakDetectorParams> mojo_params = - mojom::LeakDetectorParams::New(); - leak_detector::protobuf_to_mojo_converter::ParamsToMojo(params, - mojo_params.get()); - - std::move(callback).Run(std::move(mojo_params)); -} - -void LeakDetectorRemoteController::SendLeakReports( - std::vector<mojom::MemoryLeakReportPtr> reports) { - std::vector<MemoryLeakReportProto> report_protos; - report_protos.reserve(reports.size()); - - for (const mojom::MemoryLeakReportPtr& report : reports) { - report_protos.push_back(MemoryLeakReportProto()); - MemoryLeakReportProto* proto = &report_protos.back(); - - leak_detector::protobuf_to_mojo_converter::MojoToReport(*report, proto); - } - if (g_local_controller) { - g_local_controller->SendLeakReports(report_protos); - } -} - -void LeakDetectorRemoteController::OnRemoteProcessShutdown() { - if (leak_detector_enabled_on_remote_process_ && g_local_controller) { - g_local_controller->OnRemoteProcessShutdown(); - } -} - -LeakDetectorRemoteController::LeakDetectorRemoteController() - : leak_detector_enabled_on_remote_process_(false) {} - -// static -void LeakDetectorRemoteController::SetLocalControllerInstance( - LocalController* controller) { - // This must be on the same thread as the Mojo-based functions of this class, - // to avoid race conditions on |g_local_controller|. - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - g_local_controller = controller; -} - -} // namespace metrics
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h deleted file mode 100644 index d80b99e..0000000 --- a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h +++ /dev/null
@@ -1,72 +0,0 @@ -// Copyright 2016 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_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CONTROLLER_H_ -#define CHROME_BROWSER_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CONTROLLER_H_ - -#include <string> -#include <vector> - -#include "base/macros.h" -#include "components/metrics/leak_detector/leak_detector.mojom.h" -#include "mojo/public/cpp/bindings/interface_request.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -namespace metrics { - -// This class acts as an interface to LeakDetector clients running on processes -// other than its own (the browser process). -class LeakDetectorRemoteController : public mojom::LeakDetector { - public: - // Interface class to be implemented by a local controller class that provides - // leak detector parameters and can pass leak reports to UMA. - class LocalController { - public: - virtual ~LocalController() {} - - // Returns a set of leak detection params to be used when initializing the - // leak detector on a remote process. The controller may vary the parameters - // between each call to this function, and to change its internal state. - // Hence this is function is not const. - virtual MemoryLeakReportProto::Params GetParamsAndRecordRequest() = 0; - - // Pass a vector of memory leak reports provided by a remote process to the - // local controller class. - virtual void SendLeakReports( - const std::vector<MemoryLeakReportProto>& reports) = 0; - - // Signal that a remote process that had been running the leak detector - // (i.e. been given params with sampling_rate = 0). - virtual void OnRemoteProcessShutdown() = 0; - }; - - ~LeakDetectorRemoteController() override; - - static void Create(mojom::LeakDetectorRequest request); - - // mojom::LeakDetector: - void GetParams(mojom::LeakDetector::GetParamsCallback callback) override; - void SendLeakReports(std::vector<mojom::MemoryLeakReportPtr>) override; - - // Sets a global pointer to a LocalController implementation. The global - // pointer is defined in the .cc file. - static void SetLocalControllerInstance(LocalController* controller); - - private: - LeakDetectorRemoteController(); - - // Gets called when the remote process terminates and the Mojo connection gets - // closed as a result. - void OnRemoteProcessShutdown(); - - // Indicates whether remote process received MemoryLeakReportProto::Params - // with a non-zero sampling rate, i.e. enabled leak detector. - bool leak_detector_enabled_on_remote_process_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorRemoteController); -}; - -} // namespace metrics - -#endif // CHROME_BROWSER_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CONTROLLER_H_
diff --git a/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc b/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc index 170a900..474acb5 100644 --- a/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc +++ b/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
@@ -176,7 +176,13 @@ DISALLOW_COPY_AND_ASSIGN(OutOfMemoryReporterTest); }; -TEST_F(OutOfMemoryReporterTest, SimpleOOM) { +// Flaky on Android: http://crbug.com/819592 +#if defined(OS_ANDROID) +#define MAYBE_SimpleOOM DISABLED_SimpleOOM +#else +#define MAYBE_SimpleOOM SimpleOOM +#endif +TEST_F(OutOfMemoryReporterTest, MAYBE_SimpleOOM) { const GURL url("https://example.test/"); NavigateAndCommit(url); @@ -198,7 +204,14 @@ EXPECT_EQ(0u, entries.size()); } -TEST_F(OutOfMemoryReporterTest, SubframeNavigation_IsNotLogged) { +// Flaky on Android: http://crbug.com/819592 +#if defined(OS_ANDROID) +#define MAYBE_SubframeNavigation_IsNotLogged \ + DISABLED_SubframeNavigation_IsNotLogged +#else +#define MAYBE_SubframeNavigation_IsNotLogged SubframeNavigation_IsNotLogged +#endif +TEST_F(OutOfMemoryReporterTest, MAYBE_SubframeNavigation_IsNotLogged) { const GURL url("https://example.test/"); NavigateAndCommit(url); @@ -215,7 +228,13 @@ CheckUkmMetricRecorded(url, 3000); } -TEST_F(OutOfMemoryReporterTest, OOMOnPreviousPage) { +// Flaky on Android: http://crbug.com/819592 +#if defined(OS_ANDROID) +#define MAYBE_OOMOnPreviousPage DISABLED_OOMOnPreviousPage +#else +#define MAYBE_OOMOnPreviousPage OOMOnPreviousPage +#endif +TEST_F(OutOfMemoryReporterTest, MAYBE_OOMOnPreviousPage) { const GURL url1("https://example.test1/"); const GURL url2("https://example.test2/"); const GURL url3("https://example.test2/");
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc index e89818c..3c65857d 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
@@ -175,11 +175,7 @@ return; } - if (!extra_request_complete_info.load_timing_info->connect_timing.dns_start - .is_null() && - !extra_request_complete_info.load_timing_info->connect_timing.dns_end - .is_null() && - !extra_request_complete_info.load_timing_info->send_start.is_null() && + if (!extra_request_complete_info.load_timing_info->send_start.is_null() && !extra_request_complete_info.load_timing_info->send_end.is_null() && !extra_request_complete_info.load_timing_info->request_start .is_null()) {
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index b3e7cf7..4f5aa86 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc
@@ -243,6 +243,10 @@ #include "ui/base/window_open_disposition.h" #endif +#if defined(OS_WIN) +#include "base/win/win_util.h" +#endif + using content::BrowserThread; using net::URLRequestMockHTTPJob; using testing::Mock; @@ -1956,6 +1960,12 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionRecommendedInstallationMode) { // Verifies that extensions that are recommended-installed by policies are // installed, can be disabled but not uninstalled. + +// Mark as enterprise managed. +#if defined(OS_WIN) + base::win::SetDomainStateForTesting(true); +#endif + ExtensionService* service = extension_service(); ASSERT_FALSE(service->GetExtensionById(kGoodCrxId, true)); @@ -2227,6 +2237,10 @@ // Verifies that a force-installed extension which does not meet a subsequently // set minimum version requirement is handled well. IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionMinimumVersionForceInstalled) { +// Mark as enterprise managed. +#if defined(OS_WIN) + base::win::SetDomainStateForTesting(true); +#endif extensions::ExtensionRegistry* registry = extensions::ExtensionRegistry::Get(browser()->profile()); extensions::ExtensionPrefs* extension_prefs =
diff --git a/chrome/browser/predictors/loading_data_collector.cc b/chrome/browser/predictors/loading_data_collector.cc index 69dc763..b872eb9 100644 --- a/chrome/browser/predictors/loading_data_collector.cc +++ b/chrome/browser/predictors/loading_data_collector.cc
@@ -26,7 +26,7 @@ namespace { -bool g_allow_port_in_urls = false; +bool g_allow_port_in_urls = true; // Sorted by decreasing likelihood according to HTTP archive. const char* const kFontMimeTypes[] = {"font/woff2",
diff --git a/chrome/browser/predictors/loading_data_collector_unittest.cc b/chrome/browser/predictors/loading_data_collector_unittest.cc index b1e1e3a..556423b 100644 --- a/chrome/browser/predictors/loading_data_collector_unittest.cc +++ b/chrome/browser/predictors/loading_data_collector_unittest.cc
@@ -39,6 +39,7 @@ } void SetUp() override { + LoadingDataCollector::SetAllowPortInUrlsForTesting(false); content::RunAllTasksUntilIdle(); // Runs the DB lookup. url_request_job_factory_.Reset();
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 06cc4ca5..69f5518 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc
@@ -55,6 +55,7 @@ #include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_util.h" #include "chrome/browser/sync/profile_sync_service_factory.h" +#include "chrome/browser/sync/user_event_service_factory.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" @@ -1295,6 +1296,21 @@ // Generates notifications from the above, if experiment is enabled. ContentSuggestionsNotifierServiceFactory::GetForProfile(profile); #endif + + // TODO(crbug.com/709094, crbug.com/761485): UserEventServiceFactory + // initializes asynchronously, but it needs to be ready to receive user + // events in order for ConsentAuditor to record consents when the user + // signs in, which means that it needs to be initialized early enough in + // the Profile lifetime. + // + // This early initialization can be removed once the linked bugs are fixed + // and UserEventService is able to initialize synchronously. + // + // Note also that this code is technically not necessary, as UserEventService + // already happens to be initialized early in practice through other + // components that use it, but ConsentAuditor should not depend on that. + if (!go_off_the_record) + browser_sync::UserEventServiceFactory::GetForProfile(profile); } void ProfileManager::DoFinalInitLogging(Profile* profile) {
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 41211912..1fd42ea 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -1741,10 +1741,12 @@ return IsRouteMediaEnabled(); case IDC_CONTENT_CONTEXT_EXIT_FULLSCREEN: - // TODO(apacible): Update PIP conditions when finalized. - case IDC_CONTENT_CONTENT_PICTUREINPICTURE: return true; + case IDC_CONTENT_CONTENT_PICTUREINPICTURE: + return !!(params_.media_flags & + WebContextMenuData::kMediaCanPictureInPicture); + default: NOTREACHED(); return false;
diff --git a/chrome/browser/resources/chromeos/internet_detail_dialog/internet_detail_dialog.js b/chrome/browser/resources/chromeos/internet_detail_dialog/internet_detail_dialog.js index a349435..5ffeb85 100644 --- a/chrome/browser/resources/chromeos/internet_detail_dialog/internet_detail_dialog.js +++ b/chrome/browser/resources/chromeos/internet_detail_dialog/internet_detail_dialog.js
@@ -48,12 +48,21 @@ /** @override */ attached: function() { - this.guid = chrome.getVariableValue('dialogArguments'); - // For debugging - if (!this.guid) { + var dialogArgs = chrome.getVariableValue('dialogArguments'); + var type, name; + if (dialogArgs) { + var args = JSON.parse(dialogArgs); + this.guid = args.guid || ''; + type = args.type || 'WiFi'; + name = args.name || type; + } else { + // For debugging var params = new URLSearchParams(document.location.search.substring(1)); this.guid = params.get('guid') || ''; + type = params.get('type') || 'WiFi'; + name = params.get('name') || type; } + if (!this.guid) { console.error('Invalid guid'); this.close_(); @@ -68,9 +77,9 @@ // Set basic networkProperties until they are loaded. this.networkProperties = { GUID: this.guid, - Type: CrOnc.Type.WI_FI, + Type: type, ConnectionState: CrOnc.ConnectionState.NOT_CONNECTED, - Name: {Active: CrOnc.Type.WI_FI}, + Name: {Active: name}, }; this.networkPropertiesReceived_ = false; this.getNetworkDetails_();
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome.js b/chrome/browser/resources/chromeos/login/oobe_welcome.js index be04ed4..800c4c9 100644 --- a/chrome/browser/resources/chromeos/login/oobe_welcome.js +++ b/chrome/browser/resources/chromeos/login/oobe_welcome.js
@@ -126,6 +126,8 @@ loadTimeData.getString('networkListItemConnectingTo'), networkListItemInitializing: loadTimeData.getString('networkListItemInitializing'), + networkListItemScanning: + loadTimeData.getString('networkListItemScanning'), networkListItemNotConnected: loadTimeData.getString('networkListItemNotConnected'), networkListItemNoNetwork:
diff --git a/chrome/browser/resources/chromeos/network_ui/network_ui.js b/chrome/browser/resources/chromeos/network_ui/network_ui.js index 6a2d731..62a6f3452 100644 --- a/chrome/browser/resources/chromeos/network_ui/network_ui.js +++ b/chrome/browser/resources/chromeos/network_ui/network_ui.js
@@ -25,6 +25,7 @@ loadTimeData.getString('networkListItemConnectingTo'), networkListItemInitializing: loadTimeData.getString('networkListItemInitializing'), + networkListItemScanning: loadTimeData.getString('networkListItemScanning'), networkListItemNotConnected: loadTimeData.getString('networkListItemNotConnected'), networkListItemNoNetwork:
diff --git a/chrome/browser/resources/engagement/BUILD.gn b/chrome/browser/resources/engagement/BUILD.gn new file mode 100644 index 0000000..93c8c3a1 --- /dev/null +++ b/chrome/browser/resources/engagement/BUILD.gn
@@ -0,0 +1,27 @@ +# 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("//third_party/closure_compiler/compile_js.gni") + +group("closure_compile") { + deps = [ + ":site_engagement", + ] +} + +js_binary("site_engagement") { + deps = [ + "//ui/webui/resources/js:assert", + "//ui/webui/resources/js:util", + ] + extra_deps = [ + "//url/mojom:url_mojom_gurl_js", + "//chrome/browser/engagement:mojo_bindings_js", + ] + externs_list = [ + "$root_gen_dir/chrome/browser/engagement/site_engagement_details.mojom.externs.js", + "$root_gen_dir/url/mojom/url.mojom.externs.js", + "$externs_path/mojo.js", + ] +}
diff --git a/chrome/browser/resources/engagement/site_engagement.js b/chrome/browser/resources/engagement/site_engagement.js index e0b5cca..25dbd5b 100644 --- a/chrome/browser/resources/engagement/site_engagement.js +++ b/chrome/browser/resources/engagement/site_engagement.js
@@ -8,7 +8,10 @@ // the page has been populated with site engagement details. var whenPageIsPopulatedForTest; +/** @type {function()} */ var disableAutoupdateForTests; + +/** @type {mojom.SiteEngagementDetailsProviderPtr} */ var uiHandler; (function() { @@ -27,10 +30,15 @@ mojom.SiteEngagementDetailsProvider.name, mojo.makeRequest(uiHandler).handle); + /** @type {?HTMLElement} */ var engagementTableBody = $('engagement-table-body'); + /** @type {?number} */ var updateInterval = null; + /** @type {?Array<!mojom.SiteEngagementDetails>} */ var info = null; + /** @type {string} */ var sortKey = 'totalScore'; + /** @type {boolean} */ var sortReverse = true; // Set table header sort handlers. @@ -58,7 +66,7 @@ /** * Creates a single row in the engagement table. - * @param {SiteEngagementDetails} info The info to create the row from. + * @param {mojom.SiteEngagementDetails} info The info to create the row from. * @return {HTMLElement} */ function createRow(info) { @@ -77,7 +85,7 @@ baseScoreCell.appendChild(baseScoreInput); var bonusScoreCell = createElementWithClassName('td', 'bonus-score-cell'); - bonusScoreCell.textContent = info.bonusScore; + bonusScoreCell.textContent = info.installedBonus; var totalScoreCell = createElementWithClassName('td', 'total-score-cell'); totalScoreCell.textContent = info.totalScore; @@ -89,7 +97,7 @@ createElementWithClassName('td', 'engagement-bar-cell'); engagementBarCell.appendChild(engagementBar); - var row = document.createElement('tr'); + var row = /** @type {HTMLElement} */ (document.createElement('tr')); row.appendChild(originCell); row.appendChild(baseScoreCell); row.appendChild(bonusScoreCell); @@ -119,7 +127,7 @@ * Sets the base engagement score when a score input is changed. * Resets the length of engagement-bar-cell to match the new score. * Also resets the update interval. - * @param {string} origin The origin of the engagement score to set. + * @param {!url.mojom.Url} origin The origin of the engagement score to set. * @param {Event} e */ function handleBaseScoreChange(origin, e) { @@ -191,9 +199,6 @@ info.installedBonus = roundScore(info.installedBonus); info.totalScore = roundScore(info.totalScore); - // Collate the bonuses into a value for the bonusScore column. - info.bonusScore = info.installedBonus; - engagementTableBody.appendChild(createRow(info)); }); } @@ -205,7 +210,7 @@ // Populate engagement table. uiHandler.getSiteEngagementDetails().then((response) => { info = response.info; - renderTable(info); + renderTable(); resolvePageIsPopulated(); }); }
diff --git a/chrome/browser/resources/net_internals/events_view.css b/chrome/browser/resources/net_internals/events_view.css index 4358a73c..de7e6b9f 100644 --- a/chrome/browser/resources/net_internals/events_view.css +++ b/chrome/browser/resources/net_internals/events_view.css
@@ -82,7 +82,7 @@ color: rgb(128, 48, 48); } -#events-view-source-list-tbody .source-proxy-script-decider { +#events-view-source-list-tbody .source-pac-file-decider { color: green; }
diff --git a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html b/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html index 4466b23..d5bde697 100644 --- a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html +++ b/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html
@@ -8,7 +8,7 @@ <dom-module id="settings-internet-known-networks-page"> <template> - <style include="internet-shared"> + <style include="internet-shared iron-flex"> cr-policy-indicator { -webkit-margin-start: var(--settings-controlled-by-spacing); } @@ -22,23 +22,25 @@ <div class="secondary">$i18n{knownNetworksPreferred}</div> </div> <div class="list-frame vertical-list"> - <div class="list-item" - hidden$="[[havePreferred_(networkStateList_)]]"> + <div class="list-item" hidden$="[[havePreferred_(networkStateList_)]]"> $i18n{internetNoNetworks} </div> <template is="dom-repeat" items="[[networkStateList_]]" filter="networkIsPreferred_"> <div class="list-item"> - <div class="start">[[item.Name]]</div> - <template is="dom-if" if="[[isPolicySource(item.Source))]]"> - <cr-policy-indicator - indicator-type="[[getIndicatorTypeForSource(item.Source)]]"> - </cr-policy-indicator> - </template> - <button class="subpage-arrow" is="paper-icon-button-light" - actionable on-click="fireShowDetails_" tabindex$="[[tabindex]]" - aria-label$="[[item.Name]]"> - </button> + <div actionable class="flex layout horizontal" + on-click="fireShowDetails_"> + <div class="flex">[[item.Name]]</div> + <template is="dom-if" if="[[isPolicySource(item.Source))]]"> + <cr-policy-indicator on-click="doNothing_" + indicator-type="[[getIndicatorTypeForSource(item.Source)]]"> + </cr-policy-indicator> + </template> + <button class="subpage-arrow" is="paper-icon-button-light" + tabindex$="[[tabindex]]" aria-label$="[[item.Name]]"> + </button> + </div> + <div class="separator"></div> <button is="paper-icon-button-light" class="icon-more-vert" preferred tabindex$="[[tabindex]]" on-click="onMenuButtonTap_" @@ -56,16 +58,19 @@ <template is="dom-repeat" items="[[networkStateList_]]" filter="networkIsNotPreferred_"> <div class="list-item"> - <div class="start">[[item.Name]]</div> - <template is="dom-if" if="[[isPolicySource(item.Source))]]"> - <cr-policy-indicator - indicator-type="[[getIndicatorTypeForSource(item.Source)]]"> - </cr-policy-indicator> - </template> - <button class="subpage-arrow" is="paper-icon-button-light" - actionable on-click="fireShowDetails_" tabindex$="[[tabindex]]" - aria-label$="[[item.Name]]"> - </button> + <div actionable class="flex layout horizontal" + on-click="fireShowDetails_"> + <div class="flex">[[item.Name]]</div> + <template is="dom-if" if="[[isPolicySource(item.Source))]]"> + <cr-policy-indicator on-click="doNothing_" + indicator-type="[[getIndicatorTypeForSource(item.Source)]]"> + </cr-policy-indicator> + </template> + <button class="subpage-arrow" is="paper-icon-button-light" + tabindex$="[[tabindex]]" aria-label$="[[item.Name]]"> + </button> + </div> + <div class="separator"></div> <button is="paper-icon-button-light" class="icon-more-vert" tabindex$="[[tabindex]]" on-click="onMenuButtonTap_"
diff --git a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.js b/chrome/browser/resources/settings/internet_page/internet_known_networks_page.js index 4ba1d6d..513bea8 100644 --- a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.js +++ b/chrome/browser/resources/settings/internet_page/internet_known_networks_page.js
@@ -183,4 +183,13 @@ this.fire('show-detail', state); event.stopPropagation(); }, + + /** + * Make sure events in embedded components do not propagate to onDetailsTap_. + * @param {!Event} event + * @private + */ + doNothing_: function(event) { + event.stopPropagation(); + }, });
diff --git a/chrome/browser/resources/settings/internet_page/network_summary_item.html b/chrome/browser/resources/settings/internet_page/network_summary_item.html index 2df9296..311ae98 100644 --- a/chrome/browser/resources/settings/internet_page/network_summary_item.html +++ b/chrome/browser/resources/settings/internet_page/network_summary_item.html
@@ -12,9 +12,9 @@ <dom-module id="network-summary-item"> <template> - <style include="internet-shared"> + <style include="internet-shared iron-flex"> network-siminfo { - padding: 0 var(--settings-box-row-padding); + -webkit-padding-start: var(--settings-box-row-padding); } #details { @@ -34,41 +34,43 @@ font-weight: 400; } </style> - <div actionable class="settings-box two-line" on-click="onShowDetailsTap_"> - <div id="details" no-flex$="[[showSimInfo_(deviceState)]]"> - <cr-network-icon network-state="[[activeNetworkState]]" - device-state="[[deviceState]]"> - </cr-network-icon> - <div class="flex"> - <div id="networkName">[[getNetworkName_(activeNetworkState)]]</div> - <div id="networkState"> - [[getNetworkStateText_(activeNetworkState, deviceState)]] + <div class="settings-box two-line"> + <div actionable class="flex layout horizontal" + on-click="onShowDetailsTap_"> + <div id="details" no-flex$="[[showSimInfo_(deviceState)]]"> + <cr-network-icon network-state="[[activeNetworkState]]" + device-state="[[deviceState]]"> + </cr-network-icon> + <div class="flex"> + <div id="networkName">[[getNetworkName_(activeNetworkState)]]</div> + <div id="networkState"> + [[getNetworkStateText_(activeNetworkState, deviceState)]] + </div> </div> </div> + + <template is="dom-if" if="[[showSimInfo_(deviceState)]]" restamp> + <network-siminfo editable on-click="doNothing_" + network-properties="[[getCellularState_(deviceState)]]" + networking-private="[[networkingPrivate]]"> + </network-siminfo> + </template> + + <template is="dom-if" if="[[showPolicyIndicator_(activeNetworkState)]]"> + <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource( + activeNetworkState.Source)]]" on-click="doNothing_"> + </cr-policy-indicator> + </template> + + <template is="dom-if" if="[[showDetailsIsVisible_(activeNetworkState, + deviceState, networkStateList)]]"> + <button class="subpage-arrow" is="paper-icon-button-light" + aria-label$="[[getDetailsA11yString_(activeNetworkState, + deviceState, networkStateList)]]"> + </button> + </template> </div> - <template is="dom-if" if="[[showSimInfo_(deviceState)]]" restamp> - <network-siminfo editable on-click="doNothing_" - network-properties="[[getCellularState_(deviceState)]]" - networking-private="[[networkingPrivate]]"> - </network-siminfo> - </template> - - <template is="dom-if" if="[[showPolicyIndicator_(activeNetworkState)]]"> - <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource( - activeNetworkState.Source)]]" - on-click="doNothing_"> - </cr-policy-indicator> - </template> - - <template is="dom-if" if="[[showDetailsIsVisible_(activeNetworkState, - deviceState, networkStateList)]]"> - <button class="subpage-arrow" is="paper-icon-button-light" - aria-label$="[[getDetailsA11yString_(activeNetworkState, - deviceState, networkStateList)]]"> - </button> - </template> - <template is="dom-if" if="[[enableToggleIsVisible_(deviceState)]]"> <div class="separator"></div> <paper-toggle-button id="deviceEnabledButton"
diff --git a/chrome/browser/resources/settings/internet_page/network_summary_item.js b/chrome/browser/resources/settings/internet_page/network_summary_item.js index 65c882d..e7a54cb2 100644 --- a/chrome/browser/resources/settings/internet_page/network_summary_item.js +++ b/chrome/browser/resources/settings/internet_page/network_summary_item.js
@@ -68,10 +68,9 @@ * @private */ getNetworkStateText_: function(activeNetworkState, deviceState) { - const state = activeNetworkState.ConnectionState; - const name = CrOnc.getNetworkName(activeNetworkState); - if (state) - return this.getConnectionStateText_(state, name); + const stateText = this.getConnectionStateText_(activeNetworkState); + if (stateText) + return stateText; // No network state, use device state. if (deviceState) { // Type specific scanning or initialization states. @@ -98,12 +97,15 @@ }, /** - * @param {CrOnc.ConnectionState} state - * @param {string} name + * @param {!CrOnc.NetworkStateProperties} networkState * @return {string} * @private */ - getConnectionStateText_: function(state, name) { + getConnectionStateText_: function(networkState) { + const state = networkState.ConnectionState; + if (!state) + return ''; + const name = CrOnc.getNetworkName(networkState); switch (state) { case CrOnc.ConnectionState.CONNECTED: return name; @@ -112,6 +114,10 @@ return CrOncStrings.networkListItemConnectingTo.replace('$1', name); return CrOncStrings.networkListItemConnecting; case CrOnc.ConnectionState.NOT_CONNECTED: + if (networkState.Type == CrOnc.Type.CELLULAR && networkState.Cellular && + networkState.Cellular.Scanning) { + return this.i18n('internetMobileSearching'); + } return CrOncStrings.networkListItemNotConnected; } assertNotReached();
diff --git a/chrome/browser/resources/settings/settings_ui/settings_ui.js b/chrome/browser/resources/settings/settings_ui/settings_ui.js index 3f6fcb1..1b53667 100644 --- a/chrome/browser/resources/settings/settings_ui/settings_ui.js +++ b/chrome/browser/resources/settings/settings_ui/settings_ui.js
@@ -120,6 +120,8 @@ loadTimeData.getString('networkListItemConnectingTo'), networkListItemInitializing: loadTimeData.getString('networkListItemInitializing'), + networkListItemScanning: + loadTimeData.getString('networkListItemScanning'), networkListItemNotConnected: loadTimeData.getString('networkListItemNotConnected'), networkListItemNoNetwork:
diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc index fe25d28..e691ebb 100644 --- a/chrome/browser/signin/account_consistency_mode_manager.cc +++ b/chrome/browser/signin/account_consistency_mode_manager.cc
@@ -22,7 +22,7 @@ // Preference indicating that the Dice migration should happen at the next // Chrome startup. const char kDiceMigrationOnStartupPref[] = - "signin.AccountReconcilor.kDiceMigrationOnStartup"; + "signin.AccountReconcilor.kDiceMigrationOnStartup2"; const char kDiceMigrationStatusHistogram[] = "Signin.DiceMigrationStatus";
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc index 93a4f56..9f96bec 100644 --- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc +++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc
@@ -11,9 +11,12 @@ #include "base/macros.h" #include "base/memory/ptr_util.h" -#include "components/signin/core/browser/profile_management_switches.h" +#include "base/metrics/histogram_macros.h" +#include "components/pref_registry/pref_registry_syncable.h" +#include "components/prefs/pref_service.h" #include "components/signin/core/browser/signin_client.h" #include "components/signin/core/browser/signin_metrics.h" +#include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/webdata/token_web_data.h" #include "components/webdata/common/web_data_service_base.h" #include "google_apis/gaia/gaia_auth_fetcher.h" @@ -28,6 +31,21 @@ const char kAccountIdPrefix[] = "AccountId-"; const size_t kAccountIdPrefixLength = 10; +// Enum for the Signin.LoadTokenFromDB histogram. +// Do not modify, or add or delete other than directly before +// NUM_LOAD_TOKEN_FROM_DB_STATUS. +enum class LoadTokenFromDBStatus { + // Token was loaded. + TOKEN_LOADED = 0, + // Token was revoked as part of Dice migration. + TOKEN_REVOKED_DICE_MIGRATION, + // Token was revoked because it is a secondary account and account consistency + // is disabled. + TOKEN_REVOKED_SECONDARY_ACCOUNT, + + NUM_LOAD_TOKEN_FROM_DB_STATUS +}; + std::string ApplyAccountIdPrefix(const std::string& account_id) { return kAccountIdPrefix + account_id; } @@ -61,6 +79,42 @@ return OAuth2TokenServiceDelegate::LOAD_CREDENTIALS_UNKNOWN; } +// Returns whether the token service should be migrated to Dice. +// Migration can happen if the following conditions are met: +// - Token service Dice migration is not already done, +// - AccountTrackerService migration is done, +// - All accounts in the AccountTrackerService are valid, +// - Account consistency is DiceMigration or greater. +// TODO(droger): Remove this code once Dice is fully enabled. +bool ShouldMigrateToDice(signin::AccountConsistencyMethod account_consistency, + PrefService* prefs, + AccountTrackerService* account_tracker, + const std::map<std::string, std::string>& db_tokens) { + AccountTrackerService::AccountIdMigrationState migration_state = + account_tracker->GetMigrationState(); + if ((account_consistency == signin::AccountConsistencyMethod::kMirror) || + !signin::DiceMethodGreaterOrEqual( + account_consistency, + signin::AccountConsistencyMethod::kDiceMigration) || + (migration_state != AccountTrackerService::MIGRATION_DONE) || + prefs->GetBoolean(prefs::kTokenServiceDiceCompatible)) { + return false; + } + + // Do not migrate if some accounts are not valid. + for (std::map<std::string, std::string>::const_iterator iter = + db_tokens.begin(); + iter != db_tokens.end(); ++iter) { + const std::string& prefixed_account_id = iter->first; + std::string account_id = RemoveAccountIdPrefix(prefixed_account_id); + AccountInfo account_info = account_tracker->GetAccountInfo(account_id); + if (!account_info.IsValid()) { + return false; + } + } + return true; +} + } // namespace // This class sends a request to GAIA to revoke the given refresh token from @@ -151,17 +205,20 @@ MutableProfileOAuth2TokenServiceDelegate( SigninClient* client, SigninErrorController* signin_error_controller, - AccountTrackerService* account_tracker_service) + AccountTrackerService* account_tracker_service, + signin::AccountConsistencyMethod account_consistency) : web_data_service_request_(0), load_credentials_state_(LOAD_CREDENTIALS_NOT_STARTED), backoff_entry_(&backoff_policy_), backoff_error_(GoogleServiceAuthError::NONE), client_(client), signin_error_controller_(signin_error_controller), - account_tracker_service_(account_tracker_service) { + account_tracker_service_(account_tracker_service), + account_consistency_(account_consistency) { VLOG(1) << "MutablePO2TS::MutablePO2TS"; DCHECK(client); DCHECK(signin_error_controller); + DCHECK(account_tracker_service_); // It's okay to fill the backoff policy after being used in construction. backoff_policy_.num_errors_to_ignore = 0; backoff_policy_.initial_delay_ms = 1000; @@ -180,6 +237,12 @@ net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); } +// static +void MutableProfileOAuth2TokenServiceDelegate::RegisterProfilePrefs( + user_prefs::PrefRegistrySyncable* registry) { + registry->RegisterBooleanPref(prefs::kTokenServiceDiceCompatible, false); +} + OAuth2AccessTokenFetcher* MutableProfileOAuth2TokenServiceDelegate::CreateAccessTokenFetcher( const std::string& account_id, @@ -282,7 +345,10 @@ } load_credentials_state_ = LOAD_CREDENTIALS_IN_PROGRESS; - if (primary_account_id.empty() && !signin::IsDicePrepareMigrationEnabled()) { + if (primary_account_id.empty() && + !signin::DiceMethodGreaterOrEqual( + account_consistency_, + signin::AccountConsistencyMethod::kDicePrepareMigration)) { load_credentials_state_ = LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS; FireRefreshTokensLoaded(); return; @@ -343,7 +409,9 @@ // map. The entry could be missing if there is a corruption in the token DB // while this profile is connected to an account. DCHECK(!loading_primary_account_id_.empty() || - signin::IsDicePrepareMigrationEnabled()); + signin::DiceMethodGreaterOrEqual( + account_consistency_, + signin::AccountConsistencyMethod::kDicePrepareMigration)); if (!loading_primary_account_id_.empty() && refresh_tokens_.count(loading_primary_account_id_) == 0) { if (load_credentials_state_ == LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS) { @@ -371,6 +439,9 @@ void MutableProfileOAuth2TokenServiceDelegate::LoadAllCredentialsIntoMemory( const std::map<std::string, std::string>& db_tokens) { std::string old_login_token; + bool migrate_to_dice = + ShouldMigrateToDice(account_consistency_, client_->GetPrefs(), + account_tracker_service_, db_tokens); { ScopedBatchChange batch(this); @@ -399,47 +470,85 @@ DCHECK(!refresh_token.empty()); std::string account_id = RemoveAccountIdPrefix(prefixed_account_id); - if (migration_state == AccountTrackerService::MIGRATION_IN_PROGRESS) { - // Migrate to gaia-ids. - AccountInfo account_info = - account_tracker_service_->FindAccountInfoByEmail(account_id); - // |account_info.gaia| could be empty if |account_id| is already gaia - // id. This could happen if the chrome was closed in the middle of - // migration. - if (!account_info.gaia.empty()) { - ClearPersistedCredentials(account_id); - PersistCredentials(account_info.gaia, refresh_token); - account_id = account_info.gaia; + switch (migration_state) { + case AccountTrackerService::MIGRATION_IN_PROGRESS: { + // Migrate to gaia-ids. + AccountInfo account_info = + account_tracker_service_->FindAccountInfoByEmail(account_id); + // |account_info.gaia| could be empty if |account_id| is already + // gaia id. This could happen if the chrome was closed in the middle + // of migration. + if (!account_info.gaia.empty()) { + ClearPersistedCredentials(account_id); + PersistCredentials(account_info.gaia, refresh_token); + account_id = account_info.gaia; + } + + // Skip duplicate accounts, this could happen if migration was + // crashed in the middle. + if (refresh_tokens_.count(account_id) != 0) + continue; + break; } - - // Skip duplicate accounts, this could happen if migration was - // crashed in the middle. - if (refresh_tokens_.count(account_id) != 0) - continue; - } - - // If the account_id is an email address, then canonicalize it. This - // is to support legacy account_ids, and will not be needed after - // switching to gaia-ids. - if (account_id.find('@') != std::string::npos) { - // If the canonical account id is not the same as the loaded - // account id, make sure not to overwrite a refresh token from - // a canonical version. If no canonical version was loaded, then - // re-persist this refresh token with the canonical account id. - std::string canon_account_id = gaia::CanonicalizeEmail(account_id); - if (canon_account_id != account_id) { - ClearPersistedCredentials(account_id); - if (db_tokens.count(ApplyAccountIdPrefix(canon_account_id)) == 0) - PersistCredentials(canon_account_id, refresh_token); - } - - account_id = canon_account_id; + case AccountTrackerService::MIGRATION_NOT_STARTED: + // If the account_id is an email address, then canonicalize it. This + // is to support legacy account_ids, and will not be needed after + // switching to gaia-ids. + if (account_id.find('@') != std::string::npos) { + // If the canonical account id is not the same as the loaded + // account id, make sure not to overwrite a refresh token from + // a canonical version. If no canonical version was loaded, then + // re-persist this refresh token with the canonical account id. + std::string canon_account_id = + gaia::CanonicalizeEmail(account_id); + if (canon_account_id != account_id) { + ClearPersistedCredentials(account_id); + if (db_tokens.count(ApplyAccountIdPrefix(canon_account_id)) == + 0) + PersistCredentials(canon_account_id, refresh_token); + } + account_id = canon_account_id; + } + break; + case AccountTrackerService::MIGRATION_DONE: + DCHECK_EQ(std::string::npos, account_id.find('@')); + break; + case AccountTrackerService::NUM_MIGRATION_STATES: + NOTREACHED(); + break; } // Only load secondary accounts when account consistency is enabled. - if (account_id == loading_primary_account_id_ || - signin::IsDicePrepareMigrationEnabled() || - signin::IsAccountConsistencyMirrorEnabled()) { + bool load_account = + (account_id == loading_primary_account_id_) || + (account_consistency_ == + signin::AccountConsistencyMethod::kMirror) || + signin::DiceMethodGreaterOrEqual( + account_consistency_, + signin::AccountConsistencyMethod::kDicePrepareMigration); + LoadTokenFromDBStatus load_token_status = + load_account + ? LoadTokenFromDBStatus::TOKEN_LOADED + : LoadTokenFromDBStatus::TOKEN_REVOKED_SECONDARY_ACCOUNT; + + if (migrate_to_dice) { + // Revoke old hosted domain accounts as part of Dice migration. + AccountInfo account_info = + account_tracker_service_->GetAccountInfo(account_id); + DCHECK(account_info.IsValid()); + if (account_info.hosted_domain != + AccountTrackerService::kNoHostedDomainFound) { + load_account = false; + load_token_status = + LoadTokenFromDBStatus::TOKEN_REVOKED_DICE_MIGRATION; + } + } + + UMA_HISTOGRAM_ENUMERATION( + "Signin.LoadTokenFromDB", load_token_status, + LoadTokenFromDBStatus::NUM_LOAD_TOKEN_FROM_DB_STATUS); + + if (load_account) { refresh_tokens_[account_id].reset(new AccountStatus( signin_error_controller_, account_id, refresh_token)); FireRefreshTokenAvailable(account_id); @@ -457,6 +566,9 @@ UpdateCredentials(loading_primary_account_id_, old_login_token); } } + + if (migrate_to_dice) + client_->GetPrefs()->SetBoolean(prefs::kTokenServiceDiceCompatible, true); } void MutableProfileOAuth2TokenServiceDelegate::UpdateCredentials(
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h index bc597ee..09988580c 100644 --- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h +++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h
@@ -12,6 +12,7 @@ #include "base/macros.h" #include "base/threading/thread_checker.h" #include "components/signin/core/browser/account_tracker_service.h" +#include "components/signin/core/browser/profile_management_switches.h" #include "components/signin/core/browser/profile_oauth2_token_service.h" #include "components/signin/core/browser/signin_error_controller.h" #include "components/webdata/common/web_data_service_base.h" @@ -19,6 +20,10 @@ #include "net/base/backoff_entry.h" #include "net/base/network_change_notifier.h" +namespace user_prefs { +class PrefRegistrySyncable; +} + class MutableProfileOAuth2TokenServiceDelegate : public OAuth2TokenServiceDelegate, public WebDataServiceConsumer, @@ -27,9 +32,12 @@ MutableProfileOAuth2TokenServiceDelegate( SigninClient* client, SigninErrorController* signin_error_controller, - AccountTrackerService* account_tracker_service); + AccountTrackerService* account_tracker_service, + signin::AccountConsistencyMethod account_consistency); ~MutableProfileOAuth2TokenServiceDelegate() override; + static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); + // OAuth2TokenServiceDelegate overrides. OAuth2AccessTokenFetcher* CreateAccessTokenFetcher( const std::string& account_id, @@ -176,6 +184,7 @@ SigninClient* client_; SigninErrorController* signin_error_controller_; AccountTrackerService* account_tracker_service_; + signin::AccountConsistencyMethod account_consistency_; DISALLOW_COPY_AND_ASSIGN(MutableProfileOAuth2TokenServiceDelegate); };
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc index 82db7e4..b3d098b 100644 --- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc +++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc
@@ -15,18 +15,18 @@ #include "base/run_loop.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "build/buildflag.h" #include "components/os_crypt/os_crypt_mocker.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/scoped_user_pref_update.h" -#include "components/prefs/testing_pref_service.h" #include "components/signin/core/browser/profile_management_switches.h" #include "components/signin/core/browser/profile_oauth2_token_service.h" -#include "components/signin/core/browser/scoped_account_consistency.h" #include "components/signin/core/browser/signin_buildflags.h" #include "components/signin/core/browser/signin_error_controller.h" #include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/test_signin_client.h" #include "components/signin/core/browser/webdata/token_web_data.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" #include "google_apis/gaia/gaia_constants.h" #include "google_apis/gaia/gaia_urls.h" #include "google_apis/gaia/google_service_auth_error.h" @@ -41,6 +41,34 @@ static const char kLSOService[] = "lso"; static const char kEmail[] = "user@gmail.com"; +namespace { + +#if BUILDFLAG(ENABLE_DICE_SUPPORT) +// Create test account info. +AccountInfo CreateTestAccountInfo(const std::string& name, + bool is_hosted_domain, + bool is_valid) { + AccountInfo account_info; + account_info.account_id = name; + account_info.gaia = name; + account_info.email = name + "@email.com"; + account_info.full_name = "name"; + account_info.given_name = "name"; + if (is_valid) { + account_info.hosted_domain = + is_hosted_domain ? "example.com" + : AccountTrackerService::kNoHostedDomainFound; + } + account_info.locale = "en"; + account_info.picture_url = "https://example.com"; + account_info.is_child_account = false; + EXPECT_EQ(is_valid, account_info.IsValid()); + return account_info; +} +#endif + +} // namespace + class MutableProfileOAuth2TokenServiceDelegateTest : public testing::Test, public OAuth2AccessTokenConsumer, @@ -66,6 +94,8 @@ factory_.SetFakeResponse(GaiaUrls::GetInstance()->oauth2_revoke_url(), "", net::HTTP_OK, net::URLRequestStatus::SUCCESS); + MutableProfileOAuth2TokenServiceDelegate::RegisterProfilePrefs( + pref_service_.registry()); pref_service_.registry()->RegisterListPref( AccountTrackerService::kAccountInfoPref); pref_service_.registry()->RegisterIntegerPref( @@ -76,11 +106,6 @@ base::ThreadTaskRunnerHandle::Get())); client_->LoadTokenDatabase(); account_tracker_service_.Initialize(client_.get()); - oauth2_service_delegate_.reset(new MutableProfileOAuth2TokenServiceDelegate( - client_.get(), &signin_error_controller_, &account_tracker_service_)); - // Make sure PO2TS has a chance to load itself before continuing. - base::RunLoop().RunUntilIdle(); - oauth2_service_delegate_->AddObserver(this); } void TearDown() override { @@ -89,6 +114,16 @@ OSCryptMocker::TearDown(); } + void CreateOAuth2ServiceDelegate( + signin::AccountConsistencyMethod account_consistency) { + oauth2_service_delegate_.reset(new MutableProfileOAuth2TokenServiceDelegate( + client_.get(), &signin_error_controller_, &account_tracker_service_, + account_consistency)); + // Make sure PO2TS has a chance to load itself before continuing. + base::RunLoop().RunUntilIdle(); + oauth2_service_delegate_->AddObserver(this); + } + void AddAuthTokenManually(const std::string& service, const std::string& value) { scoped_refptr<TokenWebData> token_web_data = client_->GetDatabase(); @@ -164,7 +199,7 @@ oauth2_service_delegate_; TestingOAuth2TokenServiceConsumer consumer_; SigninErrorController signin_error_controller_; - TestingPrefServiceSimple pref_service_; + sync_preferences::TestingPrefServiceSyncable pref_service_; AccountTrackerService account_tracker_service_; int access_token_success_count_; int access_token_failure_count_; @@ -177,7 +212,8 @@ }; TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, PersistenceDBUpgrade) { - std::string main_account_id(kEmail); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); + std::string main_account_id("account_id"); std::string main_refresh_token("old_refresh_token"); // Populate DB with legacy tokens. @@ -185,7 +221,6 @@ AddAuthTokenManually(kLSOService, "lsoToken"); AddAuthTokenManually(GaiaConstants::kGaiaOAuth2LoginRefreshToken, main_refresh_token); - signin::ScopedAccountConsistencyMirror scoped_mirror; // Force LoadCredentials. oauth2_service_delegate_->LoadCredentials(main_account_id); @@ -248,6 +283,7 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, PersistenceRevokeCredentials) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); std::string account_id_1 = "account_id_1"; std::string refresh_token_1 = "refresh_token_1"; std::string account_id_2 = "account_id_2"; @@ -287,6 +323,7 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, LoadCredentialsStateEmptyPrimaryAccountId) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); // Ensure DB is clean. oauth2_service_delegate_->RevokeAllCredentials(); @@ -299,7 +336,7 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, PersistenceLoadCredentials) { - signin::ScopedAccountConsistencyMirror scoped_mirror; + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); // Ensure DB is clean. oauth2_service_delegate_->RevokeAllCredentials(); @@ -357,9 +394,10 @@ } #if BUILDFLAG(ENABLE_DICE_SUPPORT) + TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, PersistenceLoadCredentialsEmptyPrimaryAccountId_DiceEnabled) { - signin::ScopedAccountConsistencyDice scoped_dice; + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDice); // Ensure DB is clean. oauth2_service_delegate_->RevokeAllCredentials(); @@ -413,12 +451,198 @@ EXPECT_EQ(1, end_batch_changes_); ResetObserverCounts(); } + +// Tests that Dice migration does not happen if an account is invalid. In +// particular, no hosted domain tokens are revoked. +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, + DiceNoMigrationOnInvalidAccount) { + ASSERT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDiceMigration); + oauth2_service_delegate_->RevokeAllCredentials(); + + // Add account info to the account tracker. + AccountInfo primary_account = CreateTestAccountInfo( + "primary_account", true /* is_hosted_domain*/, true /* is_valid*/); + AccountInfo secondary_account = CreateTestAccountInfo( + "secondary_account", false /* is_hosted_domain*/, false /* is_valid*/); + account_tracker_service_.SeedAccountInfo(primary_account); + account_tracker_service_.SeedAccountInfo(secondary_account); + + ResetObserverCounts(); + AddAuthTokenManually("AccountId-" + primary_account.account_id, + "refresh_token"); + AddAuthTokenManually("AccountId-" + secondary_account.account_id, + "refresh_token"); + oauth2_service_delegate_->LoadCredentials(primary_account.account_id); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(1, tokens_loaded_count_); + EXPECT_EQ(2, token_available_count_); + EXPECT_EQ(0, token_revoked_count_); + EXPECT_EQ(1, start_batch_changes_); + EXPECT_EQ(1, end_batch_changes_); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + primary_account.account_id)); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + secondary_account.account_id)); + EXPECT_EQ(OAuth2TokenServiceDelegate::LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS, + oauth2_service_delegate_->GetLoadCredentialsState()); + + EXPECT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); +} + +// Tests that Dice migration does not happen in "PrepareMigration" state. +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, DiceMigrationNotEnabled) { + ASSERT_EQ(AccountTrackerService::MIGRATION_DONE, + account_tracker_service_.GetMigrationState()); + ASSERT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); + CreateOAuth2ServiceDelegate( + signin::AccountConsistencyMethod::kDicePrepareMigration); + oauth2_service_delegate_->RevokeAllCredentials(); + + // Add account info to the account tracker. + AccountInfo primary_account = CreateTestAccountInfo( + "primary_account", false /* is_hosted_domain*/, true /* is_valid*/); + account_tracker_service_.SeedAccountInfo(primary_account); + + ResetObserverCounts(); + AddAuthTokenManually("AccountId-" + primary_account.account_id, + "refresh_token"); + oauth2_service_delegate_->LoadCredentials(primary_account.account_id); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(1, tokens_loaded_count_); + EXPECT_EQ(1, token_available_count_); + EXPECT_EQ(0, token_revoked_count_); + EXPECT_EQ(1, start_batch_changes_); + EXPECT_EQ(1, end_batch_changes_); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + primary_account.account_id)); + EXPECT_EQ(OAuth2TokenServiceDelegate::LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS, + oauth2_service_delegate_->GetLoadCredentialsState()); + + EXPECT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); +} + +// Tests that the migration happened after loading consummer accounts. +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, + DiceMigrationConsummerAccounts) { + ASSERT_EQ(AccountTrackerService::MIGRATION_DONE, + account_tracker_service_.GetMigrationState()); + ASSERT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDiceMigration); + oauth2_service_delegate_->RevokeAllCredentials(); + + // Add account info to the account tracker. + AccountInfo primary_account = CreateTestAccountInfo( + "primary_account", false /* is_hosted_domain*/, true /* is_valid*/); + AccountInfo secondary_account = CreateTestAccountInfo( + "secondary_account", false /* is_hosted_domain*/, true /* is_valid*/); + account_tracker_service_.SeedAccountInfo(primary_account); + account_tracker_service_.SeedAccountInfo(secondary_account); + + ResetObserverCounts(); + AddAuthTokenManually("AccountId-" + primary_account.account_id, + "refresh_token"); + AddAuthTokenManually("AccountId-" + secondary_account.account_id, + "refresh_token"); + oauth2_service_delegate_->LoadCredentials(primary_account.account_id); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(1, tokens_loaded_count_); + EXPECT_EQ(2, token_available_count_); + EXPECT_EQ(0, token_revoked_count_); + EXPECT_EQ(1, start_batch_changes_); + EXPECT_EQ(1, end_batch_changes_); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + primary_account.account_id)); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + secondary_account.account_id)); + EXPECT_EQ(OAuth2TokenServiceDelegate::LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS, + oauth2_service_delegate_->GetLoadCredentialsState()); + + EXPECT_TRUE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); +} + +// Tests that the migration revokes the hosted domain tokens. +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, + DiceMigrationHostedDomainAccounts) { + ASSERT_EQ(AccountTrackerService::MIGRATION_DONE, + account_tracker_service_.GetMigrationState()); + ASSERT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDiceMigration); + oauth2_service_delegate_->RevokeAllCredentials(); + + // Add account info to the account tracker. + AccountInfo primary_account = CreateTestAccountInfo( + "primary_account", false /* is_hosted_domain*/, true /* is_valid*/); + AccountInfo secondary_account = CreateTestAccountInfo( + "secondary_account", true /* is_hosted_domain*/, true /* is_valid*/); + account_tracker_service_.SeedAccountInfo(primary_account); + account_tracker_service_.SeedAccountInfo(secondary_account); + + ResetObserverCounts(); + AddAuthTokenManually("AccountId-" + primary_account.account_id, + "refresh_token"); + AddAuthTokenManually("AccountId-" + secondary_account.account_id, + "refresh_token"); + oauth2_service_delegate_->LoadCredentials(primary_account.account_id); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(1, tokens_loaded_count_); + EXPECT_EQ(1, token_available_count_); + EXPECT_EQ(1, token_revoked_count_); + EXPECT_EQ(1, start_batch_changes_); + EXPECT_EQ(1, end_batch_changes_); + EXPECT_TRUE(oauth2_service_delegate_->RefreshTokenIsAvailable( + primary_account.account_id)); + EXPECT_EQ(OAuth2TokenServiceDelegate::LOAD_CREDENTIALS_FINISHED_WITH_SUCCESS, + oauth2_service_delegate_->GetLoadCredentialsState()); + + EXPECT_TRUE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); +} + +// Tests that the migration can revoke the primary token too. +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, + DiceMigrationHostedDomainPrimaryAccount) { + ASSERT_EQ(AccountTrackerService::MIGRATION_DONE, + account_tracker_service_.GetMigrationState()); + ASSERT_FALSE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDiceMigration); + oauth2_service_delegate_->RevokeAllCredentials(); + + // Add account info to the account tracker. + AccountInfo primary_account = CreateTestAccountInfo( + "primary_account", true /* is_hosted_domain*/, true /* is_valid*/); + account_tracker_service_.SeedAccountInfo(primary_account); + + ResetObserverCounts(); + AddAuthTokenManually("AccountId-" + primary_account.account_id, + "refresh_token"); + oauth2_service_delegate_->LoadCredentials(primary_account.account_id); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(1, tokens_loaded_count_); + EXPECT_EQ(0, token_available_count_); + EXPECT_EQ(1, token_revoked_count_); + EXPECT_EQ(1, start_batch_changes_); + EXPECT_EQ(1, end_batch_changes_); + EXPECT_FALSE(oauth2_service_delegate_->RefreshTokenIsAvailable( + primary_account.account_id)); + EXPECT_EQ(OAuth2TokenServiceDelegate:: + LOAD_CREDENTIALS_FINISHED_WITH_NO_TOKEN_FOR_PRIMARY_ACCOUNT, + oauth2_service_delegate_->GetLoadCredentialsState()); + + EXPECT_TRUE(pref_service_.GetBoolean(prefs::kTokenServiceDiceCompatible)); +} + #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) // Tests that calling UpdateCredentials revokes the old token, without sending // the notification. TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, RevokeOnUpdate) { // Add a token. + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); ASSERT_TRUE(oauth2_service_delegate_->server_revokes_.empty()); oauth2_service_delegate_->UpdateCredentials("account_id", "refresh_token"); EXPECT_TRUE(oauth2_service_delegate_->server_revokes_.empty()); @@ -449,6 +673,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, PersistenceNotifications) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); oauth2_service_delegate_->UpdateCredentials("account_id", "refresh_token"); ExpectOneTokenAvailableNotification(); @@ -469,6 +694,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, GetAccounts) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); EXPECT_TRUE(oauth2_service_delegate_->GetAccounts().empty()); oauth2_service_delegate_->UpdateCredentials("account_id1", "refresh_token1"); oauth2_service_delegate_->UpdateCredentials("account_id2", "refresh_token2"); @@ -483,6 +709,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, FetchPersistentError) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); oauth2_service_delegate_->UpdateCredentials(kEmail, "refreshToken"); EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(), signin_error_controller_.auth_error()); @@ -511,6 +738,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, RetryBackoff) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); oauth2_service_delegate_->UpdateCredentials(kEmail, "refreshToken"); EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(), signin_error_controller_.auth_error()); @@ -554,6 +782,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, ResetBackoff) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); oauth2_service_delegate_->UpdateCredentials(kEmail, "refreshToken"); EXPECT_EQ(GoogleServiceAuthError::AuthErrorNone(), signin_error_controller_.auth_error()); @@ -594,12 +823,14 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, CanonicalizeAccountId) { + pref_service_.SetInteger(prefs::kAccountIdMigrationState, + AccountTrackerService::MIGRATION_NOT_STARTED); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); std::map<std::string, std::string> tokens; tokens["AccountId-user@gmail.com"] = "refresh_token"; tokens["AccountId-Foo.Bar@gmail.com"] = "refresh_token"; tokens["AccountId-12345"] = "refresh_token"; - signin::ScopedAccountConsistencyMirror scoped_mirror; oauth2_service_delegate_->LoadAllCredentialsIntoMemory(tokens); EXPECT_TRUE( @@ -611,11 +842,13 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, CanonAndNonCanonAccountId) { + pref_service_.SetInteger(prefs::kAccountIdMigrationState, + AccountTrackerService::MIGRATION_NOT_STARTED); + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); std::map<std::string, std::string> tokens; tokens["AccountId-Foo.Bar@gmail.com"] = "bad_token"; tokens["AccountId-foobar@gmail.com"] = "good_token"; - signin::ScopedAccountConsistencyMirror scoped_mirror; oauth2_service_delegate_->LoadAllCredentialsIntoMemory(tokens); EXPECT_EQ(1u, oauth2_service_delegate_->GetAccounts().size()); @@ -627,7 +860,7 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, ShutdownService) { - signin::ScopedAccountConsistencyMirror scoped_mirror; + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); EXPECT_TRUE(oauth2_service_delegate_->GetAccounts().empty()); oauth2_service_delegate_->UpdateCredentials("account_id1", "refresh_token1"); oauth2_service_delegate_->UpdateCredentials("account_id2", "refresh_token2"); @@ -644,12 +877,12 @@ } TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, GaiaIdMigration) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); if (account_tracker_service_.GetMigrationState() != AccountTrackerService::MIGRATION_NOT_STARTED) { std::string email = "foo@gmail.com"; std::string gaia_id = "foo's gaia id"; - signin::ScopedAccountConsistencyMirror scoped_mirror; pref_service_.SetInteger(prefs::kAccountIdMigrationState, AccountTrackerService::MIGRATION_NOT_STARTED); @@ -700,6 +933,7 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, GaiaIdMigrationCrashInTheMiddle) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); if (account_tracker_service_.GetMigrationState() != AccountTrackerService::MIGRATION_NOT_STARTED) { std::string email1 = "foo@gmail.com"; @@ -707,7 +941,6 @@ std::string email2 = "bar@gmail.com"; std::string gaia_id2 = "bar's gaia id"; - signin::ScopedAccountConsistencyMirror scoped_mirror; pref_service_.SetInteger(prefs::kAccountIdMigrationState, AccountTrackerService::MIGRATION_NOT_STARTED); @@ -769,6 +1002,7 @@ TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, LoadPrimaryAccountOnlyWhenAccountConsistencyDisabled) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kDisabled); std::string primary_account = "primaryaccount"; std::string secondary_account = "secondaryaccount"; @@ -788,12 +1022,18 @@ oauth2_service_delegate_->RefreshTokenIsAvailable(primary_account)); EXPECT_FALSE( oauth2_service_delegate_->RefreshTokenIsAvailable(secondary_account)); +} + +TEST_F(MutableProfileOAuth2TokenServiceDelegateTest, + LoadSecondaryAccountsWhenMirrorEnabled) { + CreateOAuth2ServiceDelegate(signin::AccountConsistencyMethod::kMirror); + std::string primary_account = "primaryaccount"; + std::string secondary_account = "secondaryaccount"; oauth2_service_delegate_->RevokeAllCredentials(); ResetObserverCounts(); AddAuthTokenManually("AccountId-" + primary_account, "refresh_token"); AddAuthTokenManually("AccountId-" + secondary_account, "refresh_token"); - signin::ScopedAccountConsistencyMirror scoped_mirror; oauth2_service_delegate_->LoadCredentials(primary_account); base::RunLoop().RunUntilIdle();
diff --git a/chrome/browser/signin/profile_oauth2_token_service_factory.cc b/chrome/browser/signin/profile_oauth2_token_service_factory.cc index 3d34464d..c52d306 100644 --- a/chrome/browser/signin/profile_oauth2_token_service_factory.cc +++ b/chrome/browser/signin/profile_oauth2_token_service_factory.cc
@@ -6,6 +6,7 @@ #include "build/build_config.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/signin/account_consistency_mode_manager.h" #include "chrome/browser/signin/account_tracker_service_factory.h" #include "chrome/browser/signin/chrome_signin_client_factory.h" #include "chrome/browser/signin/signin_error_controller_factory.h" @@ -51,6 +52,9 @@ void ProfileOAuth2TokenServiceFactory::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { ProfileOAuth2TokenService::RegisterProfilePrefs(registry); +#if !defined(OS_ANDROID) + MutableProfileOAuth2TokenServiceDelegate::RegisterProfilePrefs(registry); +#endif } KeyedService* ProfileOAuth2TokenServiceFactory::BuildServiceInstanceFor( @@ -63,7 +67,8 @@ auto delegate = std::make_unique<MutableProfileOAuth2TokenServiceDelegate>( ChromeSigninClientFactory::GetInstance()->GetForProfile(profile), SigninErrorControllerFactory::GetInstance()->GetForProfile(profile), - AccountTrackerServiceFactory::GetInstance()->GetForProfile(profile)); + AccountTrackerServiceFactory::GetInstance()->GetForProfile(profile), + AccountConsistencyModeManager::GetMethodForProfile(profile)); #endif ProfileOAuth2TokenService* service = new ProfileOAuth2TokenService(std::move(delegate));
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 4b40dbd..b6c22d7a 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
@@ -274,7 +274,6 @@ 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. - ASSERT_TRUE(!bridge->change_processor()->IsTrackingMetadata()); while (!bridge->change_processor()->IsTrackingMetadata()) base::RunLoop().RunUntilIdle(); event_service->RecordUserEvent(consent1);
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc index 0ca9fd7b..dcbb4d7 100644 --- a/chrome/browser/sync/test/integration/sync_test.cc +++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -108,7 +108,6 @@ const char kPasswordFileForTest[] = "password-file-for-test"; const char kSyncUserForTest[] = "sync-user-for-test"; const char kSyncPasswordForTest[] = "sync-password-for-test"; -const char kSyncServerCommandLine[] = "sync-server-command-line"; } namespace { @@ -922,39 +921,27 @@ // tests to explicitly set this value in each test class if needed. if (server_type_ == SERVER_TYPE_UNDECIDED) { base::CommandLine* cl = base::CommandLine::ForCurrentProcess(); - if (!cl->HasSwitch(switches::kSyncServiceURL) && - !cl->HasSwitch(switches::kSyncServerCommandLine)) { - // If neither a sync server URL nor a sync server command line is - // provided, start up a local sync test server and point Chrome - // to its URL. This is the most common configuration, and the only - // one that makes sense for most developers. FakeServer is the - // current solution but some scenarios are only supported by the + if (!cl->HasSwitch(switches::kSyncServiceURL)) { + // If no sync server URL is provided, start up a local sync test server + // and point Chrome to its URL. This is the most common configuration, + // and the only one that makes sense for most developers. FakeServer is + // the current solution but some scenarios are only supported by the // legacy python server. switch (test_type_) { case SINGLE_CLIENT: case TWO_CLIENT: server_type_ = IN_PROCESS_FAKE_SERVER; break; - default: + case SINGLE_CLIENT_LEGACY: + case TWO_CLIENT_LEGACY: server_type_ = LOCAL_PYTHON_SERVER; } - } else if (cl->HasSwitch(switches::kSyncServiceURL) && - cl->HasSwitch(switches::kSyncServerCommandLine)) { - // If a sync server URL and a sync server command line are provided, - // start up a local sync server by running the command line. Chrome - // will connect to the server at the URL that was provided. - server_type_ = LOCAL_LIVE_SERVER; - } else if (cl->HasSwitch(switches::kSyncServiceURL) && - !cl->HasSwitch(switches::kSyncServerCommandLine)) { - // If a sync server URL is provided, but not a server command line, - // it is assumed that the server is already running. Chrome will - // automatically connect to it at the URL provided. There is nothing - // to do here. - server_type_ = EXTERNAL_LIVE_SERVER; + DCHECK_NE(server_type_, SERVER_TYPE_UNDECIDED); } else { - // If a sync server command line is provided, but not a server URL, - // we flag an error. - LOG(FATAL) << "Can't figure out how to run a server."; + // If a sync server URL is provided, it is assumed that the server is + // already running. Chrome will automatically connect to it at the URL + // provided. There is nothing to do here. + server_type_ = EXTERNAL_LIVE_SERVER; } } } @@ -968,12 +955,6 @@ if (!SetUpLocalPythonTestServer()) LOG(FATAL) << "Failed to set up local python sync and XMPP servers"; SetupMockGaiaResponses(); - } else if (server_type_ == LOCAL_LIVE_SERVER) { - // Using mock gaia credentials requires the use of a mock XMPP server. - if (username_ == "user@gmail.com" && !SetUpLocalPythonTestServer()) - LOG(FATAL) << "Failed to set up local python XMPP server"; - if (!SetUpLocalTestServer()) - LOG(FATAL) << "Failed to set up local test server"; } else if (server_type_ == IN_PROCESS_FAKE_SERVER) { fake_server_ = std::make_unique<fake_server::FakeServer>(); SetupMockGaiaResponses(); @@ -1019,35 +1000,6 @@ return true; } -bool SyncTest::SetUpLocalTestServer() { - base::CommandLine* cl = base::CommandLine::ForCurrentProcess(); - base::CommandLine::StringType server_cmdline_string = - cl->GetSwitchValueNative(switches::kSyncServerCommandLine); - base::CommandLine::StringVector server_cmdline_vector = base::SplitString( - server_cmdline_string, FILE_PATH_LITERAL(" "), - base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - base::CommandLine server_cmdline(server_cmdline_vector); - base::LaunchOptions options; -#if defined(OS_WIN) - options.start_hidden = true; -#endif - test_server_ = base::LaunchProcess(server_cmdline, options); - if (!test_server_.IsValid()) - LOG(ERROR) << "Could not launch local test server."; - - const base::TimeDelta kMaxWaitTime = TestTimeouts::action_max_timeout(); - const int kNumIntervals = 15; - if (WaitForTestServerToStart(kMaxWaitTime, kNumIntervals)) { - DVLOG(1) << "Started local test server at " - << cl->GetSwitchValueASCII(switches::kSyncServiceURL); - return true; - } else { - LOG(ERROR) << "Could not start local test server at " - << cl->GetSwitchValueASCII(switches::kSyncServiceURL); - return false; - } -} - bool SyncTest::TearDownLocalPythonTestServer() { if (!sync_server_.Stop()) { LOG(ERROR) << "Could not stop local python test server."; @@ -1211,12 +1163,6 @@ GetTitle())); } -void SyncTest::TriggerXmppAuthError() { - ASSERT_TRUE(ServerSupportsErrorTriggering()); - std::string path = "chromiumsync/xmppcred"; - ui_test_utils::NavigateToURL(browser(), sync_server_.GetURL(path)); -} - fake_server::FakeServer* SyncTest::GetFakeServer() const { return fake_server_.get(); }
diff --git a/chrome/browser/sync/test/integration/sync_test.h b/chrome/browser/sync/test/integration/sync_test.h index 85592cd3..fbd22670 100644 --- a/chrome/browser/sync/test/integration/sync_test.h +++ b/chrome/browser/sync/test/integration/sync_test.h
@@ -107,9 +107,6 @@ SERVER_TYPE_UNDECIDED, LOCAL_PYTHON_SERVER, // The mock python server that runs locally and is // part of the Chromium checkout. - LOCAL_LIVE_SERVER, // Some other server (maybe the real binary used by - // Google's sync service) that can be started on - // a per-test basis by running a command EXTERNAL_LIVE_SERVER, // A remote server that the test code has no control // over whatsoever; cross your fingers that the // account state is initially clean. @@ -246,10 +243,6 @@ // only if ServerSupportsErrorTriggering() returned true. void TriggerMigrationDoneError(syncer::ModelTypeSet model_types); - // Triggers an XMPP auth error on the server. Note the server will - // stay in this state until shut down. - void TriggerXmppAuthError(); - // Returns the FakeServer being used for the test or null if FakeServer is // not being used. fake_server::FakeServer* GetFakeServer() const; @@ -333,14 +326,9 @@ // Helper method that starts up a sync test server if required. void SetUpTestServerIfRequired(); - // Helper method used to start up a local python test server. Note: We set up - // an XMPP-only python server if |server_type_| is LOCAL_LIVE_SERVER and mock - // gaia credentials are in use. Returns true if successful. - bool SetUpLocalPythonTestServer(); - - // Helper method used to start up a local sync test server. Returns true if + // Helper method used to start up a local python test server. Returns true if // successful. - bool SetUpLocalTestServer(); + bool SetUpLocalPythonTestServer(); // Helper method used to destroy the local python sync test server if one was // created. Returns true if successful.
diff --git a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc index 7934161b..04622bc3 100644 --- a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc
@@ -53,9 +53,7 @@ class TwoClientAppListSyncTest : public SyncTest { public: - TwoClientAppListSyncTest() : SyncTest(TWO_CLIENT_LEGACY) { - DisableVerifier(); - } + TwoClientAppListSyncTest() : SyncTest(TWO_CLIENT) { DisableVerifier(); } ~TwoClientAppListSyncTest() override {}
diff --git a/chrome/browser/sync/test/integration/two_client_arc_package_sync_test.cc b/chrome/browser/sync/test/integration/two_client_arc_package_sync_test.cc index b1f24690..528be3d 100644 --- a/chrome/browser/sync/test/integration/two_client_arc_package_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_arc_package_sync_test.cc
@@ -20,9 +20,7 @@ class TwoClientArcPackageSyncTest : public SyncTest { public: - TwoClientArcPackageSyncTest() : SyncTest(TWO_CLIENT_LEGACY) { - DisableVerifier(); - } + TwoClientArcPackageSyncTest() : SyncTest(TWO_CLIENT) { DisableVerifier(); } ~TwoClientArcPackageSyncTest() override {}
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index be9b478d..cb188fd5 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/chromecast_build.gni") +import("//build/config/compiler/compiler.gni") import("//build/config/crypto.gni") import("//build/config/features.gni") import("//build/config/ui.gni") @@ -894,6 +895,14 @@ allow_circular_includes_from = [] defines = [] + if (is_win) { + # For version_ui.cc: + if (use_lld) { + defines += [ "CHROMIUM_LINKER_NAME=\"lld-link\"" ] + } else { + defines += [ "CHROMIUM_LINKER_NAME=\"link.exe\"" ] + } + } libs = [] configs += [
diff --git a/chrome/browser/ui/autofill/autofill_popup_layout_model.cc b/chrome/browser/ui/autofill/autofill_popup_layout_model.cc index 97edd29..d1923a1 100644 --- a/chrome/browser/ui/autofill/autofill_popup_layout_model.cc +++ b/chrome/browser/ui/autofill/autofill_popup_layout_model.cc
@@ -211,6 +211,9 @@ gfx::ImageSkia AutofillPopupLayoutModel::GetIconImage(size_t index) const { std::vector<autofill::Suggestion> suggestions = delegate_->GetSuggestions(); const base::string16& icon_str = suggestions[index].icon; + if (icon_str.empty()) + return gfx::ImageSkia(); + constexpr int kIconSize = 16; // For http warning message, get icon images from VectorIcon, which is the
diff --git a/chrome/browser/ui/search/local_ntp_browsertest.cc b/chrome/browser/ui/search/local_ntp_browsertest.cc index 10796e8e..9eaa382 100644 --- a/chrome/browser/ui/search/local_ntp_browsertest.cc +++ b/chrome/browser/ui/search/local_ntp_browsertest.cc
@@ -297,8 +297,9 @@ ui_test_utils::NavigateToURL(browser(), download_url); download_observer.WaitForFinished(); - // This should have changed the visible URL, but not the last committed one. - ASSERT_EQ(download_url, active_tab->GetVisibleURL()); + // This should neither have changed the visible URL, nor the last committed + // one. + ASSERT_EQ(GURL(chrome::kChromeUINewTabURL), active_tab->GetVisibleURL()); ASSERT_EQ(GURL(chrome::kChromeUINewTabURL), active_tab->GetLastCommittedURL());
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.cc b/chrome/browser/ui/tab_contents/core_tab_helper.cc index 1c00f19..2072833 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.cc +++ b/chrome/browser/ui/tab_contents/core_tab_helper.cc
@@ -175,17 +175,17 @@ *status_text = l10n_util::GetStringUTF16(IDS_LOAD_STATE_ESTABLISHING_PROXY_TUNNEL); return true; - case net::LOAD_STATE_DOWNLOADING_PROXY_SCRIPT: + case net::LOAD_STATE_DOWNLOADING_PAC_FILE: *status_text = - l10n_util::GetStringUTF16(IDS_LOAD_STATE_DOWNLOADING_PROXY_SCRIPT); + l10n_util::GetStringUTF16(IDS_LOAD_STATE_DOWNLOADING_PAC_FILE); return true; case net::LOAD_STATE_RESOLVING_PROXY_FOR_URL: *status_text = l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_PROXY_FOR_URL); return true; - case net::LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT: - *status_text = l10n_util::GetStringUTF16( - IDS_LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT); + case net::LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE: + *status_text = + l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE); return true; case net::LOAD_STATE_RESOLVING_HOST: *status_text = l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_HOST);
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc index 8182ec3..8dcc110 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -13,6 +13,7 @@ #include "ui/native_theme/native_theme.h" #include "ui/views/background.h" #include "ui/views/border.h" +#include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h" #include "ui/views/controls/separator.h" #include "ui/views/layout/box_layout.h" @@ -31,7 +32,9 @@ // Padding values and dimensions for rows. const int kRowHeight = 28; const int kRowTopBottomPadding = 0; -const int kRowSidePadding = 16; +// Used for padding on sides of rows, as well as minimum spacing between +// items inside of rows. +const int kRowHorizontalSpacing = 16; // Padding values specific to the separator row. const int kSeparatorTopBottomPadding = 4; @@ -65,23 +68,31 @@ controller_->AcceptSuggestion(line_number_); } -void AutofillPopupRowView::SetStyle(bool is_selected) { +void AutofillPopupRowView::SetSelected(bool is_selected) { + if (is_selected == is_selected_) + return; + + is_selected_ = is_selected; + RefreshStyle(); +} + +void AutofillPopupRowView::RefreshStyle() { // Only content rows, not separators, can be highlighted/selected. DCHECK(!is_separator_); SetBackground(views::CreateThemedSolidBackground( - this, is_selected + this, is_selected_ ? ui::NativeTheme::kColorId_ResultsTableSelectedBackground : ui::NativeTheme::kColorId_ResultsTableNormalBackground)); if (text_label_) { - text_label_->SetEnabledColor(is_selected ? text_selected_color_ - : text_color_); + text_label_->SetEnabledColor(is_selected_ ? text_selected_color_ + : text_color_); } if (subtext_label_) { - subtext_label_->SetEnabledColor(is_selected ? subtext_selected_color_ - : subtext_color_); + subtext_label_->SetEnabledColor(is_selected_ ? subtext_selected_color_ + : subtext_color_); } } @@ -107,6 +118,9 @@ } void AutofillPopupRowView::OnNativeThemeChanged(const ui::NativeTheme* theme) { + if (is_separator_) + return; + text_color_ = theme->GetSystemColor( is_warning_ ? ui::NativeTheme::kColorId_ResultsTableNegativeText : ui::NativeTheme::kColorId_ResultsTableNormalText); @@ -118,6 +132,8 @@ ui::NativeTheme::kColorId_ResultsTableNormalDimmedText); subtext_selected_color_ = theme->GetSystemColor( ui::NativeTheme::kColorId_ResultsTableSelectedDimmedText); + + RefreshStyle(); } void AutofillPopupRowView::GetAccessibleNodeData(ui::AXNodeData* node_data) { @@ -139,12 +155,22 @@ auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::kHorizontal, - gfx::Insets(kRowTopBottomPadding, kRowSidePadding))); + gfx::Insets(kRowTopBottomPadding, kRowHorizontalSpacing))); layout->set_cross_axis_alignment( views::BoxLayout::CrossAxisAlignment::CROSS_AXIS_ALIGNMENT_CENTER); layout->set_minimum_cross_axis_size(kRowHeight); + const gfx::ImageSkia icon = + controller_->layout_model().GetIconImage(line_number_); + if (!icon.isNull()) { + auto* image_view = new views::ImageView(); + image_view->SetImage(icon); + image_view->SetBorder( + views::CreateEmptyBorder(0, 0, 0, kRowHorizontalSpacing / 2)); + AddChildView(image_view); + } + // TODO(tmartino): Remove elision, font list, and font color // responsibilities from controller. text_label_ = new views::Label( @@ -154,7 +180,7 @@ AddChildView(text_label_); auto* spacer = new views::View; - spacer->SetPreferredSize(gfx::Size(kRowSidePadding, 1)); + spacer->SetPreferredSize(gfx::Size(kRowHorizontalSpacing, 1)); AddChildView(spacer); layout->SetFlexForView(spacer, /*flex*/ 1); @@ -211,10 +237,10 @@ base::Optional<int> previous_row_selection, base::Optional<int> current_row_selection) { if (previous_row_selection) - rows_[*previous_row_selection]->SetStyle(false); + rows_[*previous_row_selection]->SetSelected(false); if (current_row_selection) - rows_[*current_row_selection]->SetStyle(true); + rows_[*current_row_selection]->SetSelected(true); } void AutofillPopupViewNativeViews::OnSuggestionsChanged() {
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h index 7208b43..8823f71 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.h
@@ -31,7 +31,8 @@ ~AutofillPopupRowView() override {} void AcceptSelection(); - void SetStyle(bool is_selected); + void SetSelected(bool is_selected); + void RefreshStyle(); // views::View: // TODO(tmartino): Consolidate and deprecate code in AutofillPopupBaseView @@ -48,9 +49,10 @@ void CreateContent(); AutofillPopupController* controller_; - int line_number_; - bool is_separator_; - bool is_warning_; + const int line_number_; + bool is_separator_ = false; // overwritten in ctor + bool is_warning_ = false; // overwritten in ctor + bool is_selected_ = false; views::Label* text_label_ = nullptr; views::Label* subtext_label_ = nullptr;
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_views.cc index c5f843e..c1645e3 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_views.cc
@@ -223,9 +223,8 @@ // Draw the Autofill icon, if one exists int row_height = controller_->layout_model().GetRowBounds(index).height(); - if (!controller_->GetSuggestionAt(index).icon.empty()) { - const gfx::ImageSkia image = - controller_->layout_model().GetIconImage(index); + const gfx::ImageSkia image = controller_->layout_model().GetIconImage(index); + if (!image.isNull()) { int icon_y = entry_rect.y() + (row_height - image.height()) / 2; int icon_x_align_left =
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view.cc b/chrome/browser/ui/views/intent_picker_bubble_view.cc index 7d33e99..00df606 100644 --- a/chrome/browser/ui/views/intent_picker_bubble_view.cc +++ b/chrome/browser/ui/views/intent_picker_bubble_view.cc
@@ -306,7 +306,6 @@ : LocationBarBubbleDelegateView(nullptr /* anchor_view */, gfx::Point(), web_contents), - content::WebContentsObserver(web_contents), intent_picker_cb_(intent_picker_cb), selected_app_tag_(0), scroll_view_(nullptr), @@ -338,12 +337,6 @@ AdjustScrollViewVisibleRegion(); } -// If the actual web_contents gets destroyed in the middle of the process we -// should inform the caller about this error. -void IntentPickerBubbleView::WebContentsDestroyed() { - GetWidget()->Close(); -} - void IntentPickerBubbleView::OnKeyEvent(ui::KeyEvent* event) { if (!IsKeyboardCodeArrow(event->key_code()) || event->type() != ui::ET_KEY_RELEASED)
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view.h b/chrome/browser/ui/views/intent_picker_bubble_view.h index 681cbb97..099487de 100644 --- a/chrome/browser/ui/views/intent_picker_bubble_view.h +++ b/chrome/browser/ui/views/intent_picker_bubble_view.h
@@ -57,8 +57,7 @@ // +--------------------------------+ class IntentPickerBubbleView : public LocationBarBubbleDelegateView, - public views::ButtonListener, - public content::WebContentsObserver { + public views::ButtonListener { public: using AppInfo = arc::ArcNavigationThrottle::AppInfo; @@ -119,9 +118,6 @@ // while focusing on the |scroll_view_|. void ArrowButtonPressed(int index); - // content::WebContentsObserver overrides: - void WebContentsDestroyed() override; - // ui::EventHandler overrides: void OnKeyEvent(ui::KeyEvent* event) override;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc index 038220c..eea4e38 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.cc
@@ -57,7 +57,8 @@ content::WebContents* web_contents) : BubbleDialogDelegateView(anchor_view, anchor_view ? views::BubbleBorder::TOP_RIGHT - : views::BubbleBorder::NONE) { + : views::BubbleBorder::NONE), + WebContentsObserver(web_contents) { // Add observer to close the bubble if the fullscreen state changes. if (web_contents) { Browser* browser = chrome::FindBrowserWithWebContents(web_contents); @@ -115,6 +116,16 @@ CloseBubble(); } +void LocationBarBubbleDelegateView::OnVisibilityChanged( + content::Visibility visibility) { + if (visibility == content::Visibility::HIDDEN) + CloseBubble(); +} + +void LocationBarBubbleDelegateView::WebContentsDestroyed() { + CloseBubble(); +} + void LocationBarBubbleDelegateView::AdjustForFullscreen( const gfx::Rect& screen_bounds) { if (GetAnchorView())
diff --git a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h index 7c61f48..482185a 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h
@@ -8,6 +8,7 @@ #include "base/macros.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" +#include "content/public/browser/web_contents_observer.h" #include "ui/views/bubble/bubble_dialog_delegate.h" #include "ui/views/event_monitor.h" @@ -21,7 +22,8 @@ // will automatically close when the browser transitions in or out of fullscreen // mode. class LocationBarBubbleDelegateView : public views::BubbleDialogDelegateView, - public content::NotificationObserver { + public content::NotificationObserver, + public content::WebContentsObserver { public: enum DisplayReason { // The bubble appears as a direct result of a user action (clicking on the @@ -52,6 +54,10 @@ const content::NotificationSource& source, const content::NotificationDetails& details) override; + // content::WebContentsObserver: + void OnVisibilityChanged(content::Visibility visibility) override; + void WebContentsDestroyed() override; + // If the bubble is not anchored to a view, places the bubble in the top right // (left in RTL) of the |screen_bounds| that contain web contents's browser // window. Because the positioning is based on the size of the bubble, this
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view_browsertest.cc b/chrome/browser/ui/views/location_bar/location_bar_view_browsertest.cc index a440ae6..b914870c 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view_browsertest.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view_browsertest.cc
@@ -88,6 +88,29 @@ EXPECT_FALSE(ZoomBubbleView::GetZoomBubble()); } +// Ensure that location bar bubbles close when the webcontents hides. +IN_PROC_BROWSER_TEST_F(LocationBarViewBrowserTest, BubblesCloseOnHide) { + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + zoom::ZoomController* zoom_controller = + zoom::ZoomController::FromWebContents(web_contents); + ZoomView* zoom_view = GetLocationBarView()->zoom_view(); + + ASSERT_TRUE(zoom_view); + EXPECT_FALSE(zoom_view->visible()); + + zoom_controller->SetZoomLevel(content::ZoomFactorToZoomLevel(1.5)); + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(zoom_view->visible()); + EXPECT_TRUE(ZoomBubbleView::GetZoomBubble()); + + chrome::NewTab(browser()); + chrome::SelectNextTab(browser()); + + base::RunLoop().RunUntilIdle(); + EXPECT_FALSE(ZoomBubbleView::GetZoomBubble()); +} + // After AddUrlHandler() is called, requests to this hostname will be mocked // and use specified certificate validation results. This allows tests to mock // Extended Validation (EV) certificate connections.
diff --git a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc index 5ede5137..91d1eef 100644 --- a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc +++ b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
@@ -224,7 +224,6 @@ DisplayReason reason, ImmersiveModeController* immersive_mode_controller) : LocationBarBubbleDelegateView(anchor_view, anchor_point, web_contents), - WebContentsObserver(web_contents), auto_close_duration_(kBubbleCloseDelayDefault), image_button_(nullptr), label_(nullptr), @@ -417,15 +416,6 @@ image_button_->SchedulePaint(); } -void ZoomBubbleView::OnVisibilityChanged(content::Visibility visibility) { - if (visibility == content::Visibility::HIDDEN) - CloseBubble(); -} - -void ZoomBubbleView::WebContentsDestroyed() { - CloseBubble(); -} - void ZoomBubbleView::SetExtensionInfo(const extensions::Extension* extension) { DCHECK(extension); extension_info_.id = extension->id();
diff --git a/chrome/browser/ui/views/location_bar/zoom_bubble_view.h b/chrome/browser/ui/views/location_bar/zoom_bubble_view.h index fb6fca3f..c72acf6 100644 --- a/chrome/browser/ui/views/location_bar/zoom_bubble_view.h +++ b/chrome/browser/ui/views/location_bar/zoom_bubble_view.h
@@ -30,8 +30,7 @@ class ZoomBubbleView : public LocationBarBubbleDelegateView, public views::ButtonListener, public ImmersiveModeController::Observer, - public extensions::IconImage::Observer, - public content::WebContentsObserver { + public extensions::IconImage::Observer { public: // Shows the bubble and automatically closes it after a short time period if // |reason| is AUTOMATIC. @@ -102,10 +101,6 @@ // extensions::IconImage::Observer: void OnExtensionIconImageChanged(extensions::IconImage* /* image */) override; - // content::WebContentsObserver: - void OnVisibilityChanged(content::Visibility visibility) override; - void WebContentsDestroyed() override; - // Sets information about the extension that initiated the zoom change. // Calling this method asserts that the extension |extension| did initiate // the zoom change.
diff --git a/chrome/browser/ui/views/relaunch_notification/relaunch_recommended_bubble_view.cc b/chrome/browser/ui/views/relaunch_notification/relaunch_recommended_bubble_view.cc index ef9a9d39..f2463c9 100644 --- a/chrome/browser/ui/views/relaunch_notification/relaunch_recommended_bubble_view.cc +++ b/chrome/browser/ui/views/relaunch_notification/relaunch_recommended_bubble_view.cc
@@ -35,6 +35,7 @@ #include "ui/views/widget/widget.h" #if defined(OS_MACOSX) +#include "chrome/browser/platform_util.h" #if BUILDFLAG(MAC_VIEWS_BROWSER) #include "chrome/browser/ui/views_mode_controller.h" #endif // BUILDFLAG(MAC_VIEWS_BROWSER) @@ -80,6 +81,14 @@ anchor_button, anchor_point, detection_time, std::move(on_accept)); bubble_view->set_arrow(views::BubbleBorder::TOP_RIGHT); +#if defined(OS_MACOSX) + // Parent the bubble to the browser window when there is no anchor view. + if (!anchor_button) { + bubble_view->set_parent_window( + platform_util::GetViewForWindow(browser->window()->GetNativeWindow())); + } +#endif // defined(OS_MACOSX) + views::Widget* bubble_widget = views::BubbleDialogDelegateView::CreateBubble(bubble_view); bubble_view->ShowForReason(AUTOMATIC);
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc index d3d4635..b140ef5 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -426,10 +426,6 @@ translate::ReportUiAction(translate::ADVANCED_LINK_CLICKED); } -void TranslateBubbleView::WebContentsDestroyed() { - GetWidget()->CloseNow(); -} - void TranslateBubbleView::OnWidgetClosing(views::Widget* widget) { if (GetBubbleFrameView()->close_button_clicked()) { model_->DeclineTranslation(); @@ -448,7 +444,6 @@ translate::TranslateErrors::Type error_type, content::WebContents* web_contents) : LocationBarBubbleDelegateView(anchor_view, anchor_point, web_contents), - WebContentsObserver(web_contents), before_translate_view_(NULL), translating_view_(NULL), after_translate_view_(NULL),
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.h b/chrome/browser/ui/views/translate/translate_bubble_view.h index 2b71181..10c972e 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view.h +++ b/chrome/browser/ui/views/translate/translate_bubble_view.h
@@ -41,8 +41,7 @@ public views::ComboboxListener, public views::LinkListener, public ui::SimpleMenuModel::Delegate, - public views::StyledLabelListener, - public content::WebContentsObserver { + public views::StyledLabelListener { public: // Item IDs for the option button's menu. enum OptionsMenuItem { @@ -106,9 +105,6 @@ const gfx::Range& range, int event_flags) override; - // content::WebContentsObserver method. - void WebContentsDestroyed() override; - // Overridden from views::WidgetObserver: void OnWidgetClosing(views::Widget* widget) override;
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc b/chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc index ac1807d..9427216 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc
@@ -83,8 +83,10 @@ NavigateAndWaitForLanguageDetection(french_url, "fr"); EXPECT_TRUE(TranslateBubbleView::GetCurrentBubble()); - // Close the window without translating. + // Close the window without translating. Spin the runloop to allow + // asynchronous window closure to happen. chrome::CloseWindow(browser()); + base::RunLoop().RunUntilIdle(); EXPECT_FALSE(TranslateBubbleView::GetCurrentBubble()); } @@ -100,9 +102,11 @@ NavigateAndWaitForLanguageDetection(french_url, "fr"); EXPECT_TRUE(TranslateBubbleView::GetCurrentBubble()); - // Close the tab without translating. + // Close the tab without translating. Spin the runloop to allow asynchronous + // window closure to happen. EXPECT_EQ(1, browser()->tab_strip_model()->count()); chrome::CloseWebContents(browser(), current_web_contents, false); + base::RunLoop().RunUntilIdle(); EXPECT_FALSE(TranslateBubbleView::GetCurrentBubble()); }
diff --git a/chrome/browser/ui/views/webshare/webshare_target_picker_view_unittest.cc b/chrome/browser/ui/views/webshare/webshare_target_picker_view_unittest.cc index b6adb488..fc4f53595 100644 --- a/chrome/browser/ui/views/webshare/webshare_target_picker_view_unittest.cc +++ b/chrome/browser/ui/views/webshare/webshare_target_picker_view_unittest.cc
@@ -127,8 +127,8 @@ // Table with 2 targets. Choose second target and share. TEST_F(WebShareTargetPickerViewTest, ChooseItem) { std::vector<WebShareTarget> targets; - targets.emplace_back(GURL(kUrl1), kAppName1, kTemplate); - targets.emplace_back(GURL(kUrl2), kAppName2, kTemplate); + targets.emplace_back(GURL(kUrl1), kAppName1, GURL(kTemplate)); + targets.emplace_back(GURL(kUrl2), kAppName2, GURL(kTemplate)); CreateView(std::move(targets)); EXPECT_EQ(2, table()->RowCount()); @@ -154,13 +154,13 @@ run_loop.Run(); - EXPECT_EQ(WebShareTarget(GURL(kUrl2), kAppName2, kTemplate), *result()); + EXPECT_EQ(WebShareTarget(GURL(kUrl2), kAppName2, GURL(kTemplate)), *result()); } // Table with 1 target. Select using double-click. TEST_F(WebShareTargetPickerViewTest, ChooseItemWithDoubleClick) { std::vector<WebShareTarget> targets; - targets.emplace_back(GURL(kUrl1), kAppName1, kTemplate); + targets.emplace_back(GURL(kUrl1), kAppName1, GURL(kTemplate)); CreateView(std::move(targets)); EXPECT_EQ(1, table()->RowCount()); @@ -176,13 +176,13 @@ run_loop.Run(); - EXPECT_EQ(WebShareTarget(GURL(kUrl1), kAppName1, kTemplate), *result()); + EXPECT_EQ(WebShareTarget(GURL(kUrl1), kAppName1, GURL(kTemplate)), *result()); } // Table with 1 target. Select, share and GetText. TEST_F(WebShareTargetPickerViewTest, GetTextAfterAccept) { std::vector<WebShareTarget> targets; - targets.emplace_back(GURL(kUrl1), kAppName1, kTemplate); + targets.emplace_back(GURL(kUrl1), kAppName1, GURL(kTemplate)); CreateView(std::move(targets)); EXPECT_EQ(1, table()->RowCount()); @@ -201,5 +201,5 @@ EXPECT_EQ(base::ASCIIToUTF16("App One (https://appone.com/)"), table()->model()->GetText(0, 0)); - EXPECT_EQ(WebShareTarget(GURL(kUrl1), kAppName1, kTemplate), *result()); + EXPECT_EQ(WebShareTarget(GURL(kUrl1), kAppName1, GURL(kTemplate)), *result()); }
diff --git a/chrome/browser/ui/webui/chromeos/internet_detail_dialog.cc b/chrome/browser/ui/webui/chromeos/internet_detail_dialog.cc index 3f191280..a05bb03c5 100644 --- a/chrome/browser/ui/webui/chromeos/internet_detail_dialog.cc +++ b/chrome/browser/ui/webui/chromeos/internet_detail_dialog.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/webui/chromeos/internet_detail_dialog.h" +#include "base/json/json_writer.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/chromeos/network_element_localized_strings_provider.h" @@ -13,6 +14,7 @@ #include "chromeos/network/network_handler.h" #include "chromeos/network/network_state.h" #include "chromeos/network/network_state_handler.h" +#include "chromeos/network/network_util.h" #include "components/strings/grit/components_strings.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" @@ -54,12 +56,18 @@ html_source->AddLocalizedString(entry.name, entry.id); } -base::string16 GetNetworkName(const NetworkState& network) { +base::string16 GetNetworkName16(const NetworkState& network) { return network.Matches(NetworkTypePattern::Ethernet()) ? l10n_util::GetStringUTF16(IDS_NETWORK_TYPE_ETHERNET) : base::UTF8ToUTF16(network.name()); } +std::string GetNetworkName8(const NetworkState& network) { + return network.Matches(NetworkTypePattern::Ethernet()) + ? l10n_util::GetStringUTF8(IDS_NETWORK_TYPE_ETHERNET) + : network.name(); +} + } // namespace // static @@ -85,8 +93,10 @@ InternetDetailDialog::InternetDetailDialog(const NetworkState& network) : SystemWebDialogDelegate(GURL(chrome::kChromeUIIntenetDetailDialogURL), - GetNetworkName(network)), - guid_(network.guid()) { + GetNetworkName16(network)), + network_id_(network.guid()), + network_type_(network_util::TranslateShillTypeToONC(network.type())), + network_name_(GetNetworkName8(network)) { ++s_internet_detail_dialog_count; } @@ -100,7 +110,13 @@ } std::string InternetDetailDialog::GetDialogArgs() const { - return guid_; + base::DictionaryValue args; + args.SetKey("type", base::Value(network_type_)); + args.SetKey("guid", base::Value(network_id_)); + args.SetKey("name", base::Value(network_name_)); + std::string json; + base::JSONWriter::Write(args, &json); + return json; } // InternetDetailDialogUI
diff --git a/chrome/browser/ui/webui/chromeos/internet_detail_dialog.h b/chrome/browser/ui/webui/chromeos/internet_detail_dialog.h index 92b27a89..c508049 100644 --- a/chrome/browser/ui/webui/chromeos/internet_detail_dialog.h +++ b/chrome/browser/ui/webui/chromeos/internet_detail_dialog.h
@@ -31,7 +31,9 @@ std::string GetDialogArgs() const override; private: - std::string guid_; + std::string network_id_; + std::string network_type_; + std::string network_name_; DISALLOW_COPY_AND_ASSIGN(InternetDetailDialog); };
diff --git a/chrome/browser/ui/webui/chromeos/network_element_localized_strings_provider.cc b/chrome/browser/ui/webui/chromeos/network_element_localized_strings_provider.cc index 3aba71b..93589ae 100644 --- a/chrome/browser/ui/webui/chromeos/network_element_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/chromeos/network_element_localized_strings_provider.cc
@@ -32,6 +32,7 @@ {"networkListItemConnecting", IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING}, {"networkListItemConnectingTo", IDS_NETWORK_LIST_CONNECTING_TO}, {"networkListItemInitializing", IDS_NETWORK_LIST_INITIALIZING}, + {"networkListItemScanning", IDS_SETTINGS_INTERNET_MOBILE_SEARCH}, {"networkListItemNotConnected", IDS_NETWORK_LIST_NOT_CONNECTED}, {"networkListItemNoNetwork", IDS_NETWORK_LIST_NO_NETWORK}, {"vpnNameTemplate", IDS_NETWORK_LIST_THIRD_PARTY_VPN_NAME_TEMPLATE}, @@ -246,6 +247,7 @@ {"networkNameserversGoogle", IDS_SETTINGS_INTERNET_NETWORK_NAMESERVERS_GOOGLE}, {"networkProxyWpad", IDS_SETTINGS_INTERNET_NETWORK_PROXY_WPAD}, + {"networkProxyWpadNone", IDS_SETTINGS_INTERNET_NETWORK_PROXY_WPAD_NONE}, }; for (const auto& entry : localized_strings) html_source->AddLocalizedString(entry.name, entry.id);
diff --git a/chrome/browser/ui/webui/signin/signin_error_ui.cc b/chrome/browser/ui/webui/signin/signin_error_ui.cc index 7b1e9041..3de3a5d 100644 --- a/chrome/browser/ui/webui/signin/signin_error_ui.cc +++ b/chrome/browser/ui/webui/signin/signin_error_ui.cc
@@ -11,6 +11,7 @@ #include "chrome/browser/profiles/profile_attributes_entry.h" #include "chrome/browser/profiles/profile_attributes_storage.h" #include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/signin/account_consistency_mode_manager.h" #include "chrome/browser/signin/signin_ui_util.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/user_manager.h" @@ -84,9 +85,12 @@ } else if (email.empty()) { source->AddLocalizedString("signinErrorTitle", IDS_SIGNIN_ERROR_TITLE); } else { - source->AddString( - "signinErrorTitle", - l10n_util::GetStringFUTF16(IDS_SIGNIN_ERROR_EMAIL_TITLE, email)); + int title_string_id = + AccountConsistencyModeManager::IsDiceEnabledForProfile(signin_profile) + ? IDS_SIGNIN_ERROR_DICE_EMAIL_TITLE + : IDS_SIGNIN_ERROR_EMAIL_TITLE; + source->AddString("signinErrorTitle", + l10n_util::GetStringFUTF16(title_string_id, email)); } source->AddString("signinErrorMessage", base::string16());
diff --git a/chrome/browser/ui/webui/version_ui.cc b/chrome/browser/ui/webui/version_ui.cc index 4d83440..4a98bef 100644 --- a/chrome/browser/ui/webui/version_ui.cc +++ b/chrome/browser/ui/webui/version_ui.cc
@@ -141,25 +141,7 @@ #endif #if defined(OS_WIN) -#if defined(__clang__) - html_source->AddString(version_ui::kCompiler, "clang"); -#elif defined(_MSC_VER) && _MSC_VER == 1900 -#if BUILDFLAG(PGO_BUILD) - html_source->AddString(version_ui::kCompiler, "MSVC 2015 (PGO)"); -#else - html_source->AddString(version_ui::kCompiler, "MSVC 2015"); -#endif -#elif defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER < 2000 -#if BUILDFLAG(PGO_BUILD) - html_source->AddString(version_ui::kCompiler, "MSVC 2017 (PGO)"); -#else - html_source->AddString(version_ui::kCompiler, "MSVC 2017"); -#endif -#elif defined(_MSC_VER) -#error "Unsupported version of MSVC." -#else - html_source->AddString(version_ui::kCompiler, "Unknown"); -#endif + html_source->AddString("linker", CHROMIUM_LINKER_NAME); base::string16 update_cohort_name = install_static::InstallDetails::Get().update_cohort_name();
diff --git a/chrome/browser/webshare/share_service_impl.cc b/chrome/browser/webshare/share_service_impl.cc index 138775e1..bebe7d9a 100644 --- a/chrome/browser/webshare/share_service_impl.cc +++ b/chrome/browser/webshare/share_service_impl.cc
@@ -164,8 +164,9 @@ std::string url_template; share_target_dict->GetString("url_template", &url_template); - sufficiently_engaged_targets.emplace_back( - std::move(manifest_url), std::move(name), std::move(url_template)); + sufficiently_engaged_targets.emplace_back(std::move(manifest_url), + std::move(name), + GURL(std::move(url_template))); } return sufficiently_engaged_targets; @@ -194,9 +195,13 @@ return; } + // This will only replace placeholders found in the query and the fragment + // parts of the URL. This happens implicitly, because '{' and '}' found in the + // path will have been escaped during URL parsing, and thus won't be seen as + // placeholders by ReplacePlaceholders(). std::string url_template_filled; - if (!ReplacePlaceholders(result->url_template(), title, text, share_url, - &url_template_filled)) { + if (!ReplacePlaceholders(result->url_template().spec(), title, text, + share_url, &url_template_filled)) { // TODO(mgiuca): This error should not be possible at share time, because // targets with invalid templates should not be chooseable. Fix // https://crbug.com/694380 and replace this with a DCHECK. @@ -204,15 +209,10 @@ return; } - // The template is relative to the manifest URL (minus the filename). - // Resolve it based on the manifest URL to make an absolute URL. - const GURL target = result->manifest_url().Resolve(url_template_filled); - // User should not be able to cause an invalid target URL. Possibilities are: - // - The base URL: can't be invalid since it's derived from the manifest URL. - // - The template: can only be invalid if it contains a NUL character or - // invalid UTF-8 sequence (which it can't have). - // - The replaced pieces: these are escaped. - // If somehow we slip through this DCHECK, it will just open about:blank. + const GURL target(url_template_filled); + // User should not be able to cause an invalid target URL. The replaced pieces + // are escaped. If somehow we slip through this DCHECK, it will just open + // about:blank. DCHECK(target.is_valid()); OpenTargetURL(target);
diff --git a/chrome/browser/webshare/share_service_impl_unittest.cc b/chrome/browser/webshare/share_service_impl_unittest.cc index f2c283f..9336092 100644 --- a/chrome/browser/webshare/share_service_impl_unittest.cc +++ b/chrome/browser/webshare/share_service_impl_unittest.cc
@@ -29,7 +29,15 @@ constexpr char kUrlSpec[] = "https://www.google.com/"; constexpr char kTargetName[] = "Share Target"; -constexpr char kUrlTemplate[] = "share?title={title}&text={text}&url={url}"; +constexpr char kUrlTemplateHigh[] = + "https://www.example-high.com/target/" + "share?title={title}&text={text}&url={url}"; +constexpr char kUrlTemplateLow[] = + "https://www.example-low.com/target/" + "share?title={title}&text={text}&url={url}"; +constexpr char kUrlTemplateMin[] = + "https://www.example-min.com/target/" + "share?title={title}&text={text}&url={url}"; constexpr char kManifestUrlHigh[] = "https://www.example-high.com/target/manifest.json"; constexpr char kManifestUrlLow[] = @@ -183,12 +191,13 @@ // parameters. TEST_F(ShareServiceImplUnittest, ShareCallbackParams) { share_service_helper()->AddShareTargetToPrefs(kManifestUrlLow, kTargetName, - kUrlTemplate); + kUrlTemplateLow); share_service_helper()->AddShareTargetToPrefs(kManifestUrlHigh, kTargetName, - kUrlTemplate); + kUrlTemplateHigh); // Expect this invalid URL to be ignored (not crash); // https://crbug.com/762388. - share_service_helper()->AddShareTargetToPrefs("", kTargetName, kUrlTemplate); + share_service_helper()->AddShareTargetToPrefs("", kTargetName, + kUrlTemplateHigh); base::OnceCallback<void(blink::mojom::ShareError)> callback = base::BindOnce(&DidShare, blink::mojom::ShareError::OK); @@ -203,9 +212,9 @@ std::vector<WebShareTarget> expected_targets; expected_targets.emplace_back(GURL(kManifestUrlHigh), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateHigh)); expected_targets.emplace_back(GURL(kManifestUrlLow), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateLow)); EXPECT_EQ(expected_targets, share_service_helper()->GetTargetsInPicker()); // Pick example-low.com. @@ -244,9 +253,9 @@ // Tests the result of cancelling the share in the picker UI, that has targets. TEST_F(ShareServiceImplUnittest, ShareCancelWithTargets) { share_service_helper()->AddShareTargetToPrefs(kManifestUrlHigh, kTargetName, - kUrlTemplate); + kUrlTemplateHigh); share_service_helper()->AddShareTargetToPrefs(kManifestUrlLow, kTargetName, - kUrlTemplate); + kUrlTemplateLow); // Expect an error message in response. base::OnceCallback<void(blink::mojom::ShareError)> callback = @@ -262,9 +271,9 @@ std::vector<WebShareTarget> expected_targets; expected_targets.emplace_back(GURL(kManifestUrlHigh), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateHigh)); expected_targets.emplace_back(GURL(kManifestUrlLow), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateLow)); EXPECT_EQ(expected_targets, share_service_helper()->GetTargetsInPicker()); // Cancel the dialog. @@ -277,7 +286,8 @@ TEST_F(ShareServiceImplUnittest, ShareBrokenUrl) { // Invalid placeholders. Detailed tests for broken templates are in the // ReplacePlaceholders test; this just tests the share response. - constexpr char kBrokenUrlTemplate[] = "share?title={title"; + constexpr char kBrokenUrlTemplate[] = + "http://webshare.com/share?title={title"; share_service_helper()->AddShareTargetToPrefs(kManifestUrlHigh, kTargetName, kBrokenUrlTemplate); @@ -295,7 +305,7 @@ std::vector<WebShareTarget> expected_targets; expected_targets.emplace_back(GURL(kManifestUrlHigh), kTargetName, - kBrokenUrlTemplate); + GURL(kBrokenUrlTemplate)); EXPECT_EQ(expected_targets, share_service_helper()->GetTargetsInPicker()); // Pick example-high.com. @@ -307,9 +317,9 @@ // Test to check that only targets with enough engagement were in picker. TEST_F(ShareServiceImplUnittest, ShareWithSomeInsufficientlyEngagedTargets) { share_service_helper()->AddShareTargetToPrefs(kManifestUrlMin, kTargetName, - kUrlTemplate); + kUrlTemplateMin); share_service_helper()->AddShareTargetToPrefs(kManifestUrlLow, kTargetName, - kUrlTemplate); + kUrlTemplateLow); base::OnceCallback<void(blink::mojom::ShareError)> callback = base::BindOnce(&DidShare, blink::mojom::ShareError::OK); @@ -324,7 +334,7 @@ std::vector<WebShareTarget> expected_targets; expected_targets.emplace_back(GURL(kManifestUrlLow), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateLow)); EXPECT_EQ(expected_targets, share_service_helper()->GetTargetsInPicker()); // Pick example-low.com. @@ -341,7 +351,7 @@ // (https://crbug.com/690775). TEST_F(ShareServiceImplUnittest, ShareServiceDeletion) { share_service_helper()->AddShareTargetToPrefs(kManifestUrlLow, kTargetName, - kUrlTemplate); + kUrlTemplateLow); base::RunLoop run_loop; share_service_helper()->set_run_loop(&run_loop); @@ -359,7 +369,7 @@ std::vector<WebShareTarget> expected_targets; expected_targets.emplace_back(GURL(kManifestUrlLow), kTargetName, - kUrlTemplate); + GURL(kUrlTemplateLow)); EXPECT_EQ(expected_targets, share_service_helper()->GetTargetsInPicker()); chrome::WebShareTargetPickerCallback picker_callback =
diff --git a/chrome/browser/webshare/share_target_pref_helper.cc b/chrome/browser/webshare/share_target_pref_helper.cc index 217556c2..f849ef4 100644 --- a/chrome/browser/webshare/share_target_pref_helper.cc +++ b/chrome/browser/webshare/share_target_pref_helper.cc
@@ -16,10 +16,10 @@ DictionaryPrefUpdate update(pref_service, prefs::kWebShareVisitedTargets); base::DictionaryValue* share_target_dict = update.Get(); - // Manifest does not contain a share_target field, or it does but there is no - // url_template field. + // Manifest does not contain a share_target field, or it does but the + // url_template is invalid. if (!manifest.share_target.has_value() || - manifest.share_target.value().url_template.is_null()) { + !manifest.share_target.value().url_template.is_valid()) { share_target_dict->RemoveWithoutPathExpansion(manifest_url.spec(), nullptr); return; } @@ -29,9 +29,6 @@ // be fixed before this feature is rolled out. DCHECK(manifest_url.is_valid()); - std::string url_template = - base::UTF16ToUTF8(manifest.share_target.value().url_template.string()); - constexpr char kNameKey[] = "name"; constexpr char kUrlTemplateKey[] = "url_template"; @@ -40,7 +37,8 @@ if (!manifest.name.is_null()) { origin_dict->SetKey(kNameKey, base::Value(manifest.name.string())); } - origin_dict->SetKey(kUrlTemplateKey, base::Value(url_template)); + origin_dict->SetKey(kUrlTemplateKey, + base::Value(manifest.share_target->url_template.spec())); share_target_dict->SetWithoutPathExpansion(manifest_url.spec(), std::move(origin_dict));
diff --git a/chrome/browser/webshare/share_target_pref_helper_unittest.cc b/chrome/browser/webshare/share_target_pref_helper_unittest.cc index 9e38651..7d36779 100644 --- a/chrome/browser/webshare/share_target_pref_helper_unittest.cc +++ b/chrome/browser/webshare/share_target_pref_helper_unittest.cc
@@ -41,9 +41,8 @@ // Add a share target to prefs that wasn't previously stored. GURL manifest_url("https://www.sharetarget.com/manifest.json"); content::Manifest::ShareTarget share_target; - std::string url_template = "share/?title={title}"; - share_target.url_template = - base::NullableString16(base::ASCIIToUTF16(url_template), false); + std::string url_template = "https://www.sharetarget.com/share?title={title}"; + share_target.url_template = GURL(url_template); content::Manifest manifest; manifest.share_target = base::Optional<content::Manifest::ShareTarget>(share_target); @@ -85,13 +84,13 @@ TEST_F(ShareTargetPrefHelperUnittest, AddShareTargetTwice) { const char kManifestUrl[] = "https://www.sharetarget.com/manifest.json"; - const char kUrlTemplate[] = "share/?title={title}"; + const char kUrlTemplate[] = + "https://www.sharetarget.com/share/?title={title}"; // Add a share target to prefs that wasn't previously stored. GURL manifest_url(kManifestUrl); content::Manifest::ShareTarget share_target; - share_target.url_template = - base::NullableString16(base::ASCIIToUTF16(kUrlTemplate), false); + share_target.url_template = GURL(kUrlTemplate); content::Manifest manifest; manifest.share_target = base::Optional<content::Manifest::ShareTarget>(share_target); @@ -129,9 +128,8 @@ // Add a share target to prefs that wasn't previously stored. GURL manifest_url("https://www.sharetarget.com/manifest.json"); content::Manifest::ShareTarget share_target; - std::string url_template = "share/?title={title}"; - share_target.url_template = - base::NullableString16(base::ASCIIToUTF16(url_template), false); + std::string url_template = "https://www.sharetarget.com/share/?title={title}"; + share_target.url_template = GURL(url_template); content::Manifest manifest; manifest.share_target = base::Optional<content::Manifest::ShareTarget>(share_target); @@ -152,9 +150,8 @@ // Add same share target to prefs that was previously stored, with new // url_template_in_dict; should update the value. - url_template = "share/?title={title}&text={text}"; - manifest.share_target.value().url_template = - base::NullableString16(base::ASCIIToUTF16(url_template), false); + url_template = "https://www.sharetarget.com/share/?title={title}&text={text}"; + manifest.share_target.value().url_template = GURL(url_template); UpdateShareTargetInPrefs(manifest_url, manifest, pref_service()); @@ -189,9 +186,8 @@ // Add a share target to prefs that wasn't previously stored. GURL manifest_url("https://www.sharetarget.com/manifest.json"); content::Manifest::ShareTarget share_target; - std::string url_template = "share/?title={title}"; - share_target.url_template = - base::NullableString16(base::ASCIIToUTF16(url_template), false); + std::string url_template = "https://www.sharetarget.com/share/?title={title}"; + share_target.url_template = GURL(url_template); content::Manifest manifest; manifest.share_target = base::Optional<content::Manifest::ShareTarget>(share_target);
diff --git a/chrome/browser/webshare/webshare_target.cc b/chrome/browser/webshare/webshare_target.cc index 634e5ea..4cffce3d 100644 --- a/chrome/browser/webshare/webshare_target.cc +++ b/chrome/browser/webshare/webshare_target.cc
@@ -9,12 +9,10 @@ #include "base/strings/utf_string_conversions.h" -WebShareTarget::WebShareTarget(GURL manifest_url, - std::string name, - std::string url_template) - : manifest_url_(std::move(manifest_url)), - name_(std::move(name)), - url_template_(std::move(url_template)) {} +WebShareTarget::WebShareTarget(const GURL& manifest_url, + const std::string& name, + const GURL& url_template) + : manifest_url_(manifest_url), name_(name), url_template_(url_template) {} WebShareTarget::~WebShareTarget() {}
diff --git a/chrome/browser/webshare/webshare_target.h b/chrome/browser/webshare/webshare_target.h index 3ca8e3c4..ba7ed51 100644 --- a/chrome/browser/webshare/webshare_target.h +++ b/chrome/browser/webshare/webshare_target.h
@@ -13,7 +13,9 @@ // retrieved from the share_target field in the site's manifest. class WebShareTarget { public: - WebShareTarget(GURL manifest_url, std::string name, std::string url_template); + WebShareTarget(const GURL& manifest_url, + const std::string& name, + const GURL& url_template); ~WebShareTarget(); // Move constructor @@ -26,14 +28,14 @@ const GURL& manifest_url() const { return manifest_url_; } // The URL template that contains placeholders to be replaced with shared // data. - const std::string& url_template() const { return url_template_; } + const GURL& url_template() const { return url_template_; } bool operator==(const WebShareTarget& other) const; private: GURL manifest_url_; std::string name_; - std::string url_template_; + GURL url_template_; DISALLOW_COPY_AND_ASSIGN(WebShareTarget); };
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 9268f3e6..a24ba80e 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -500,13 +500,6 @@ base::FEATURE_ENABLED_BY_DEFAULT}; #endif -#if defined(OS_CHROMEOS) -// Runtime flag that indicates whether this leak detector should be enabled in -// the current instance of Chrome. -const base::Feature kRuntimeMemoryLeakDetector{ - "RuntimeMemoryLeakDetector", base::FEATURE_DISABLED_BY_DEFAULT}; -#endif // defined(OS_CHROMEOS) - const base::Feature kSafeSearchUrlReporting{"SafeSearchUrlReporting", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index f9646bc..30afa31 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -269,10 +269,6 @@ extern const base::Feature kRemoveUsageOfDeprecatedGaiaSigninEndpoint; #endif -#if defined(OS_CHROMEOS) -extern const base::Feature kRuntimeMemoryLeakDetector; -#endif // defined(OS_CHROMEOS) - extern const base::Feature kSafeSearchUrlReporting; extern const base::Feature kSecurityKeyAttestationPrompt;
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc index a843c52..c02ae596 100644 --- a/chrome/installer/setup/setup_main.cc +++ b/chrome/installer/setup/setup_main.cc
@@ -27,7 +27,6 @@ #include "base/process/launch.h" #include "base/process/memory.h" #include "base/process/process.h" -#include "base/process/process_metrics.h" #include "base/strings/string16.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" @@ -41,6 +40,7 @@ #include "base/win/scoped_com_initializer.h" #include "base/win/scoped_handle.h" #include "base/win/win_util.h" +#include "build/build_config.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" @@ -83,6 +83,12 @@ #include "components/crash/content/app/run_as_crashpad_handler_win.h" #include "content/public/common/content_switches.h" +#if defined(OS_WIN) +#include <windows.h> // This include must come first. + +#include <psapi.h> +#endif + using installer::InstallerState; using installer::InstallationState; using installer::MasterPreferences; @@ -1455,15 +1461,15 @@ installer::MAX_INSTALL_STATUS); // Dump peak memory usage. - std::unique_ptr<base::ProcessMetrics> process_metrics( - base::ProcessMetrics::CreateProcessMetrics( - base::GetCurrentProcessHandle())); - UMA_HISTOGRAM_MEMORY_KB("Setup.Install.PeakPagefileUsage", - base::saturated_cast<base::HistogramBase::Sample>( - process_metrics->GetPeakPagefileUsage() / 1024)); - UMA_HISTOGRAM_MEMORY_KB("Setup.Install.PeakWorkingSetSize", - base::saturated_cast<base::HistogramBase::Sample>( - process_metrics->GetPeakWorkingSetSize() / 1024)); + PROCESS_MEMORY_COUNTERS pmc; + if (::GetProcessMemoryInfo(::GetCurrentProcess(), &pmc, sizeof(pmc))) { + UMA_HISTOGRAM_MEMORY_KB("Setup.Install.PeakPagefileUsage", + base::saturated_cast<base::HistogramBase::Sample>( + pmc.PeakPagefileUsage / 1024)); + UMA_HISTOGRAM_MEMORY_KB("Setup.Install.PeakWorkingSetSize", + base::saturated_cast<base::HistogramBase::Sample>( + pmc.PeakWorkingSetSize / 1024)); + } int return_code = 0; // MSI demands that custom actions always return 0 (ERROR_SUCCESS) or it will
diff --git a/chrome/installer/zucchini/encoded_view_unittest.cc b/chrome/installer/zucchini/encoded_view_unittest.cc index 6255da753..493994e8 100644 --- a/chrome/installer/zucchini/encoded_view_unittest.cc +++ b/chrome/installer/zucchini/encoded_view_unittest.cc
@@ -9,7 +9,6 @@ #include <vector> #include "chrome/installer/zucchini/image_index.h" -#include "chrome/installer/zucchini/label_manager.h" #include "chrome/installer/zucchini/test_disassembler.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/installer/zucchini/equivalence_map.cc b/chrome/installer/zucchini/equivalence_map.cc index da585ea4..2a044e2 100644 --- a/chrome/installer/zucchini/equivalence_map.cc +++ b/chrome/installer/zucchini/equivalence_map.cc
@@ -8,6 +8,7 @@ #include "base/logging.h" #include "chrome/installer/zucchini/encoded_view.h" +#include "chrome/installer/zucchini/patch_reader.h" #include "chrome/installer/zucchini/suffix_array.h" namespace zucchini { @@ -187,13 +188,136 @@ min_similarity); } +/******** OffsetMapper ********/ + +OffsetMapper::OffsetMapper(std::vector<Equivalence>&& equivalences) + : equivalences_(std::move(equivalences)) { + DCHECK(std::is_sorted(equivalences_.begin(), equivalences_.end(), + [](const Equivalence& a, const Equivalence& b) { + return a.src_offset < b.src_offset; + })); +} + +OffsetMapper::OffsetMapper(EquivalenceSource&& equivalence_source) { + for (auto e = equivalence_source.GetNext(); e.has_value(); + e = equivalence_source.GetNext()) { + equivalences_.push_back(*e); + } + PruneEquivalencesAndSortBySource(&equivalences_); +} + +OffsetMapper::OffsetMapper(const EquivalenceMap& equivalence_map) + : equivalences_(equivalence_map.size()) { + std::transform(equivalence_map.begin(), equivalence_map.end(), + equivalences_.begin(), + [](const EquivalenceCandidate& c) { return c.eq; }); + PruneEquivalencesAndSortBySource(&equivalences_); +} + +OffsetMapper::~OffsetMapper() = default; + +offset_t OffsetMapper::ForwardProject(offset_t offset) const { + auto pos = std::upper_bound( + equivalences_.begin(), equivalences_.end(), offset, + [](offset_t a, const Equivalence& b) { return a < b.src_offset; }); + if (pos != equivalences_.begin()) { + if (pos == equivalences_.end() || offset < pos[-1].src_end() || + offset - pos[-1].src_end() < pos->src_offset - offset) { + --pos; + } + } + return offset - pos->src_offset + pos->dst_offset; +} + +void OffsetMapper::ForwardProjectAll(std::vector<offset_t>* offsets) const { + DCHECK(std::is_sorted(offsets->begin(), offsets->end())); + auto current = equivalences_.begin(); + for (auto& src : *offsets) { + while (current != end() && current->src_end() <= src) { + ++current; + } + + if (current != end() && current->src_offset <= src) { + src = src - current->src_offset + current->dst_offset; + } else { + src = kInvalidOffset; + } + } + offsets->erase(std::remove(offsets->begin(), offsets->end(), kInvalidOffset), + offsets->end()); + offsets->shrink_to_fit(); +} + +void OffsetMapper::PruneEquivalencesAndSortBySource( + std::vector<Equivalence>* equivalences) { + std::sort(equivalences->begin(), equivalences->end(), + [](const Equivalence& a, const Equivalence& b) { + return a.src_offset < b.src_offset; + }); + + for (auto current = equivalences->begin(); current != equivalences->end(); + ++current) { + // A "reaper" is an equivalence after |current| that overlaps with it, but + // is longer, and so truncates |current|. For example: + // ****** <= |current| + // ** + // **** + // **** + // ********** <= |next| as reaper. + // If a reaper is found (as |next|), every equivalence strictly between + // |current| and |next| would be truncated to 0 and discarded. Handling this + // case is important to avoid O(n^2) behavior. + bool next_is_reaper = false; + + // Look ahead to resolve overlaps, until a better candidate is found. + auto next = current + 1; + for (; next != equivalences->end(); ++next) { + DCHECK_GE(next->src_offset, current->src_offset); + if (next->src_offset >= current->src_end()) + break; // No more overlap. + + if (current->length < next->length) { + // |next| is better: So it is a reaper that shrinks |current|. + offset_t delta = current->src_end() - next->src_offset; + current->length -= delta; + next_is_reaper = true; + break; + } + } + + if (next_is_reaper) { + // Discard all equivalences strictly between |cur| and |next|. + for (auto reduced = current + 1; reduced != next; ++reduced) + reduced->length = 0; + current = next - 1; + } else { + // Shrink all equivalences that overlap with |current|. These are all + // worse than |current| since no reaper is found. + for (auto reduced = current + 1; reduced != next; ++reduced) { + offset_t delta = + std::min(reduced->length, current->src_end() - reduced->src_offset); + reduced->length -= delta; + reduced->src_offset += delta; + reduced->dst_offset += delta; + DCHECK_EQ(reduced->src_offset, current->src_end()); + } + } + } + + // Discard all equivalences with length == 0. + equivalences->erase(std::remove_if(equivalences->begin(), equivalences->end(), + [](const Equivalence& equivalence) { + return equivalence.length == 0; + }), + equivalences->end()); +} + /******** EquivalenceMap ********/ EquivalenceMap::EquivalenceMap() = default; -EquivalenceMap::EquivalenceMap( - const std::vector<EquivalenceCandidate>& equivalences) - : candidates_(equivalences) { +EquivalenceMap::EquivalenceMap(std::vector<EquivalenceCandidate>&& equivalences) + : candidates_(std::move(equivalences)) { SortByDestination(); } @@ -226,17 +350,6 @@ << new_view.size() - coverage << " / " << new_view.size(); } -std::vector<Equivalence> EquivalenceMap::MakeForwardEquivalences() const { - std::vector<Equivalence> equivalences(size()); - std::transform(begin(), end(), equivalences.begin(), - [](const EquivalenceCandidate& c) { return c.eq; }); - std::sort(equivalences.begin(), equivalences.end(), - [](const Equivalence& a, const Equivalence& b) { - return a.src_offset < b.src_offset; - }); - return equivalences; -} - void EquivalenceMap::CreateCandidates( const std::vector<offset_t>& old_sa, const EncodedView& old_view, @@ -306,42 +419,55 @@ const EncodedView& new_view, const std::vector<TargetsAffinity>& target_affinities, double min_similarity) { + // TODO(etiennep): unify with + // OffsetMapper::PruneEquivalencesAndSortBySource(). for (auto current = candidates_.begin(); current != candidates_.end(); ++current) { if (current->similarity < min_similarity) continue; // This candidate will be discarded anyways. + bool next_is_reaper = false; + // Look ahead to resolve overlaps, until a better candidate is found. - for (auto next = current + 1; next != candidates_.end(); ++next) { + auto next = current + 1; + for (; next != candidates_.end(); ++next) { DCHECK_GE(next->eq.dst_offset, current->eq.dst_offset); if (next->eq.dst_offset >= current->eq.dst_offset + current->eq.length) break; // No more overlap. - offset_t delta = current->eq.dst_end() - next->eq.dst_offset; - - // |next| is better, so |current| shrinks. if (current->similarity < next->similarity) { + // |next| is better: So it is a reaper that shrinks |current|. + offset_t delta = current->eq.dst_end() - next->eq.dst_offset; current->eq.length -= delta; current->similarity = GetEquivalenceSimilarity( old_view.image_index(), new_view.image_index(), target_affinities, current->eq); + + next_is_reaper = true; break; } } - // Shrinks all overlapping candidates following and worse than |current|. - for (auto next = current + 1; next != candidates_.end(); ++next) { - if (next->eq.dst_offset >= current->eq.dst_offset + current->eq.length) - break; // No more overlap. - - offset_t delta = current->eq.dst_end() - next->eq.dst_offset; - next->eq.length = next->eq.length > delta ? next->eq.length - delta : 0; - next->eq.src_offset += delta; - next->eq.dst_offset += delta; - next->similarity = GetEquivalenceSimilarity(old_view.image_index(), - new_view.image_index(), - target_affinities, next->eq); - DCHECK_EQ(next->eq.dst_offset, current->eq.dst_end()); + if (next_is_reaper) { + // Discard all equivalences strictly between |cur| and |next|. + for (auto reduced = current + 1; reduced != next; ++reduced) { + reduced->eq.length = 0; + reduced->similarity = 0; + } + current = next - 1; + } else { + // Shrinks all overlapping candidates following and worse than |current|. + for (auto reduced = current + 1; reduced != next; ++reduced) { + offset_t delta = std::min( + reduced->eq.length, current->eq.dst_end() - reduced->eq.dst_offset); + reduced->eq.length -= delta; + reduced->eq.src_offset += delta; + reduced->eq.dst_offset += delta; + reduced->similarity = GetEquivalenceSimilarity( + old_view.image_index(), new_view.image_index(), target_affinities, + reduced->eq); + DCHECK_EQ(reduced->eq.dst_offset, current->eq.dst_end()); + } } }
diff --git a/chrome/installer/zucchini/equivalence_map.h b/chrome/installer/zucchini/equivalence_map.h index f6c97e14..cde45b4 100644 --- a/chrome/installer/zucchini/equivalence_map.h +++ b/chrome/installer/zucchini/equivalence_map.h
@@ -19,6 +19,7 @@ constexpr double kMismatchFatal = -std::numeric_limits<double>::infinity(); class EncodedView; +class EquivalenceSource; // Returns similarity score between a token (raw byte or first byte of a // reference) in |old_image_index| at |src| and a token in |new_image_index| @@ -75,6 +76,56 @@ offset_t dst, double min_similarity); +// Container of pruned equivalences used to map offsets from |old_image| to +// offsets in |new_image|. Equivalences are pruned by cropping smaller +// equivalences to avoid overlaps, to make the equivalence map (for covered +// bytes in |old_image| and |new_image|) one-to-one. +class OffsetMapper { + public: + using const_iterator = std::vector<Equivalence>::const_iterator; + + // Constructors for various data sources. + // - From a list of |equivalences|, already sorted (by |src_offset|) and + // pruned, useful for tests. + explicit OffsetMapper(std::vector<Equivalence>&& equivalences); + // - From a generator, useful for Zucchini-apply. + explicit OffsetMapper(EquivalenceSource&& equivalence_source); + // - From an EquivalenceMap that needs to be processed, useful for + // Zucchini-gen. + explicit OffsetMapper(const EquivalenceMap& equivalence_map); + ~OffsetMapper(); + + size_t size() const { return equivalences_.size(); } + const_iterator begin() const { return equivalences_.begin(); } + const_iterator end() const { return equivalences_.end(); } + + // Returns an offset in |new_image| corresponding to |offset| in |old_image|. + // If |offset| is not part of an equivalence, the equivalence nearest to + // |offset| is used as if it contained |offset|. This assumes |equivalences_| + // is not empty. + offset_t ForwardProject(offset_t offset) const; + + // Given sorted |offsets|, applies a projection in-place of all offsets that + // are part of a pruned equivalence from |old_image| to |new_image|. Other + // offsets are removed from |offsets|. + void ForwardProjectAll(std::vector<offset_t>* offsets) const; + + // Accessor for testing. + const std::vector<Equivalence> equivalences() const { return equivalences_; } + + // Sorts |equivalences| by |src_offset| and removes all source overlaps; so a + // source location that was covered by some Equivalence would become covered + // by exactly one Equivalence. Moreover, for the offset, the equivalence + // corresponds to the largest (pre-pruning) covering Equivalence, and in case + // of a tie, the Equivalence with minimal |src_offset|. |equivalences| may + // change in size since empty Equivalences are removed. + static void PruneEquivalencesAndSortBySource( + std::vector<Equivalence>* equivalences); + + private: + std::vector<Equivalence> equivalences_; +}; + // Container of equivalences between |old_image_index| and |new_image_index|, // sorted by |Equivalence::dst_offset|, only used during patch generation. class EquivalenceMap { @@ -83,8 +134,7 @@ EquivalenceMap(); // Initializes the object with |equivalences|. - explicit EquivalenceMap( - const std::vector<EquivalenceCandidate>& equivalences); + explicit EquivalenceMap(std::vector<EquivalenceCandidate>&& candidates); EquivalenceMap(EquivalenceMap&&); EquivalenceMap(const EquivalenceMap&) = delete; ~EquivalenceMap(); @@ -106,10 +156,6 @@ const_iterator begin() const { return candidates_.begin(); } const_iterator end() const { return candidates_.end(); } - // Returns a vector containing equivalences sorted by - // |Equivalence::src_offset|. - std::vector<Equivalence> MakeForwardEquivalences() const; - private: // Discovers equivalence candidates between |old_view| and |new_view| and // stores them in the object. Note that resulting candidates are not sorted
diff --git a/chrome/installer/zucchini/equivalence_map_unittest.cc b/chrome/installer/zucchini/equivalence_map_unittest.cc index e61f0dc..c472128 100644 --- a/chrome/installer/zucchini/equivalence_map_unittest.cc +++ b/chrome/installer/zucchini/equivalence_map_unittest.cc
@@ -19,6 +19,8 @@ namespace { +using OffsetVector = std::vector<offset_t>; + // Make all references 2 bytes long. constexpr offset_t kReferenceSize = 2; @@ -245,6 +247,108 @@ {{22, 19, 0}, 0.0}, 8.0)); } +TEST(EquivalenceMapTest, PruneEquivalencesAndSortBySource) { + auto PruneEquivalencesAndSortBySourceTest = + [](std::vector<Equivalence>&& equivalences) { + OffsetMapper::PruneEquivalencesAndSortBySource(&equivalences); + return equivalences; + }; + + EXPECT_EQ(std::vector<Equivalence>(), + PruneEquivalencesAndSortBySourceTest({})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 1}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 1}})); + EXPECT_EQ(std::vector<Equivalence>(), + PruneEquivalencesAndSortBySourceTest({{0, 10, 0}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 1}, {1, 11, 1}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 1}, {1, 11, 1}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 2}, {2, 13, 1}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 2}, {1, 12, 2}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 2}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 2}, {1, 12, 1}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 2}, {2, 14, 1}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 2}, {1, 13, 2}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 1}, {1, 12, 3}}), + PruneEquivalencesAndSortBySourceTest({{0, 10, 2}, {1, 12, 3}})); + EXPECT_EQ(std::vector<Equivalence>({{0, 10, 3}, {3, 16, 2}}), + PruneEquivalencesAndSortBySourceTest( + {{0, 10, 3}, {1, 13, 3}, {3, 16, 2}})); // Pruning is greedy + + // Consider following pattern that may cause O(n^2) behavior if not handled + // properly. + // *************** + // ********** + // ******** + // ****** + // **** + // ** + // *************** + // This test case makes sure the function does not stall on a large instance + // of this pattern. + EXPECT_EQ(std::vector<Equivalence>({{0, 10, +300000}, {300000, 30, +300000}}), + PruneEquivalencesAndSortBySourceTest([] { + std::vector<Equivalence> equivalenses; + equivalenses.push_back({0, 10, +300000}); + for (offset_t i = 0; i < 100000; ++i) + equivalenses.push_back({200000 + i, 20, +200000 - 2 * i}); + equivalenses.push_back({300000, 30, +300000}); + return equivalenses; + }())); +} + +TEST(EquivalenceMapTest, ForwardProject) { + auto ForwardProjectAllTest = [](const OffsetMapper& offset_mapper, + std::initializer_list<offset_t> offsets) { + OffsetVector offsets_vec(offsets); + offset_mapper.ForwardProjectAll(&offsets_vec); + return offsets_vec; + }; + + OffsetMapper offset_mapper1({{0, 10, 2}, {2, 13, 1}, {4, 16, 2}}); + EXPECT_EQ(OffsetVector({10}), ForwardProjectAllTest(offset_mapper1, {0})); + EXPECT_EQ(OffsetVector({13}), ForwardProjectAllTest(offset_mapper1, {2})); + EXPECT_EQ(OffsetVector({}), ForwardProjectAllTest(offset_mapper1, {3})); + EXPECT_EQ(OffsetVector({10, 13}), + ForwardProjectAllTest(offset_mapper1, {0, 2})); + EXPECT_EQ(OffsetVector({11, 13, 17}), + ForwardProjectAllTest(offset_mapper1, {1, 2, 5})); + EXPECT_EQ(OffsetVector({11, 17}), + ForwardProjectAllTest(offset_mapper1, {1, 3, 5})); + EXPECT_EQ(OffsetVector({10, 11, 13, 16, 17}), + ForwardProjectAllTest(offset_mapper1, {0, 1, 2, 3, 4, 5, 6})); + + OffsetMapper offset_mapper2({{0, 10, 2}, {13, 2, 1}, {16, 4, 2}}); + EXPECT_EQ(OffsetVector({2}), ForwardProjectAllTest(offset_mapper2, {13})); + EXPECT_EQ(OffsetVector({10, 2}), + ForwardProjectAllTest(offset_mapper2, {0, 13})); + EXPECT_EQ(OffsetVector({11, 2, 5}), + ForwardProjectAllTest(offset_mapper2, {1, 13, 17})); + EXPECT_EQ(OffsetVector({11, 5}), + ForwardProjectAllTest(offset_mapper2, {1, 14, 17})); + EXPECT_EQ(OffsetVector({10, 11, 2, 4, 5}), + ForwardProjectAllTest(offset_mapper2, {0, 1, 13, 14, 16, 17, 18})); +} + +TEST(EquivalenceMapTest, ProjectOffset) { + OffsetMapper offset_mapper1({{0, 10, 2}, {2, 13, 1}, {4, 16, 2}}); + EXPECT_EQ(10U, offset_mapper1.ForwardProject(0)); + EXPECT_EQ(11U, offset_mapper1.ForwardProject(1)); + EXPECT_EQ(13U, offset_mapper1.ForwardProject(2)); + EXPECT_EQ(14U, offset_mapper1.ForwardProject(3)); // Previous equivalence. + EXPECT_EQ(16U, offset_mapper1.ForwardProject(4)); + EXPECT_EQ(17U, offset_mapper1.ForwardProject(5)); + EXPECT_EQ(18U, offset_mapper1.ForwardProject(6)); // Previous equivalence. + + OffsetMapper offset_mapper2({{0, 10, 2}, {13, 2, 1}, {16, 4, 2}}); + EXPECT_EQ(10U, offset_mapper2.ForwardProject(0)); + EXPECT_EQ(11U, offset_mapper2.ForwardProject(1)); + EXPECT_EQ(2U, offset_mapper2.ForwardProject(13)); + EXPECT_EQ(3U, offset_mapper2.ForwardProject(14)); // Previous equivalence. + EXPECT_EQ(4U, offset_mapper2.ForwardProject(16)); + EXPECT_EQ(5U, offset_mapper2.ForwardProject(17)); + EXPECT_EQ(6U, offset_mapper2.ForwardProject(18)); // Previous equivalence. +} + TEST(EquivalenceMapTest, Build) { auto test_build_equivalence = [](const ImageIndex old_index, const ImageIndex new_index, @@ -339,21 +443,4 @@ 4.0)); } -TEST(EquivalenceMapTest, MakeForwardEquivalences) { - EXPECT_EQ(std::vector<Equivalence>(), - EquivalenceMap().MakeForwardEquivalences()); - EXPECT_EQ(std::vector<Equivalence>({{0, 0, 1}}), - EquivalenceMap({{{0, 0, 1}, 0.0}}).MakeForwardEquivalences()); - EXPECT_EQ(std::vector<Equivalence>({{0, 0, 1}, {1, 1, 1}}), - EquivalenceMap({{{0, 0, 1}, 0.0}, {{1, 1, 1}, 0.0}}) - .MakeForwardEquivalences()); - EXPECT_EQ(std::vector<Equivalence>({{0, 1, 1}, {1, 0, 1}}), - EquivalenceMap({{{1, 0, 1}, 0.0}, {{0, 1, 1}, 0.0}}) - .MakeForwardEquivalences()); - EXPECT_EQ( - std::vector<Equivalence>({{0, 2, 1}, {1, 0, 1}, {4, 1, 1}}), - EquivalenceMap({{{1, 0, 1}, 0.0}, {{4, 1, 1}, 0.0}, {{0, 2, 1}, 0.0}}) - .MakeForwardEquivalences()); -} - } // namespace zucchini
diff --git a/chrome/installer/zucchini/main_utils.cc b/chrome/installer/zucchini/main_utils.cc index 1b456cc..2b05deed 100644 --- a/chrome/installer/zucchini/main_utils.cc +++ b/chrome/installer/zucchini/main_utils.cc
@@ -12,14 +12,22 @@ #include "base/command_line.h" #include "base/logging.h" -#include "base/process/process_metrics.h" #include "base/time/time.h" #include "build/build_config.h" #include "chrome/installer/zucchini/io_utils.h" #include "chrome/installer/zucchini/zucchini_commands.h" +#if defined(OS_WIN) +#include <windows.h> // This include must come first. + +#include <psapi.h> +#endif + namespace { +#if defined(OS_WIN) +#endif + /******** Command ********/ // Specifications for a Zucchini command. @@ -68,25 +76,27 @@ ScopedResourceUsageTracker() { start_time_ = base::TimeTicks::Now(); -#if !defined(OS_MACOSX) - std::unique_ptr<base::ProcessMetrics> process_metrics( - base::ProcessMetrics::CreateProcessMetrics( - base::GetCurrentProcessHandle())); - start_peak_page_file_usage_ = process_metrics->GetPeakPagefileUsage(); - start_peak_working_set_size_ = process_metrics->GetPeakWorkingSetSize(); -#endif // !defined(OS_MACOSX) +#if defined(OS_WIN) + PROCESS_MEMORY_COUNTERS pmc; + if (::GetProcessMemoryInfo(::GetCurrentProcess(), &pmc, sizeof(pmc))) { + start_peak_page_file_usage_ = pmc.PeakPagefileUsage; + start_peak_working_set_size_ = pmc.PeakWorkingSetSize; + } +#endif } // Computes and prints usage. ~ScopedResourceUsageTracker() { base::TimeTicks end_time = base::TimeTicks::Now(); -#if !defined(OS_MACOSX) - std::unique_ptr<base::ProcessMetrics> process_metrics( - base::ProcessMetrics::CreateProcessMetrics( - base::GetCurrentProcessHandle())); - size_t cur_peak_page_file_usage = process_metrics->GetPeakPagefileUsage(); - size_t cur_peak_working_set_size = process_metrics->GetPeakWorkingSetSize(); +#if defined(OS_WIN) + size_t cur_peak_page_file_usage = 0; + size_t cur_peak_working_set_size = 0; + PROCESS_MEMORY_COUNTERS pmc; + if (::GetProcessMemoryInfo(::GetCurrentProcess(), &pmc, sizeof(pmc))) { + cur_peak_page_file_usage = pmc.PeakPagefileUsage; + cur_peak_working_set_size = pmc.PeakWorkingSetSize; + } LOG(INFO) << "Zucchini.PeakPagefileUsage " << cur_peak_page_file_usage / 1024 << " KiB"; @@ -107,9 +117,9 @@ private: base::TimeTicks start_time_; -#if !defined(OS_MACOSX) - size_t start_peak_page_file_usage_; - size_t start_peak_working_set_size_; +#if defined(OS_WIN) + size_t start_peak_page_file_usage_ = 0; + size_t start_peak_working_set_size_ = 0; #endif // !defined(OS_MACOSX) };
diff --git a/chrome/installer/zucchini/target_pool.cc b/chrome/installer/zucchini/target_pool.cc index 9c1d17a89..8bfd7f5 100644 --- a/chrome/installer/zucchini/target_pool.cc +++ b/chrome/installer/zucchini/target_pool.cc
@@ -10,6 +10,7 @@ #include "base/logging.h" #include "chrome/installer/zucchini/algorithm.h" +#include "chrome/installer/zucchini/equivalence_map.h" namespace zucchini { @@ -22,8 +23,26 @@ } TargetPool::TargetPool(TargetPool&&) = default; +TargetPool::TargetPool(const TargetPool&) = default; TargetPool::~TargetPool() = default; +void TargetPool::InsertTargets(const std::vector<offset_t>& targets) { + std::copy(targets.begin(), targets.end(), std::back_inserter(targets_)); + SortAndUniquify(&targets_); +} + +void TargetPool::InsertTargets(TargetSource* targets) { + for (auto target = targets->GetNext(); target.has_value(); + target = targets->GetNext()) { + targets_.push_back(*target); + } + // InsertTargets() can be called many times (number of reference types for the + // pool) in succession. Calling SortAndUniquify() every time enables deduping + // to occur more often. This prioritizes peak memory reduction over running + // time. + SortAndUniquify(&targets_); +} + void TargetPool::InsertTargets(const std::vector<Reference>& references) { // This can be called many times, so it's better to let std::back_inserter() // manage |targets_| resize, instead of manually reserving space. @@ -41,10 +60,25 @@ SortAndUniquify(&targets_); } -offset_t TargetPool::KeyForOffset(offset_t offset) const { +key_t TargetPool::KeyForOffset(offset_t offset) const { auto pos = std::lower_bound(targets_.begin(), targets_.end(), offset); DCHECK(pos != targets_.end() && *pos == offset); return static_cast<offset_t>(pos - targets_.begin()); } +key_t TargetPool::KeyForNearestOffset(offset_t offset) const { + auto pos = std::lower_bound(targets_.begin(), targets_.end(), offset); + if (pos != targets_.begin()) { + // If distances are equal, prefer lower key. + if (pos == targets_.end() || *pos - offset >= offset - pos[-1]) + --pos; + } + return static_cast<offset_t>(pos - targets_.begin()); +} + +void TargetPool::FilterAndProject(const OffsetMapper& offset_mapper) { + offset_mapper.ForwardProjectAll(&targets_); + std::sort(targets_.begin(), targets_.end()); +} + } // namespace zucchini
diff --git a/chrome/installer/zucchini/target_pool.h b/chrome/installer/zucchini/target_pool.h index 4195a3a..f260f5f3 100644 --- a/chrome/installer/zucchini/target_pool.h +++ b/chrome/installer/zucchini/target_pool.h
@@ -10,9 +10,13 @@ #include <vector> #include "chrome/installer/zucchini/image_utils.h" +#include "chrome/installer/zucchini/patch_reader.h" namespace zucchini { +class OffsetMapper; +class TargetSource; + // Ordered container of distinct targets that have the same semantics, along // with a list of associated reference types, only used during patch generation. class TargetPool { @@ -22,33 +26,46 @@ TargetPool(); // Initializes the object with given sorted and unique |targets|. explicit TargetPool(std::vector<offset_t>&& targets); - TargetPool(const TargetPool&) = delete; TargetPool(TargetPool&&); + TargetPool(const TargetPool&); ~TargetPool(); - // The following functions insert each new target from |references|. This - // invalidates all previous key lookups. + // Insert new targets from various sources. These invalidate all previous key + // lookups. + // - From a list of targets, useful for adding extra targets in Zucchini-gen: + void InsertTargets(const std::vector<offset_t>& targets); + // - From TargetSource, useful for adding extra targets in Zucchini-apply: + void InsertTargets(TargetSource* targets); + // - From list of References, useful for listing targets in Zucchini-gen: void InsertTargets(const std::vector<Reference>& references); + // - From ReferenceReader, useful for listing targets in Zucchini-apply: void InsertTargets(ReferenceReader&& references); // Adds |type| as a reference type associated with the pool of targets. void AddType(TypeTag type) { types_.push_back(type); } - // Returns a canonical key associated with |offset|. + // Returns a canonical key associated with a valid target at |offset|. key_t KeyForOffset(offset_t offset) const; + // Returns a canonical key associated with the target nearest to |offset|. + key_t KeyForNearestOffset(offset_t offset) const; + // Returns the target for a |key|, which is assumed to be valid and held by // this class. offset_t OffsetForKey(key_t key) const { return targets_[key]; } + // Uses |offset_mapper| to transform "old" |targets_| to "new" |targets_|, + // resulting in sorted and unique targets. + void FilterAndProject(const OffsetMapper& offset_mapper); + // Accessors for testing. const std::vector<offset_t>& targets() const { return targets_; } const std::vector<TypeTag>& types() const { return types_; } // Returns the number of targets. size_t size() const { return targets_.size(); } - const_iterator begin() const; - const_iterator end() const; + const_iterator begin() const { return targets_.cbegin(); } + const_iterator end() const { return targets_.cend(); } private: std::vector<TypeTag> types_; // Enumerates type_tag for this pool.
diff --git a/chrome/installer/zucchini/target_pool_unittest.cc b/chrome/installer/zucchini/target_pool_unittest.cc index 330bae4..02abd0b 100644 --- a/chrome/installer/zucchini/target_pool_unittest.cc +++ b/chrome/installer/zucchini/target_pool_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/installer/zucchini/target_pool.h" +#include <cmath> #include <utility> #include <vector> @@ -35,21 +36,28 @@ } TEST(TargetPoolTest, KeyOffset) { - auto test_key_offset = [](OffsetVector&& targets) { + auto test_key_offset = [](const std::string& nearest_offsets_key, + OffsetVector&& targets) { TargetPool target_pool(std::move(targets)); for (offset_t offset : target_pool.targets()) { offset_t key = target_pool.KeyForOffset(offset); EXPECT_LT(key, target_pool.size()); EXPECT_EQ(offset, target_pool.OffsetForKey(key)); } + for (offset_t offset = 0; offset < nearest_offsets_key.size(); ++offset) { + key_t key = target_pool.KeyForNearestOffset(offset); + EXPECT_EQ(key, static_cast<key_t>(nearest_offsets_key[offset] - '0')); + } }; - test_key_offset({0}); - test_key_offset({1}); - test_key_offset({0, 1}); - test_key_offset({0, 2}); - test_key_offset({1, 2}); - test_key_offset({1, 3}); - test_key_offset({1, 3, 7, 9, 13}); + test_key_offset("0000000000000000", {}); + test_key_offset("0000000000000000", {0}); + test_key_offset("0000000000000000", {1}); + test_key_offset("0111111111111111", {0, 1}); + test_key_offset("0011111111111111", {0, 2}); + test_key_offset("0011111111111111", {1, 2}); + test_key_offset("0001111111111111", {1, 3}); + test_key_offset("0001112223334444", {1, 3, 7, 9, 13}); + test_key_offset("0000011112223333", {1, 7, 9, 13}); } } // namespace zucchini
diff --git a/chrome/installer/zucchini/zucchini_apply.cc b/chrome/installer/zucchini/zucchini_apply.cc index 1f4cd00..0dd01dc 100644 --- a/chrome/installer/zucchini/zucchini_apply.cc +++ b/chrome/installer/zucchini/zucchini_apply.cc
@@ -12,62 +12,11 @@ #include "base/logging.h" #include "chrome/installer/zucchini/disassembler.h" #include "chrome/installer/zucchini/element_detection.h" -#include "chrome/installer/zucchini/label_manager.h" +#include "chrome/installer/zucchini/equivalence_map.h" +#include "chrome/installer/zucchini/image_index.h" namespace zucchini { -std::vector<offset_t> MakeNewTargetsFromPatch( - const std::vector<offset_t>& old_targets, - const EquivalenceSource& equivalence_source) { - // |old_targets| is sorted. This enables binary search usage below. - std::vector<offset_t> new_targets(old_targets.size(), kUnusedIndex); - - // First pass: For each equivalence, attempt to claim target in |new_targets| - // associated with each target in the "old" interval of the equivalence. "Old" - // interval collisions may occur. - { - EquivalenceSource tmp_equiv_source(equivalence_source); - for (auto equivalence = tmp_equiv_source.GetNext(); equivalence.has_value(); - equivalence = tmp_equiv_source.GetNext()) { - auto it = std::lower_bound(old_targets.begin(), old_targets.end(), - equivalence->src_offset); - offset_t idx = it - old_targets.begin(); - for (; it != old_targets.end() && *it < equivalence->src_end(); - ++it, ++idx) { - // To resolve collisions, |new_targets[idx]| is temporarily assigned the - // marked maximal length of competing equivalences that contain - // |new_tagets[idx]|. As a result, longer equivalences are favored. - if (new_targets[idx] == kUnusedIndex || - UnmarkIndex(new_targets[idx]) < equivalence->length) { - new_targets[idx] = MarkIndex(equivalence->length); - } - } - } - } - - // Second pass: Assign each claimed target in |new_targets|. - { - EquivalenceSource tmp_equiv_source(equivalence_source); - for (auto equivalence = tmp_equiv_source.GetNext(); equivalence.has_value(); - equivalence = tmp_equiv_source.GetNext()) { - auto it = std::lower_bound(old_targets.begin(), old_targets.end(), - equivalence->src_offset); - offset_t idx = it - old_targets.begin(); - for (; it != old_targets.end() && *it < equivalence->src_end(); - ++it, ++idx) { - // First |equivalence| (ordered by |Equivalence::dst_offset|) with - // designed length claims the target. This is how ties are resolved. - if (IsMarked(new_targets[idx]) && - UnmarkIndex(new_targets[idx]) == equivalence->length) { - new_targets[idx] = - *it - equivalence->src_offset + equivalence->dst_offset; - } - } - } - } - return new_targets; -} - bool ApplyEquivalenceAndExtraData(ConstBufferView old_image, const PatchElementReader& patch_reader, MutableBufferView new_image) { @@ -157,28 +106,22 @@ for (const auto& ref_group : old_disasm->MakeReferenceGroups()) pool_groups[ref_group.pool_tag()].push_back(ref_group); + OffsetMapper offset_mapper(patch.GetEquivalenceSource()); + std::vector<ReferenceGroup> new_groups = new_disasm->MakeReferenceGroups(); for (const auto& pool_and_sub_groups : pool_groups) { PoolTag pool_tag = pool_and_sub_groups.first; const std::vector<ReferenceGroup>& sub_groups = pool_and_sub_groups.second; - // Load all old targets for the pool. - OrderedLabelManager old_label_manager; + TargetPool targets; + // Load "old" targets, then filter and map them to "new" targets. for (ReferenceGroup group : sub_groups) - old_label_manager.InsertTargets( - std::move(*group.GetReader(old_disasm.get()))); - - // Generate estimated new targets for the pool. - std::vector<offset_t> new_targets = MakeNewTargetsFromPatch( - old_label_manager.Labels(), patch.GetEquivalenceSource()); - UnorderedLabelManager new_label_manager; - new_label_manager.Init(std::move(new_targets)); + targets.InsertTargets(std::move(*group.GetReader(old_disasm.get()))); + targets.FilterAndProject(offset_mapper); // Load extra targets from patch. TargetSource target_source = patch.GetExtraTargetSource(pool_tag); - for (auto offset = target_source.GetNext(); offset.has_value(); - offset = target_source.GetNext()) - new_label_manager.InsertNewOffset(offset.value()); + targets.InsertTargets(&target_source); if (!target_source.Done()) { LOG(ERROR) << "Found trailing extra_targets"; return false; @@ -199,13 +142,15 @@ ref = ref_gen->GetNext()) { DCHECK_GE(ref->location, equivalence->src_offset); DCHECK_LT(ref->location, equivalence->src_end()); - offset_t index = old_label_manager.IndexOfOffset(ref->target); + + offset_t projected_target = offset_mapper.ForwardProject(ref->target); + offset_t expected_key = targets.KeyForNearestOffset(projected_target); auto delta = ref_delta_source.GetNext(); if (!delta.has_value()) { LOG(ERROR) << "Error reading reference_delta"; return false; } - ref->target = new_label_manager.OffsetOfIndex(index + delta.value()); + ref->target = targets.OffsetForKey(expected_key + delta.value()); ref->location = ref->location - equivalence->src_offset + equivalence->dst_offset; ref_writer->PutNext(*ref);
diff --git a/chrome/installer/zucchini/zucchini_apply.h b/chrome/installer/zucchini/zucchini_apply.h index 52a82df..cc1e2aa 100644 --- a/chrome/installer/zucchini/zucchini_apply.h +++ b/chrome/installer/zucchini/zucchini_apply.h
@@ -13,14 +13,6 @@ namespace zucchini { -// Projects targets in |old_targets| to a list of new targets using equivalences -// in |equivalence_source|. Targets that cannot be projected have offset -// assigned as |kUnusedIndex|. Returns the list of new targets in a new vector. -// |old_targets| must be sorted in ascending order -std::vector<offset_t> MakeNewTargetsFromPatch( - const std::vector<offset_t>& old_targets, - const EquivalenceSource& equivalence_source); - // Reads equivalences from |patch_reader| to form preliminary |new_image|, // copying regions from |old_image| and writing extra data from |patch_reader|. bool ApplyEquivalenceAndExtraData(ConstBufferView old_image,
diff --git a/chrome/installer/zucchini/zucchini_apply_unittest.cc b/chrome/installer/zucchini/zucchini_apply_unittest.cc index cea670e9..f62ebd40 100644 --- a/chrome/installer/zucchini/zucchini_apply_unittest.cc +++ b/chrome/installer/zucchini/zucchini_apply_unittest.cc
@@ -13,68 +13,10 @@ namespace { -constexpr auto BAD = kUnusedIndex; using OffsetVector = std::vector<offset_t>; } // namespace -// Helper function wrapping MakeNewTargetsFromPatch(). |old_targets| must be -// sorted in ascending order and |equivalence| must be sorted in ascending order -// of |Equivalence::dst_offset|. -std::vector<offset_t> MakeNewTargetsFromPatchTest( - const OffsetVector& old_targets, - const std::vector<Equivalence>& equivalences) { - // Serialize |equivalences| to patch format, and read it back as - // EquivalenceSource. - EquivalenceSink equivalence_sink; - for (const Equivalence& equivalence : equivalences) - equivalence_sink.PutNext(equivalence); - - std::vector<uint8_t> buffer(equivalence_sink.SerializedSize()); - BufferSink sink(buffer.data(), buffer.size()); - equivalence_sink.SerializeInto(&sink); - - BufferSource source(buffer.data(), buffer.size()); - EquivalenceSource equivalence_source; - equivalence_source.Initialize(&source); - return MakeNewTargetsFromPatch(old_targets, equivalence_source); -} - -TEST(ZucchiniApplyTest, MakeNewTargetsFromPatch) { - // Note that |old_offsets| provided are sorted, and |equivalences| provided - // are sorted by |dst_offset|. - - EXPECT_EQ(OffsetVector(), MakeNewTargetsFromPatchTest({}, {})); - EXPECT_EQ(OffsetVector({BAD, BAD}), MakeNewTargetsFromPatchTest({0, 1}, {})); - - EXPECT_EQ(OffsetVector({0, 1, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2}, {{0, 0, 2}})); - EXPECT_EQ(OffsetVector({1, 2, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2}, {{0, 1, 2}})); - EXPECT_EQ( - OffsetVector({1, BAD, 4, 5, 6, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2, 3, 4, 5}, {{0, 1, 1}, {2, 4, 3}})); - EXPECT_EQ( - OffsetVector({3, BAD, 0, 1, 2, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2, 3, 4, 5}, {{2, 0, 3}, {0, 3, 1}})); - - // Overlap. - EXPECT_EQ( - OffsetVector({1, 2, 3, BAD, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2, 3, 4}, {{0, 1, 3}, {1, 4, 2}})); - EXPECT_EQ( - OffsetVector({1, 4, 5, 6, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2, 3, 4}, {{0, 1, 2}, {1, 4, 3}})); - EXPECT_EQ( - OffsetVector({1, 2, 5, BAD, BAD}), - MakeNewTargetsFromPatchTest({0, 1, 2, 3, 4}, {{0, 1, 2}, {1, 4, 2}})); - - // Jump. - EXPECT_EQ(OffsetVector({5, BAD, 6}), - MakeNewTargetsFromPatchTest({10, 13, 15}, - {{0, 1, 2}, {9, 4, 2}, {15, 6, 2}})); -} - // TODO(huangs): Add more tests. } // namespace zucchini
diff --git a/chrome/installer/zucchini/zucchini_gen.cc b/chrome/installer/zucchini/zucchini_gen.cc index 93f1aa26..55031d1 100644 --- a/chrome/installer/zucchini/zucchini_gen.cc +++ b/chrome/installer/zucchini/zucchini_gen.cc
@@ -37,66 +37,13 @@ } // namespace -std::vector<offset_t> MakeNewTargetsFromEquivalenceMap( - const std::vector<offset_t>& old_targets, - const std::vector<Equivalence>& equivalences) { - auto current_equivalence = equivalences.begin(); - std::vector<offset_t> new_targets; - new_targets.reserve(old_targets.size()); - for (offset_t src : old_targets) { - while (current_equivalence != equivalences.end() && - current_equivalence->src_end() <= src) - ++current_equivalence; - - if (current_equivalence != equivalences.end() && - current_equivalence->src_offset <= src) { - // Select the longest equivalence that contains |src|. In case of a tie, - // prefer equivalence with minimal |dst_offset|. - auto best_equivalence = current_equivalence; - for (auto next_equivalence = current_equivalence; - next_equivalence != equivalences.end() && - src >= next_equivalence->src_offset; - ++next_equivalence) { - if (next_equivalence->length > best_equivalence->length || - (next_equivalence->length == best_equivalence->length && - next_equivalence->dst_offset < best_equivalence->dst_offset)) { - // If an |next_equivalence| is longer or equal to |best_equivalence|, - // it can be show that |src < next_equivalence->src_end()| i.e., |src| - // is inside |next_equivalence|. - DCHECK_LT(src, next_equivalence->src_end()); - best_equivalence = next_equivalence; - } - } - new_targets.push_back(src - best_equivalence->src_offset + - best_equivalence->dst_offset); - } else { - new_targets.push_back(kUnusedIndex); - } - } - return new_targets; -} - -std::vector<offset_t> FindExtraTargets( - const ReferenceSet& new_references, - const UnorderedLabelManager& new_label_manager, - const EquivalenceMap& equivalence_map) { - auto equivalence = equivalence_map.begin(); - std::vector<offset_t> targets; - for (const IndirectReference& ref : new_references) { - while (equivalence != equivalence_map.end() && - equivalence->eq.dst_end() <= ref.location) { - ++equivalence; - } - if (equivalence == equivalence_map.end()) - break; - if (ref.location >= equivalence->eq.dst_offset) { - offset_t target_offset = - new_references.target_pool().OffsetForKey(ref.target_key); - if (!new_label_manager.ContainsOffset(target_offset)) - targets.push_back(target_offset); - } - } - return targets; +std::vector<offset_t> FindExtraTargets(const TargetPool& projected_old_targets, + const TargetPool& new_targets) { + std::vector<offset_t> extra_targets; + std::set_difference( + new_targets.begin(), new_targets.end(), projected_old_targets.begin(), + projected_old_targets.end(), std::back_inserter(extra_targets)); + return extra_targets; } EquivalenceMap CreateEquivalenceMap(const ImageIndex& old_image_index, @@ -202,10 +149,11 @@ bool GenerateReferencesDelta(const ReferenceSet& src_refs, const ReferenceSet& dst_refs, - const UnorderedLabelManager& new_label_manager, + const TargetPool& projected_target_pool, + const OffsetMapper& offset_mapper, const EquivalenceMap& equivalence_map, ReferenceDeltaSink* reference_delta_sink) { - offset_t ref_width = src_refs.width(); + size_t ref_width = src_refs.width(); auto dst_ref = dst_refs.begin(); // For each equivalence, for each covered |dst_ref| and the matching @@ -236,11 +184,17 @@ // Local offset of |src_ref| should match that of |dst_ref|. DCHECK_EQ(src_ref->location - equiv.src_offset, dst_ref->location - equiv.dst_offset); - offset_t dst_index = new_label_manager.IndexOfOffset( - dst_refs.target_pool().OffsetForKey(dst_ref->target_key)); + offset_t old_offset = + src_refs.target_pool().OffsetForKey(src_ref->target_key); + offset_t new_estimated_offset = offset_mapper.ForwardProject(old_offset); + offset_t new_estimated_key = + projected_target_pool.KeyForNearestOffset(new_estimated_offset); + offset_t new_offset = + dst_refs.target_pool().OffsetForKey(dst_ref->target_key); + offset_t new_key = projected_target_pool.KeyForOffset(new_offset); reference_delta_sink->PutNext( - static_cast<int32_t>(dst_index - src_ref->target_key)); + static_cast<int32_t>(new_key - new_estimated_key)); } if (dst_ref == dst_refs.end()) break; // Done. @@ -303,48 +257,33 @@ return false; } DCHECK_EQ(old_image_index.PoolCount(), new_image_index.PoolCount()); - size_t pool_count = old_image_index.PoolCount(); EquivalenceMap equivalences = CreateEquivalenceMap(old_image_index, new_image_index); - std::vector<Equivalence> forward_equivalences = - equivalences.MakeForwardEquivalences(); + OffsetMapper offset_mapper(equivalences); - std::vector<UnorderedLabelManager> new_label_managers(pool_count); - for (const auto& old_pool_tag_and_targets : old_image_index.target_pools()) { - PoolTag pool_tag = old_pool_tag_and_targets.first; - const auto& new_target_pool = new_image_index.pool(pool_tag); - // Label Projection to initialize |new_label_manager|. - std::vector<offset_t> new_labels = MakeNewTargetsFromEquivalenceMap( - old_pool_tag_and_targets.second.targets(), forward_equivalences); - new_label_managers[pool_tag.value()].Init(std::move(new_labels)); - - // Find extra targets in |new_image_index|, emit into patch, merge them to - // |new_labelsl_manager|, and update new references. - OrderedLabelManager extra_label_manager; - for (TypeTag type : new_target_pool.types()) { - extra_label_manager.InsertOffsets( - FindExtraTargets(new_image_index.refs(type), - new_label_managers[pool_tag.value()], equivalences)); - } - if (!GenerateExtraTargets(extra_label_manager.Labels(), pool_tag, - patch_writer)) { - return false; - } - for (offset_t offset : extra_label_manager.Labels()) - new_label_managers[pool_tag.value()].InsertNewOffset(offset); - } ReferenceDeltaSink reference_delta_sink; - for (const auto& old_refs : old_image_index.reference_sets()) { - const auto& new_refs = new_image_index.refs(old_refs.first); - if (!GenerateReferencesDelta( - old_refs.second, new_refs, - new_label_managers[new_refs.pool_tag().value()], equivalences, - &reference_delta_sink)) { + for (const auto& old_targets : old_image_index.target_pools()) { + PoolTag pool_tag = old_targets.first; + TargetPool projected_old_targets = old_targets.second; + projected_old_targets.FilterAndProject(offset_mapper); + std::vector<offset_t> extra_target = + FindExtraTargets(projected_old_targets, new_image_index.pool(pool_tag)); + projected_old_targets.InsertTargets(extra_target); + + if (!GenerateExtraTargets(extra_target, pool_tag, patch_writer)) return false; + for (TypeTag type_tag : old_targets.second.types()) { + if (!GenerateReferencesDelta(old_image_index.refs(type_tag), + new_image_index.refs(type_tag), + projected_old_targets, offset_mapper, + equivalences, &reference_delta_sink)) { + return false; + } } } patch_writer->SetReferenceDeltaSink(std::move(reference_delta_sink)); + return GenerateEquivalencesAndExtraData(new_image, equivalences, patch_writer) && GenerateRawDelta(old_image, new_image, equivalences, new_image_index,
diff --git a/chrome/installer/zucchini/zucchini_gen.h b/chrome/installer/zucchini/zucchini_gen.h index a6909c5..76139afc 100644 --- a/chrome/installer/zucchini/zucchini_gen.h +++ b/chrome/installer/zucchini/zucchini_gen.h
@@ -15,29 +15,17 @@ namespace zucchini { class EquivalenceMap; +class OffsetMapper; class ImageIndex; class PatchElementWriter; class ReferenceDeltaSink; class ReferenceSet; -class UnorderedLabelManager; +class TargetPool; -// Projects targets in |old_targets| to a list of new targets using -// |equivalences|. Targets that cannot be projected have offset assigned as -// |kUnusedIndex|. Returns the list of new targets in a new vector. -// |old_targets| must be sorted in ascending order and |equivalence| must be -// sorted in ascending order of |Equivalence::src_offset|. -std::vector<offset_t> MakeNewTargetsFromEquivalenceMap( - const std::vector<offset_t>& old_targets, - const std::vector<Equivalence>& equivalences); - -// Extract references in |new_references| that have the following properties: -// - The location is found in |equivalences| (dst). -// - The target (key) is absent in |new_label_manager|. -// The targets of the extracted references are returned in a new vector. -std::vector<offset_t> FindExtraTargets( - const ReferenceSet& new_references, - const UnorderedLabelManager& new_label_manager, - const EquivalenceMap& equivalence_map); +// Extract all targets in |new_targets| with no associated target in +// |projected_old_targets| and returns these targets in a new vector. +std::vector<offset_t> FindExtraTargets(const TargetPool& projected_old_targets, + const TargetPool& new_targets); // Creates an EquivalenceMap from "old" image to "new" image and returns the // result. The params |*_image_index|: @@ -63,11 +51,12 @@ PatchElementWriter* patch_writer); // Writes reference delta between references from |old_refs| and from -// |new_refs| to |patch_writer|. |new_label_manager| contains projected -// labels from old to new image for references pool associated with |new_refs| -bool GenerateReferencesDelta(const ReferenceSet& old_refs, - const ReferenceSet& new_refs, - const UnorderedLabelManager& new_label_manager, +// |new_refs| to |patch_writer|. |projected_target_pool| contains projected +// targets from old to new image for references pool associated with |new_refs|. +bool GenerateReferencesDelta(const ReferenceSet& src_refs, + const ReferenceSet& dst_refs, + const TargetPool& projected_target_pool, + const OffsetMapper& offset_mapper, const EquivalenceMap& equivalence_map, ReferenceDeltaSink* reference_delta_sink);
diff --git a/chrome/installer/zucchini/zucchini_gen_unittest.cc b/chrome/installer/zucchini/zucchini_gen_unittest.cc index 870b2f40..256dd4ba 100644 --- a/chrome/installer/zucchini/zucchini_gen_unittest.cc +++ b/chrome/installer/zucchini/zucchini_gen_unittest.cc
@@ -29,28 +29,35 @@ // Helper function wrapping GenerateReferencesDelta(). std::vector<int32_t> GenerateReferencesDeltaTest( - const std::vector<Reference>& old_references, - const std::vector<Reference>& new_references, + std::vector<Reference>&& old_references, + std::vector<Reference>&& new_references, std::vector<offset_t>&& exp_old_targets, - std::vector<offset_t>&& new_labels, - const EquivalenceMap& equivalence_map) { + std::vector<offset_t>&& exp_projected_old_targets, + EquivalenceMap&& equivalence_map) { ReferenceDeltaSink reference_delta_sink; TargetPool old_targets; old_targets.InsertTargets(old_references); - EXPECT_EQ(exp_old_targets, old_targets.targets()); ReferenceSet old_refs({1, TypeTag(0), PoolTag(0)}, old_targets); old_refs.InitReferences(old_references); + EXPECT_EQ(exp_old_targets, old_targets.targets()); TargetPool new_targets; new_targets.InsertTargets(new_references); ReferenceSet new_refs({1, TypeTag(0), PoolTag(0)}, new_targets); new_refs.InitReferences(new_references); - UnorderedLabelManager label_manager; - label_manager.Init(std::move(new_labels)); + OffsetMapper offset_mapper(equivalence_map); + TargetPool projected_old_targets = old_targets; + projected_old_targets.FilterAndProject(offset_mapper); - GenerateReferencesDelta(old_refs, new_refs, label_manager, equivalence_map, + std::vector<offset_t> extra_target = + FindExtraTargets(projected_old_targets, new_targets); + projected_old_targets.InsertTargets(extra_target); + EXPECT_EQ(exp_projected_old_targets, projected_old_targets.targets()); + + GenerateReferencesDelta(old_refs, new_refs, projected_old_targets, + offset_mapper, equivalence_map, &reference_delta_sink); // Serialize |reference_delta_sink| to patch format, and read it back as @@ -71,145 +78,20 @@ return delta_vec; } -// Helper function wrapping FindExtraTargets(). |new_references| take rvalue so -// callers can be simplified. -std::vector<offset_t> FindExtraTargetsTest( - std::vector<Reference>&& new_references, - std::vector<offset_t>&& new_labels, - EquivalenceMap&& equivalence_map) { - TargetPool new_targets; - new_targets.InsertTargets(new_references); - ReferenceSet reference_set({1, TypeTag(0), PoolTag(0)}, new_targets); - reference_set.InitReferences(new_references); - - UnorderedLabelManager new_label_manager; - new_label_manager.Init(std::move(new_labels)); - return FindExtraTargets(reference_set, new_label_manager, equivalence_map); -} - } // namespace -TEST(ZucchiniGenTest, MakeNewTargetsFromEquivalenceMap) { - // Note that |old_offsets| provided are sorted, and |equivalences| provided - // are sorted by |src_offset|. - - constexpr auto kBad = kUnusedIndex; - - EXPECT_EQ(OffsetVector(), MakeNewTargetsFromEquivalenceMap({}, {})); - EXPECT_EQ(OffsetVector({kBad, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1}, {})); - - EXPECT_EQ(OffsetVector({0, 1, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2}, {{0, 0, 2}})); - EXPECT_EQ(OffsetVector({1, 2, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2}, {{0, 1, 2}})); - EXPECT_EQ(OffsetVector({1, kBad, 4, 5, 6, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2, 3, 4, 5}, - {{0, 1, 1}, {2, 4, 3}})); - EXPECT_EQ(OffsetVector({3, kBad, 0, 1, 2, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2, 3, 4, 5}, - {{0, 3, 1}, {2, 0, 3}})); - - // Overlap in src. - EXPECT_EQ(OffsetVector({1, 2, 3, kBad, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2, 3, 4}, - {{0, 1, 3}, {1, 4, 2}})); - EXPECT_EQ(OffsetVector({1, 4, 5, 6, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2, 3, 4}, - {{0, 1, 2}, {1, 4, 3}})); - EXPECT_EQ(OffsetVector({1, 2, 5, kBad, kBad}), - MakeNewTargetsFromEquivalenceMap({0, 1, 2, 3, 4}, - {{0, 1, 2}, {1, 4, 2}})); - - // Jump in src. - EXPECT_EQ(OffsetVector({5, kBad, 6}), - MakeNewTargetsFromEquivalenceMap( - {10, 13, 15}, {{0, 1, 2}, {9, 4, 2}, {15, 6, 2}})); - - // Tie-breaking: Prefer longest Equivalence, and then Equivalence with min - // |dst_offset|. - EXPECT_EQ(OffsetVector({11}), - MakeNewTargetsFromEquivalenceMap({1}, {{0, 10, 4}, {1, 21, 3}})); - EXPECT_EQ(OffsetVector({21}), - MakeNewTargetsFromEquivalenceMap({1}, {{0, 10, 3}, {1, 21, 4}})); - EXPECT_EQ(OffsetVector({11}), - MakeNewTargetsFromEquivalenceMap({1}, {{0, 10, 4}, {1, 21, 4}})); -} - TEST(ZucchiniGenTest, FindExtraTargets) { - // Note that |new_offsets| provided are sorted, and |equivalences| provided - // are sorted by |dst_offset|. - - // No equivalences. - EXPECT_EQ(OffsetVector(), FindExtraTargetsTest({}, {}, {})); - EXPECT_EQ(OffsetVector(), FindExtraTargetsTest({{20, 0}}, {}, {})); - EXPECT_EQ(OffsetVector(), - FindExtraTargetsTest({{20, 0}}, {kUnusedIndex}, {})); - - // Unrelated equivalence. - EXPECT_EQ(OffsetVector(), - FindExtraTargetsTest({{20, 0}, {23, 0}}, {}, - EquivalenceMap({{{12, 21, 2}, kDummySim}}))); - - // Simple cases with one reference. - EXPECT_EQ(OffsetVector({1}), - FindExtraTargetsTest({{20, 1}}, {}, - EquivalenceMap({{{10, 20, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({1}), - FindExtraTargetsTest({{20, 1}}, {kUnusedIndex}, - EquivalenceMap({{{10, 20, 2}, kDummySim}}))); - // With symmetry. - EXPECT_EQ(OffsetVector({1}), - FindExtraTargetsTest({{10, 1}}, {kUnusedIndex}, - EquivalenceMap({{{10, 10, 2}, kDummySim}}))); - - // Target ignored because it is not "extra" (found as label). - EXPECT_EQ(OffsetVector({}), - FindExtraTargetsTest({{20, 1}}, {1}, - EquivalenceMap({{{10, 20, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({}), - FindExtraTargetsTest({{20, 1}}, {2, 1}, - EquivalenceMap({{{10, 20, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({}), - FindExtraTargetsTest({{20, 1}}, {kUnusedIndex, 1}, - EquivalenceMap({{{10, 20, 2}, kDummySim}}))); - - // Simple cases with multiple references. - EXPECT_EQ(OffsetVector({5, 3}), - FindExtraTargetsTest({{20, 4}, {21, 5}, {22, 3}, {23, 6}}, {}, - EquivalenceMap({{{10, 21, 2}, kDummySim}}))); - // With unrelated new labels. - EXPECT_EQ(OffsetVector({5, 3}), - FindExtraTargetsTest({{20, 4}, {21, 5}, {22, 3}, {23, 6}}, - {kUnusedIndex, 9}, - EquivalenceMap({{{10, 21, 2}, kDummySim}}))); - // With unrelated equivalences. - EXPECT_EQ(OffsetVector({5, 3}), - FindExtraTargetsTest({{20, 4}, {21, 5}, {22, 3}, {23, 6}}, {}, - EquivalenceMap({{{11, 11, 2}, kDummySim}, - {{10, 21, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({5, 3}), - FindExtraTargetsTest({{20, 4}, {21, 5}, {22, 3}, {23, 6}}, {}, - EquivalenceMap({{{10, 21, 2}, kDummySim}, - {{11, 31, 2}, kDummySim}}))); - - // Multiple equivalences. Targets are ordered for simplicity. - EXPECT_EQ(OffsetVector({1, 2, 4, 5}), - FindExtraTargetsTest( - {{20, 0}, {21, 1}, {22, 2}, {23, 3}, {24, 4}, {25, 5}, {26, 6}}, - {kUnusedIndex}, - EquivalenceMap( - {{{10, 21, 2}, kDummySim}, {{10, 24, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({2, 4}), - FindExtraTargetsTest( - {{20, 0}, {21, 1}, {22, 2}, {23, 3}, {24, 4}, {25, 5}, {26, 6}}, - {5, kUnusedIndex, 1}, - EquivalenceMap( - {{{10, 21, 2}, kDummySim}, {{10, 24, 2}, kDummySim}}))); - EXPECT_EQ(OffsetVector({4, 5}), - FindExtraTargetsTest({{23, 3}, {24, 4}, {25, 5}, {26, 6}}, {}, - EquivalenceMap({{{10, 21, 2}, kDummySim}, - {{10, 24, 2}, kDummySim}}))); + EXPECT_EQ(OffsetVector(), FindExtraTargets({}, {})); + EXPECT_EQ(OffsetVector(), FindExtraTargets(TargetPool({3}), {})); + EXPECT_EQ(OffsetVector(), FindExtraTargets(TargetPool({3}), TargetPool({3}))); + EXPECT_EQ(OffsetVector({4}), + FindExtraTargets(TargetPool({3}), TargetPool({4}))); + EXPECT_EQ(OffsetVector({4}), + FindExtraTargets(TargetPool({3}), TargetPool({3, 4}))); + EXPECT_EQ(OffsetVector({4}), + FindExtraTargets(TargetPool({2, 3}), TargetPool({3, 4}))); + EXPECT_EQ(OffsetVector({3, 5}), + FindExtraTargets(TargetPool({2, 4}), TargetPool({3, 5}))); } TEST(ZucchiniGenTest, GenerateReferencesDelta) { @@ -217,60 +99,74 @@ EXPECT_EQ(std::vector<int32_t>(), GenerateReferencesDeltaTest({}, {}, {}, {}, EquivalenceMap())); EXPECT_EQ(std::vector<int32_t>(), - GenerateReferencesDeltaTest({{10, 0}}, {{20, 0}}, {0}, {}, + GenerateReferencesDeltaTest({{10, 0}}, {{20, 0}}, {0}, {0}, EquivalenceMap())); // Simple cases with one equivalence. EXPECT_EQ( std::vector<int32_t>({0}), // {0 - 0}. - GenerateReferencesDeltaTest({{10, 3}}, {{20, 3}}, {3}, {3, 4}, - EquivalenceMap({{{10, 20, 4}, kDummySim}}))); + GenerateReferencesDeltaTest( + {{10, 3}}, {{20, 3}}, {3}, {3}, + EquivalenceMap({{{3, 3, 1}, kDummySim}, {{10, 20, 4}, kDummySim}}))); + EXPECT_EQ( + std::vector<int32_t>({-1}), // {0 - 1}. + GenerateReferencesDeltaTest( + {{10, 3}}, {{20, 3}}, {3}, {3, 4}, + EquivalenceMap({{{3, 4, 1}, kDummySim}, {{10, 20, 4}, kDummySim}}))); EXPECT_EQ( std::vector<int32_t>({1}), // {1 - 0}. - GenerateReferencesDeltaTest({{10, 3}}, {{20, 3}}, {3}, {4, 3}, - EquivalenceMap({{{10, 20, 4}, kDummySim}}))); - EXPECT_EQ(std::vector<int32_t>({2, -1}), // {2 - 0, 0 - 1}. + GenerateReferencesDeltaTest( + {{10, 3}}, {{20, 3}}, {3}, {2, 3}, + EquivalenceMap({{{3, 2, 1}, kDummySim}, {{10, 20, 4}, kDummySim}}))); + EXPECT_EQ(std::vector<int32_t>({1, -1}), // {1 - 0, 0 - 1}. GenerateReferencesDeltaTest( - {{10, 3}, {11, 4}}, {{20, 3}, {21, 4}}, {3, 4}, {4, 5, 3}, - EquivalenceMap({{{10, 20, 4}, kDummySim}}))); + {{10, 3}, {11, 4}}, {{20, 3}, {21, 4}}, {3, 4}, {2, 3, 4, 5}, + EquivalenceMap({{{3, 2, 1}, kDummySim}, + {{4, 5, 1}, kDummySim}, + {{10, 20, 4}, kDummySim}}))); - EXPECT_EQ(std::vector<int32_t>({0, 0}), // {1 - 1, 2 - 2}. - GenerateReferencesDeltaTest( - {{10, 3}, {11, 4}, {12, 5}, {13, 6}}, - {{20, 3}, {21, 4}, {22, 5}, {23, 6}}, {3, 4, 5, 6}, - {3, 4, 5, 6}, EquivalenceMap({{{11, 21, 2}, kDummySim}}))); + EXPECT_EQ( + std::vector<int32_t>({0, 0}), // {1 - 1, 2 - 2}. + GenerateReferencesDeltaTest( + {{10, 3}, {11, 4}, {12, 5}, {13, 6}}, + {{20, 3}, {21, 4}, {22, 5}, {23, 6}}, {3, 4, 5, 6}, {3, 4, 5, 6}, + EquivalenceMap({{{3, 3, 4}, kDummySim}, {{11, 21, 2}, kDummySim}}))); // Multiple equivalences. EXPECT_EQ(std::vector<int32_t>({-1, 1}), // {0 - 1, 1 - 0}. GenerateReferencesDeltaTest( {{10, 0}, {12, 1}}, {{10, 0}, {12, 1}}, {0, 1}, {0, 1}, - EquivalenceMap( - {{{12, 10, 2}, kDummySim}, {{10, 12, 2}, kDummySim}}))); + EquivalenceMap({{{0, 0, 2}, kDummySim}, + {{12, 10, 2}, kDummySim}, + {{10, 12, 2}, kDummySim}}))); EXPECT_EQ( std::vector<int32_t>({0, 0}), // {0 - 0, 1 - 1}. GenerateReferencesDeltaTest( - {{0, 0}, {2, 1}}, {{0, 0}, {2, 1}}, {0, 1}, {1, 0}, + {{0, 0}, {2, 2}}, {{0, 0}, {2, 2}}, {0, 2}, {0, 2}, EquivalenceMap({{{2, 0, 2}, kDummySim}, {{0, 2, 2}, kDummySim}}))); EXPECT_EQ(std::vector<int32_t>({-2, 2}), // {0 - 2, 2 - 0}. GenerateReferencesDeltaTest( {{10, 0}, {12, 1}, {14, 2}}, {{10, 0}, {12, 1}, {14, 2}}, {0, 1, 2}, {0, 1, 2}, - EquivalenceMap( - {{{14, 10, 2}, kDummySim}, {{10, 14, 2}, kDummySim}}))); + EquivalenceMap({{{0, 0, 3}, kDummySim}, + {{14, 10, 2}, kDummySim}, + {{10, 14, 2}, kDummySim}}))); EXPECT_EQ(std::vector<int32_t>({-2, 2}), // {0 - 2, 2 - 0}. GenerateReferencesDeltaTest( {{11, 0}, {14, 1}, {17, 2}}, {{11, 0}, {14, 1}, {17, 2}}, {0, 1, 2}, {0, 1, 2}, - EquivalenceMap( - {{{16, 10, 3}, kDummySim}, {{10, 16, 3}, kDummySim}}))); + EquivalenceMap({{{0, 0, 3}, kDummySim}, + {{16, 10, 3}, kDummySim}, + {{10, 16, 3}, kDummySim}}))); EXPECT_EQ( std::vector<int32_t>({-2, 2}), // {0 - 2, 2 - 0}. GenerateReferencesDeltaTest({{10, 0}, {14, 2}, {16, 1}}, {{10, 0}, {14, 2}}, {0, 1, 2}, {0, 1, 2}, - EquivalenceMap({{{14, 10, 2}, kDummySim}, + EquivalenceMap({{{0, 0, 3}, kDummySim}, + {{14, 10, 2}, kDummySim}, {{12, 12, 2}, kDummySim}, {{10, 14, 2}, kDummySim}}))); }
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn index b9c85dd..53d08fd 100644 --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn
@@ -389,7 +389,6 @@ } if (is_chromeos) { - deps += [ "//chrome/renderer/leak_detector:leak_detector" ] sources += [ "extensions/file_browser_handler_custom_bindings.cc", "extensions/file_browser_handler_custom_bindings.h",
diff --git a/chrome/renderer/DEPS b/chrome/renderer/DEPS index 1a88b62b..2b2d92f 100644 --- a/chrome/renderer/DEPS +++ b/chrome/renderer/DEPS
@@ -16,7 +16,6 @@ "+components/grit", "+components/guest_view/renderer", "+components/metrics/child_call_stack_profile_collector.h", - "+components/metrics/leak_detector", "+components/nacl/common", "+components/nacl/renderer", "+components/network_hints/renderer",
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 83e9ccd..5fdd742 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -498,11 +498,6 @@ WebString::FromASCII(scheme)); } -#if defined(OS_CHROMEOS) - leak_detector_remote_client_.reset(new LeakDetectorRemoteClient()); - thread->AddObserver(leak_detector_remote_client_.get()); -#endif - ThreadProfiler::SetServiceManagerConnectorForChildProcess( thread->GetConnector()); }
diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h index f228c1cf..b6f280cbf 100644 --- a/chrome/renderer/chrome_content_renderer_client.h +++ b/chrome/renderer/chrome_content_renderer_client.h
@@ -35,10 +35,6 @@ #include "services/service_manager/public/cpp/service.h" #include "v8/include/v8.h" -#if defined (OS_CHROMEOS) -#include "chrome/renderer/leak_detector/leak_detector_remote_client.h" -#endif - #if defined(OS_WIN) #include "chrome/common/conflicts/module_event_sink_win.mojom.h" #include "chrome/common/conflicts/module_watcher_win.h" @@ -327,10 +323,6 @@ std::set<std::string> allowed_compositor_origins_; #endif -#if defined(OS_CHROMEOS) - std::unique_ptr<LeakDetectorRemoteClient> leak_detector_remote_client_; -#endif - #if defined(OS_WIN) // Observes module load and unload events and notifies the ModuleDatabase in // the browser process.
diff --git a/chrome/renderer/leak_detector/BUILD.gn b/chrome/renderer/leak_detector/BUILD.gn deleted file mode 100644 index 0e72ef7..0000000 --- a/chrome/renderer/leak_detector/BUILD.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 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. - -if (is_chromeos) { - source_set("leak_detector") { - sources = [ - "leak_detector_remote_client.cc", - "leak_detector_remote_client.h", - ] - deps = [ - "//components/metrics/leak_detector:interfaces", - "//components/metrics/leak_detector:leak_detector", - "//services/service_manager/public/cpp", - "//third_party/metrics_proto", - ] - } -}
diff --git a/chrome/renderer/leak_detector/leak_detector_remote_client.cc b/chrome/renderer/leak_detector/leak_detector_remote_client.cc deleted file mode 100644 index 3c45c01..0000000 --- a/chrome/renderer/leak_detector/leak_detector_remote_client.cc +++ /dev/null
@@ -1,58 +0,0 @@ -// Copyright 2016 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/renderer/leak_detector/leak_detector_remote_client.h" - -#include "base/bind.h" -#include "base/threading/thread_task_runner_handle.h" -#include "components/metrics/leak_detector/protobuf_to_mojo_converter.h" -#include "content/public/common/service_names.mojom.h" -#include "content/public/renderer/render_thread.h" -#include "mojo/public/cpp/bindings/interface_request.h" -#include "services/service_manager/public/cpp/connector.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -LeakDetectorRemoteClient::LeakDetectorRemoteClient() { - // Connect to Mojo service. - content::RenderThread::Get()->GetConnector()->BindInterface( - content::mojom::kBrowserServiceName, &remote_service_); - - // It is safe to use "base::Unretained(this)" because |this| owns - // |remote_service_|. See example at: - // https://www.chromium.org/developers/design-documents/mojo/validation - remote_service_->GetParams(base::Bind( - &LeakDetectorRemoteClient::OnParamsReceived, base::Unretained(this))); -} - -LeakDetectorRemoteClient::~LeakDetectorRemoteClient() { - metrics::LeakDetector::GetInstance()->RemoveObserver(this); -} - -void LeakDetectorRemoteClient::OnLeaksFound( - const std::vector<metrics::MemoryLeakReportProto>& reports) { - std::vector<mojo::StructPtr<metrics::mojom::MemoryLeakReport>> result; - - for (const metrics::MemoryLeakReportProto& report : reports) { - metrics::mojom::MemoryLeakReportPtr mojo_report = - metrics::mojom::MemoryLeakReport::New(); - metrics::leak_detector::protobuf_to_mojo_converter::ReportToMojo( - report, mojo_report.get()); - result.push_back(std::move(mojo_report)); - } - - remote_service_->SendLeakReports(std::move(result)); -} - -void LeakDetectorRemoteClient::OnParamsReceived( - mojo::StructPtr<metrics::mojom::LeakDetectorParams> result) { - metrics::MemoryLeakReportProto::Params params; - metrics::leak_detector::protobuf_to_mojo_converter::MojoToParams(*result, - ¶ms); - - if (params.sampling_rate() > 0) { - metrics::LeakDetector* detector = metrics::LeakDetector::GetInstance(); - detector->AddObserver(this); - detector->Init(params, base::ThreadTaskRunnerHandle::Get()); - } -}
diff --git a/chrome/renderer/leak_detector/leak_detector_remote_client.h b/chrome/renderer/leak_detector/leak_detector_remote_client.h deleted file mode 100644 index 3cf86f56..0000000 --- a/chrome/renderer/leak_detector/leak_detector_remote_client.h +++ /dev/null
@@ -1,34 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_RENDERER_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CLIENT_H_ -#define CHROME_RENDERER_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CLIENT_H_ - -#include "base/macros.h" -#include "components/metrics/leak_detector/leak_detector.h" -#include "components/metrics/leak_detector/leak_detector.mojom.h" -#include "content/public/renderer/render_thread_observer.h" - -class LeakDetectorRemoteClient : public content::RenderThreadObserver, - public metrics::LeakDetector::Observer { - public: - LeakDetectorRemoteClient(); - ~LeakDetectorRemoteClient() override; - - // metrics::LeakDetector::Observer: - void OnLeaksFound( - const std::vector<metrics::MemoryLeakReportProto>& reports) override; - - private: - // Callback for remote function LeakDetectorRemote::GetParams(). - void OnParamsReceived( - mojo::StructPtr<metrics::mojom::LeakDetectorParams> result); - - // Handle to the remote Mojo interface. - metrics::mojom::LeakDetectorPtr remote_service_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorRemoteClient); -}; - -#endif // CHROME_RENDERER_LEAK_DETECTOR_LEAK_DETECTOR_REMOTE_CLIENT_H_
diff --git a/chrome/test/base/chrome_process_util.cc b/chrome/test/base/chrome_process_util.cc index f09063b..6866659 100644 --- a/chrome/test/base/chrome_process_util.cc +++ b/chrome/test/base/chrome_process_util.cc
@@ -97,10 +97,6 @@ #if !defined(OS_MACOSX) -size_t ChromeTestProcessMetrics::GetPagefileUsage() { - return process_metrics_->GetPagefileUsage(); -} - size_t ChromeTestProcessMetrics::GetWorkingSetSize() { return process_metrics_->GetWorkingSetSize(); } @@ -120,14 +116,6 @@ process_handle_ = process; } -size_t ChromeTestProcessMetrics::GetPeakPagefileUsage() { - return process_metrics_->GetPeakPagefileUsage(); -} - -size_t ChromeTestProcessMetrics::GetPeakWorkingSetSize() { - return process_metrics_->GetPeakWorkingSetSize(); -} - bool ChromeTestProcessMetrics::GetIOCounters(base::IoCounters* io_counters) { return process_metrics_->GetIOCounters(io_counters); }
diff --git a/chrome/test/base/chrome_process_util.h b/chrome/test/base/chrome_process_util.h index f89a1a8..0949582b 100644 --- a/chrome/test/base/chrome_process_util.h +++ b/chrome/test/base/chrome_process_util.h
@@ -37,14 +37,8 @@ return new ChromeTestProcessMetrics(process); } - size_t GetPagefileUsage(); - size_t GetWorkingSetSize(); - size_t GetPeakPagefileUsage(); - - size_t GetPeakWorkingSetSize(); - bool GetIOCounters(base::IoCounters* io_counters); base::ProcessHandle process_handle_;
diff --git a/chrome/test/base/chrome_process_util_mac.cc b/chrome/test/base/chrome_process_util_mac.cc index ce7f6a0..4c9c393 100644 --- a/chrome/test/base/chrome_process_util_mac.cc +++ b/chrome/test/base/chrome_process_util_mac.cc
@@ -92,13 +92,6 @@ return found_process; } -size_t ChromeTestProcessMetrics::GetPagefileUsage() { - size_t virtual_size; - size_t working_set_size; - GetMemoryValuesHack(process_handle_, &virtual_size, &working_set_size); - return virtual_size; -} - size_t ChromeTestProcessMetrics::GetWorkingSetSize() { size_t virtual_size; size_t working_set_size;
diff --git a/chrome/test/data/extensions/absolute_path/absolute.json b/chrome/test/data/extensions/absolute_path/absolute.json index 06892a9..3494e71 100644 --- a/chrome/test/data/extensions/absolute_path/absolute.json +++ b/chrome/test/data/extensions/absolute_path/absolute.json
@@ -1,5 +1,6 @@ { "name": "A generic empty manifest to use for testing", + "manifest_version": 2, "version": "1.0", "browser_action": { "default_popup": "/test.html"
diff --git a/chrome/test/data/extensions/api_test/networking_private/alias/test.js b/chrome/test/data/extensions/api_test/networking_private/alias/test.js index b631362..2989c1e 100644 --- a/chrome/test/data/extensions/api_test/networking_private/alias/test.js +++ b/chrome/test/data/extensions/api_test/networking_private/alias/test.js
@@ -44,7 +44,12 @@ ModelID:"test_model_id", NetworkTechnology: 'GSM', RoamingState: 'Home', - SIMLockStatus: {LockEnabled: true, LockType: '', RetriesLeft: 3} + SIMLockStatus: { + LockEnabled: true, + LockType: '', + RetriesLeft: 3, + }, + Scanning: false, }, ConnectionState: 'NotConnected', GUID: 'stub_cellular1_guid',
diff --git a/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js b/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js index 10d093e..6c150c9 100644 --- a/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js +++ b/chrome/test/data/extensions/api_test/networking_private/chromeos/test.js
@@ -592,7 +592,8 @@ ModelID:"test_model_id", NetworkTechnology: 'GSM', RoamingState: 'Home', - SIMLockStatus: {LockEnabled: true, LockType: '', RetriesLeft: 3} + SIMLockStatus: {LockEnabled: true, LockType: '', RetriesLeft: 3}, + Scanning: false, }, ConnectionState: ConnectionStateType.NOT_CONNECTED, GUID: kCellularGuid, @@ -624,6 +625,7 @@ MIN: "test_min", ModelID:"test_model_id", SIMLockStatus: {LockEnabled: true, LockType: '', RetriesLeft: 3}, + Scanning: false, SignalStrength: 0, }, Connectable: false,
diff --git a/chrome/test/data/extensions/api_test/webstore_private/bundle/app1.json b/chrome/test/data/extensions/api_test/webstore_private/bundle/app1.json index cc6c678..5dd271d 100644 --- a/chrome/test/data/extensions/api_test/webstore_private/bundle/app1.json +++ b/chrome/test/data/extensions/api_test/webstore_private/bundle/app1.json
@@ -1,5 +1,6 @@ { "name": "app.1", + "manifest_version": 2, "version": "1", "app": { "urls": [ "http://www.testapp.com" ],
diff --git a/chrome/test/data/extensions/page_action/page_action_default_popup.json b/chrome/test/data/extensions/page_action/page_action_default_popup.json index c200459f..4cbf096 100644 --- a/chrome/test/data/extensions/page_action/page_action_default_popup.json +++ b/chrome/test/data/extensions/page_action/page_action_default_popup.json
@@ -1,5 +1,6 @@ { "name": "PageAction Test", + "manifest_version": 2, "version": "1.0", "page_action": { "default_icon": "image1.png",
diff --git a/chrome/test/data/extensions/page_action/page_action_empty.json b/chrome/test/data/extensions/page_action/page_action_empty.json index 79eae27..35aa142 100644 --- a/chrome/test/data/extensions/page_action/page_action_empty.json +++ b/chrome/test/data/extensions/page_action/page_action_empty.json
@@ -1,5 +1,6 @@ { "name": "PageAction Test", + "manifest_version": 2, "version": "1.0", "page_action": { } }
diff --git a/chrome/test/data/extensions/page_action/page_action_empty_default_popup.json b/chrome/test/data/extensions/page_action/page_action_empty_default_popup.json index bd2c27f..c39cf34 100644 --- a/chrome/test/data/extensions/page_action/page_action_empty_default_popup.json +++ b/chrome/test/data/extensions/page_action/page_action_empty_default_popup.json
@@ -1,5 +1,6 @@ { "name": "PageAction Test", + "manifest_version": 2, "version": "1.0", "page_action": { "default_icon": "image1.png",
diff --git a/chrome/test/data/extensions/page_action/page_action_new_format.json b/chrome/test/data/extensions/page_action/page_action_new_format.json index 5e5611f..c45ae9d 100644 --- a/chrome/test/data/extensions/page_action/page_action_new_format.json +++ b/chrome/test/data/extensions/page_action/page_action_new_format.json
@@ -1,5 +1,6 @@ { "name": "PageAction Test", + "manifest_version": 2, "version": "1.0", "page_action": { "default_icon": "image1.png",
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index 818b1d3..e245f30 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -985,7 +985,7 @@ }, "bcdefghijklmnopabcdefghijklmnopa" : { "installation_mode": "force_installed", - "update_url": "http://example.com/update_url", + "update_url": "https://clients2.google.com/service/update2/crx", "allowed_permissions": ["downloads"] }, "*": { @@ -3162,11 +3162,13 @@ }, "DeviceRollbackAllowedMilestones": { - "note": "Chrome OS device policy used by update_engine only, not used in Chrome. TODO(hunyadym): add os field when M67 in dev." + "os": ["chromeos"], + "note": "Chrome OS device policy used by update_engine only, not used in Chrome." }, "DeviceRollbackToTargetVersion": { - "note": "Chrome OS device policy used by update_engine only, not used in Chrome. TODO(hunyadym): add os field when M67 in dev." + "os": ["chromeos"], + "note": "Chrome OS device policy used by update_engine only, not used in Chrome." }, "DeviceTargetVersionPrefix": {
diff --git a/chromecast/BUILD.gn b/chromecast/BUILD.gn index 8c42742..9afa434 100644 --- a/chromecast/BUILD.gn +++ b/chromecast/BUILD.gn
@@ -329,9 +329,9 @@ # Run net_unittests first to avoid random failures due to slow python startup # URLRequestTestHTTP.GetTest_ManyCookies takes roughly 55s to run. Increase # timeout to 90s from 45s to allow it to pass (b/19821476) - # ProxyScriptFetcherImplTest.HttpMimeType is flaking (b/19848784) + # PacFileFetcherImplTest.HttpMimeType is flaking (b/19848784) # Running a batch of net_unittests has high overhead. Run tests in batches of 50 to reduce number of batches (b/23156294). - gtest_excludes = [ "ProxyScriptFetcherImplTest.HttpMimeType" ] + gtest_excludes = [ "PacFileFetcherImplTest.HttpMimeType" ] args = [ "--test-launcher-timeout=90000", "--test-launcher-batch-limit=50",
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 370563853..18f19a6c 100644 --- a/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java +++ b/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java
@@ -75,6 +75,17 @@ } /** + * Returns an Observable that is activated when `this` and `other` are activated in order. + * + * This is similar to `and()`, but does not activate if `other` is activated before `this`. + * + * @param <U> The activation data type of the other Observable. + */ + public final <U> Observable<Both<T, U>> andThen(Observable<U> other) { + return new SequenceStateObserver<>(this, other).asObservable(); + } + + /** * Returns an Observable that is activated only when the given Observable is not activated. */ public static Observable<Unit> not(Observable<?> observable) { @@ -116,42 +127,55 @@ // Owns a Controller that is activated only when both Observables are activated. private static class BothStateObserver<A, B> { - private final Controller<Both<A, B>> mController; - private A mA; - private B mB; - private Both<A, B> mBoth; + private final Controller<Both<A, B>> mController = new Controller<>(); + private A mA = null; + private B mB = null; private BothStateObserver(Observable<A> stateA, Observable<B> stateB) { - mController = new Controller<>(); - mA = null; - mB = null; - mBoth = null; stateA.watch((A a) -> { - if (mB != null) setBoth(a, mB); + if (mB != null) mController.set(Both.both(a, mB)); mA = a; return () -> { mA = null; - resetBoth(); + mController.reset(); }; }); stateB.watch((B b) -> { - if (mA != null) setBoth(mA, b); + if (mA != null) mController.set(Both.both(mA, b)); mB = b; return () -> { mB = null; - resetBoth(); + mController.reset(); }; }); } - private void setBoth(A a, B b) { - mBoth = Both.both(a, b); - mController.set(mBoth); + private Observable<Both<A, B>> asObservable() { + return mController; } + } - private void resetBoth() { - mController.reset(); - mBoth = null; + // Owns a Controller that is activated only when the Observables are activated in order. + private static class SequenceStateObserver<A, B> { + private final Controller<Both<A, B>> mController = new Controller<>(); + private A mA = null; + + private SequenceStateObserver(Observable<A> stateA, Observable<B> stateB) { + stateA.watch((A a) -> { + mA = a; + return () -> { + mA = null; + mController.reset(); + }; + }); + stateB.watch((B b) -> { + if (mA != null) { + mController.set(Both.both(mA, b)); + } + return () -> { + mController.reset(); + }; + }); } private Observable<Both<A, B>> asObservable() {
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 e402c97..0873c8b 100644 --- a/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java +++ b/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java
@@ -373,33 +373,6 @@ result, contains("enter: Base", "enter: Derived", "exit: Base", "enter: Derived")); } - // Any AutoCloseable's constructor whose parameters match the scope can be used as a method - // reference. - private static class TransitionLogger implements AutoCloseable { - public static final List<String> sResult = new ArrayList<>(); - private final String mData; - - public TransitionLogger(String data) { - mData = data; - sResult.add("enter: " + mData); - } - - @Override - public void close() { - sResult.add("exit: " + mData); - } - } - - @Test - public void testScopeFactoryWithAutoCloseableConstructor() { - Controller<String> controller = new Controller<>(); - // You can use a constructor method reference in a watch() call. - controller.watch(TransitionLogger::new); - controller.set("a"); - controller.reset(); - assertThat(TransitionLogger.sResult, contains("enter: a", "exit: a")); - } - @Test public void testNotIsActivatedAtTheStart() { Controller<String> invertThis = new Controller<>(); @@ -447,4 +420,127 @@ invertThis.reset(); assertThat(result, contains("enter inverted", "exit inverted", "enter inverted")); } + + @Test + public void testAndThenNotActivatedInitially() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onEnter( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + assertThat(result, emptyIterable()); + } + + @Test + public void testAndThenNotActivatedIfSecondBeforeFirst() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onEnter( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + bState.set("b"); + aState.set("a"); + assertThat(result, emptyIterable()); + } + + @Test + public void testAndThenActivatedIfFirstThenSecond() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onEnter( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + aState.set("a"); + bState.set("b"); + assertThat(result, contains("a=a, b=b")); + } + + @Test + public void testAndThenActivated_plusBplusAminusBplusB() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onEnter( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + bState.set("b"); + aState.set("a"); + bState.reset(); + bState.set("B"); + assertThat(result, contains("a=a, b=B")); + } + + @Test + public void testAndThenDeactivated_plusAplusBminusA() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onExit( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + aState.set("A"); + bState.set("B"); + aState.reset(); + assertThat(result, contains("a=A, b=B")); + } + + @Test + public void testAndThenDeactivated_plusAplusBminusB() { + Controller<String> aState = new Controller<>(); + Controller<String> bState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.andThen(bState).watch(ScopeFactories.onExit( + (String a, String b) -> { result.add("a=" + a + ", b=" + b); })); + aState.set("A"); + bState.set("B"); + bState.reset(); + assertThat(result, contains("a=A, b=B")); + } + + @Test + public void testComposeAndThen() { + Controller<Unit> aState = new Controller<>(); + Controller<Unit> bState = new Controller<>(); + Controller<Unit> cState = new Controller<>(); + Controller<Unit> dState = new Controller<>(); + List<String> result = new ArrayList<>(); + aState.watch(ScopeFactories.onEnter(() -> result.add("A"))) + .andThen(bState) + .watch(ScopeFactories.onEnter(() -> result.add("B"))) + .andThen(cState) + .watch(ScopeFactories.onEnter(() -> result.add("C"))) + .andThen(dState) + .watch(ScopeFactories.onEnter(() -> result.add("D"))); + aState.set(Unit.unit()); + bState.set(Unit.unit()); + cState.set(Unit.unit()); + dState.set(Unit.unit()); + aState.reset(); + assertThat(result, contains("A", "B", "C", "D")); + } + + // Any AutoCloseable's constructor whose parameters match the scope can be used as a method + // reference. + private static class TransitionLogger implements AutoCloseable { + public static final List<String> sResult = new ArrayList<>(); + private final String mData; + + public TransitionLogger(String data) { + mData = data; + sResult.add("enter: " + mData); + } + + @Override + public void close() { + sResult.add("exit: " + mData); + } + } + + @Test + public void testScopeFactoryWithAutoCloseableConstructor() { + Controller<String> controller = new Controller<>(); + // You can use a constructor method reference in a watch() call. + controller.watch(TransitionLogger::new); + controller.set("a"); + controller.reset(); + assertThat(TransitionLogger.sResult, contains("enter: a", "exit: a")); + } }
diff --git a/chromecast/browser/android/BUILD.gn b/chromecast/browser/android/BUILD.gn index 117732d..ce36e38 100644 --- a/chromecast/browser/android/BUILD.gn +++ b/chromecast/browser/android/BUILD.gn
@@ -146,6 +146,7 @@ junit_binary("cast_shell_junit_tests") { java_files = [ "junit/src/org/chromium/chromecast/shell/CastAudioManagerTest.java", + "junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java", "junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java", "junit/src/org/chromium/chromecast/shell/LocalBroadcastReceiverScopeTest.java", "junit/src/org/chromium/chromecast/shell/LogcatElisionUnitTest.java",
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 dafd2e6..eb7bd6e 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
@@ -17,10 +17,12 @@ import android.widget.Toast; import org.chromium.base.Log; +import org.chromium.base.annotations.RemovableInRelease; import org.chromium.chromecast.base.Both; import org.chromium.chromecast.base.Controller; 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; /** @@ -36,10 +38,14 @@ private static final String TAG = "cr_CastWebActivity"; private static final boolean DEBUG = true; + // Tracks whether this Activity is between onCreate() and onDestroy(). + private final Controller<Unit> mCreatedState = new Controller<>(); // Tracks the most recent Intent for the Activity. private final Controller<Intent> mGotIntentState = new Controller<>(); // Set this to cause the Activity to finish. private final Controller<String> mIsFinishingState = new Controller<>(); + // Set in unittests to skip some behavior. + private final Controller<Unit> mIsTestingState = new Controller<>(); private CastWebContentsSurfaceHelper mSurfaceHelper; @@ -47,15 +53,40 @@ // Create an Observable that only supplies the Intent when not finishing. Observable<Intent> hasIntentState = mGotIntentState.and(Observable.not(mIsFinishingState)).transform(Both::getFirst); + Observable<Intent> gotIntentAfterFinishingState = + mIsFinishingState.andThen(mGotIntentState).transform(Both::getSecond); - // Register handler for web content stopped event while we have an Intent. - hasIntentState.watch(() -> { - IntentFilter filter = new IntentFilter(); - filter.addAction(CastIntents.ACTION_ON_WEB_CONTENT_STOPPED); - return new LocalBroadcastReceiverScope(filter, (Intent intent) -> { - mIsFinishingState.set("Stopped by intent: " + intent.getAction()); - }); - }); + mCreatedState.and(Observable.not(mIsTestingState)) + .watch(() -> { + // Register handler for web content stopped event while we have an Intent. + IntentFilter filter = new IntentFilter(); + filter.addAction(CastIntents.ACTION_ON_WEB_CONTENT_STOPPED); + return new LocalBroadcastReceiverScope(filter, (Intent intent) -> { + mIsFinishingState.set("Stopped by intent: " + intent.getAction()); + }); + }) + .watch(ScopeFactories.onEnter(() -> { + // Do this in onCreate() only if not testing. + if (!CastBrowserHelper.initializeBrowser(getApplicationContext())) { + Toast.makeText(this, R.string.browser_process_initialization_failed, + Toast.LENGTH_SHORT) + .show(); + mIsFinishingState.set("Failed to initialize browser"); + } + + // Set flags to both exit sleep mode when this activity starts and + // avoid entering sleep mode while playing media. We cannot distinguish + // between video and audio so this applies to both. + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + setContentView(R.layout.cast_web_contents_activity); + + mSurfaceHelper = new CastWebContentsSurfaceHelper(this, /* hostActivity */ + (FrameLayout) findViewById(R.id.web_contents_container), + false /* showInFragment */); + })); + // Handle each new Intent. hasIntentState.watch(ScopeFactories.onEnter(this ::handleIntent)); @@ -65,41 +96,20 @@ })); // If a new Intent arrives after finishing, start a new Activity instead of recycling this. - mGotIntentState.and(mIsFinishingState) - .transform(Both::getFirst) - .watch(ScopeFactories.onEnter((Intent intent) -> { - Log.d(TAG, - "Got intent while finishing current activity, so start new activity."); - int flags = intent.getFlags(); - flags = flags & ~Intent.FLAG_ACTIVITY_SINGLE_TOP; - intent.setFlags(flags); - startActivity(intent); - })); + gotIntentAfterFinishingState.watch(ScopeFactories.onEnter((Intent intent) -> { + Log.d(TAG, "Got intent while finishing current activity, so start new activity."); + int flags = intent.getFlags(); + flags = flags & ~Intent.FLAG_ACTIVITY_SINGLE_TOP; + intent.setFlags(flags); + startActivity(intent); + })); } @Override protected void onCreate(final Bundle savedInstanceState) { if (DEBUG) Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); - - if (!CastBrowserHelper.initializeBrowser(getApplicationContext())) { - Toast.makeText(this, R.string.browser_process_initialization_failed, Toast.LENGTH_SHORT) - .show(); - mIsFinishingState.set("Failed to initialize browser"); - } - - // Set flags to both exit sleep mode when this activity starts and - // avoid entering sleep mode while playing media. We cannot distinguish - // between video and audio so this applies to both. - getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - - setContentView(R.layout.cast_web_contents_activity); - - mSurfaceHelper = new CastWebContentsSurfaceHelper(this, /* hostActivity */ - (FrameLayout) findViewById(R.id.web_contents_container), - false /* showInFragment */); - + mCreatedState.set(Unit.unit()); mGotIntentState.set(getIntent()); } @@ -176,7 +186,7 @@ if (mSurfaceHelper != null) { mSurfaceHelper.onDestroy(); } - mGotIntentState.reset(); + mCreatedState.reset(); super.onDestroy(); } @@ -248,4 +258,14 @@ public boolean dispatchTrackballEvent(MotionEvent ev) { return false; } + + @RemovableInRelease + public void finishForTesting() { + mIsFinishingState.set("Finish for testing"); + } + + @RemovableInRelease + public void testingModeForTesting() { + mIsTestingState.set(Unit.unit()); + } }
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 new file mode 100644 index 0000000..865a571d --- /dev/null +++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java
@@ -0,0 +1,62 @@ +// 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. + +package org.chromium.chromecast.shell; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import android.content.Intent; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.Shadows; +import org.robolectric.android.controller.ActivityController; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowActivity; + +import org.chromium.testing.local.LocalRobolectricTestRunner; + +/** + * Tests for CastWebContentsActivity. + * + * TODO(sanfin): Add more tests. + */ +@RunWith(LocalRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public class CastWebContentsActivityTest { + private ActivityController<CastWebContentsActivity> mActivityLifecycle; + private CastWebContentsActivity mActivity; + private ShadowActivity mShadowActivity; + + @Before + public void setUp() { + mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class); + mActivity = mActivityLifecycle.get(); + mActivity.testingModeForTesting(); + mShadowActivity = Shadows.shadowOf(mActivity); + } + + @Test + public void testNewIntentAfterFinishLaunchesNewActivity() { + mActivityLifecycle.create(); + mActivity.finishForTesting(); + Intent intent = new Intent(Intent.ACTION_VIEW, null, RuntimeEnvironment.application, + CastWebContentsActivity.class); + mActivityLifecycle.newIntent(intent); + Intent next = mShadowActivity.getNextStartedActivity(); + assertEquals(next.getComponent().getClassName(), CastWebContentsActivity.class.getName()); + } + + @Test + public void testFinishDoesNotLaunchNewActivity() { + mActivityLifecycle.create(); + mActivity.finishForTesting(); + Intent intent = mShadowActivity.getNextStartedActivity(); + assertNull(intent); + } +}
diff --git a/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc b/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc index 2d8b9a451..4fa13d80 100644 --- a/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc +++ b/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc
@@ -100,11 +100,10 @@ ~TestProxyResolverFactory() override = default; // net::ProxyResolverFactory: - int CreateProxyResolver( - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, - std::unique_ptr<net::ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<net::PacFileData>& pac_script, + std::unique_ptr<net::ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) override { *resolver = std::make_unique<net::ForwardingProxyResolver>(resolver_); return net::OK; }
diff --git a/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc b/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc index 9e1166c..d564247 100644 --- a/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc +++ b/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc
@@ -31,19 +31,18 @@ } // namespace -DhcpProxyScriptFetcherChromeos::DhcpProxyScriptFetcherChromeos( +DhcpPacFileFetcherChromeos::DhcpPacFileFetcherChromeos( net::URLRequestContext* url_request_context) : weak_ptr_factory_(this) { DCHECK(url_request_context); - proxy_script_fetcher_.reset( - new net::ProxyScriptFetcherImpl(url_request_context)); + pac_file_fetcher_.reset(new net::PacFileFetcherImpl(url_request_context)); if (NetworkHandler::IsInitialized()) network_handler_task_runner_ = NetworkHandler::Get()->task_runner(); } -DhcpProxyScriptFetcherChromeos::~DhcpProxyScriptFetcherChromeos() = default; +DhcpPacFileFetcherChromeos::~DhcpPacFileFetcherChromeos() = default; -int DhcpProxyScriptFetcherChromeos::Fetch( +int DhcpPacFileFetcherChromeos::Fetch( base::string16* utf16_text, const net::CompletionCallback& callback, const net::NetLogWithSource& net_log) { @@ -53,40 +52,39 @@ base::PostTaskAndReplyWithResult( network_handler_task_runner_.get(), FROM_HERE, base::Bind(&GetPacUrlFromDefaultNetwork), - base::Bind(&DhcpProxyScriptFetcherChromeos::ContinueFetch, + base::Bind(&DhcpPacFileFetcherChromeos::ContinueFetch, weak_ptr_factory_.GetWeakPtr(), utf16_text, callback)); return net::ERR_IO_PENDING; } -void DhcpProxyScriptFetcherChromeos::Cancel() { - proxy_script_fetcher_->Cancel(); +void DhcpPacFileFetcherChromeos::Cancel() { + pac_file_fetcher_->Cancel(); // Invalidate any pending callbacks (i.e. calls to ContinueFetch). weak_ptr_factory_.InvalidateWeakPtrs(); } -void DhcpProxyScriptFetcherChromeos::OnShutdown() { - proxy_script_fetcher_->OnShutdown(); +void DhcpPacFileFetcherChromeos::OnShutdown() { + pac_file_fetcher_->OnShutdown(); } -const GURL& DhcpProxyScriptFetcherChromeos::GetPacURL() const { +const GURL& DhcpPacFileFetcherChromeos::GetPacURL() const { return pac_url_; } -std::string DhcpProxyScriptFetcherChromeos::GetFetcherName() const { +std::string DhcpPacFileFetcherChromeos::GetFetcherName() const { return "chromeos"; } -void DhcpProxyScriptFetcherChromeos::ContinueFetch( - base::string16* utf16_text, - net::CompletionCallback callback, - std::string pac_url) { - NET_LOG_EVENT("DhcpProxyScriptFetcher", pac_url); +void DhcpPacFileFetcherChromeos::ContinueFetch(base::string16* utf16_text, + net::CompletionCallback callback, + std::string pac_url) { + NET_LOG_EVENT("DhcpPacFileFetcher", pac_url); pac_url_ = GURL(pac_url); if (pac_url_.is_empty()) { callback.Run(net::ERR_PAC_NOT_IN_DHCP); return; } - int res = proxy_script_fetcher_->Fetch(pac_url_, utf16_text, callback); + int res = pac_file_fetcher_->Fetch(pac_url_, utf16_text, callback); if (res != net::ERR_IO_PENDING) callback.Run(res); }
diff --git a/chromeos/network/dhcp_pac_file_fetcher_chromeos.h b/chromeos/network/dhcp_pac_file_fetcher_chromeos.h index e0039b0..bb2b126 100644 --- a/chromeos/network/dhcp_pac_file_fetcher_chromeos.h +++ b/chromeos/network/dhcp_pac_file_fetcher_chromeos.h
@@ -21,22 +21,22 @@ namespace net { class URLRequestContext; class NetLogWithSource; -class ProxyScriptFetcher; +class PacFileFetcher; } namespace chromeos { -// ChromeOS specific implementation of DhcpProxyScriptFetcher. +// ChromeOS specific implementation of DhcpPacFileFetcher. // This looks up Service.WebProxyAutoDiscoveryUrl for the default network -// from Shill and uses that to fetch the proxy script if available. -class CHROMEOS_EXPORT DhcpProxyScriptFetcherChromeos - : public net::DhcpProxyScriptFetcher { +// from Shill and uses that to fetch the PAC file if available. +class CHROMEOS_EXPORT DhcpPacFileFetcherChromeos + : public net::DhcpPacFileFetcher { public: - explicit DhcpProxyScriptFetcherChromeos( + explicit DhcpPacFileFetcherChromeos( net::URLRequestContext* url_request_context); - ~DhcpProxyScriptFetcherChromeos() override; + ~DhcpPacFileFetcherChromeos() override; - // net::DhcpProxyScriptFetcher + // net::DhcpPacFileFetcher int Fetch(base::string16* utf16_text, const net::CompletionCallback& callback, const net::NetLogWithSource& net_log) override; @@ -50,14 +50,14 @@ net::CompletionCallback callback, std::string pac_url); - std::unique_ptr<net::ProxyScriptFetcher> proxy_script_fetcher_; + std::unique_ptr<net::PacFileFetcher> pac_file_fetcher_; scoped_refptr<base::SingleThreadTaskRunner> network_handler_task_runner_; GURL pac_url_; - base::WeakPtrFactory<DhcpProxyScriptFetcherChromeos> weak_ptr_factory_; + base::WeakPtrFactory<DhcpPacFileFetcherChromeos> weak_ptr_factory_; - DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherChromeos); + DISALLOW_COPY_AND_ASSIGN(DhcpPacFileFetcherChromeos); }; } // namespace chromeos
diff --git a/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.cc b/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.cc index dc5a89c..cd2706f8 100644 --- a/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.cc +++ b/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.cc
@@ -10,16 +10,16 @@ namespace chromeos { -DhcpProxyScriptFetcherFactoryChromeos::DhcpProxyScriptFetcherFactoryChromeos() = +DhcpPacFileFetcherFactoryChromeos::DhcpPacFileFetcherFactoryChromeos() = default; -DhcpProxyScriptFetcherFactoryChromeos:: - ~DhcpProxyScriptFetcherFactoryChromeos() = default; +DhcpPacFileFetcherFactoryChromeos::~DhcpPacFileFetcherFactoryChromeos() = + default; -std::unique_ptr<net::DhcpProxyScriptFetcher> -DhcpProxyScriptFetcherFactoryChromeos::Create( +std::unique_ptr<net::DhcpPacFileFetcher> +DhcpPacFileFetcherFactoryChromeos::Create( net::URLRequestContext* url_request_context) { - return std::make_unique<DhcpProxyScriptFetcherChromeos>(url_request_context); + return std::make_unique<DhcpPacFileFetcherChromeos>(url_request_context); } } // namespace chromeos
diff --git a/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.h b/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.h index b670727..ba8ab1d 100644 --- a/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.h +++ b/chromeos/network/dhcp_pac_file_fetcher_factory_chromeos.h
@@ -12,27 +12,27 @@ #include "net/proxy_resolution/dhcp_pac_file_fetcher_factory.h" namespace net { -class DhcpProxyScriptFetcher; +class DhcpPacFileFetcher; class URLRequestContext; } namespace chromeos { -// ChromeOS specific implementation of DhcpProxyScriptFetcherFactory. +// ChromeOS specific implementation of DhcpPacFileFetcherFactory. // TODO(mmenke): This won't work at all with an out-of-process network service. // Figure out a way forward there. -class CHROMEOS_EXPORT DhcpProxyScriptFetcherFactoryChromeos - : public net::DhcpProxyScriptFetcherFactory { +class CHROMEOS_EXPORT DhcpPacFileFetcherFactoryChromeos + : public net::DhcpPacFileFetcherFactory { public: - DhcpProxyScriptFetcherFactoryChromeos(); - ~DhcpProxyScriptFetcherFactoryChromeos() override; + DhcpPacFileFetcherFactoryChromeos(); + ~DhcpPacFileFetcherFactoryChromeos() override; - // net::DhcpProxyScriptFetcherFactory implementation. - std::unique_ptr<net::DhcpProxyScriptFetcher> Create( + // net::DhcpPacFileFetcherFactory implementation. + std::unique_ptr<net::DhcpPacFileFetcher> Create( net::URLRequestContext* url_request_context) override; private: - DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherFactoryChromeos); + DISALLOW_COPY_AND_ASSIGN(DhcpPacFileFetcherFactoryChromeos); }; } // namespace chromeos
diff --git a/chromeos/network/network_util.cc b/chromeos/network/network_util.cc index bacfb63f..142c0391 100644 --- a/chromeos/network/network_util.cc +++ b/chromeos/network/network_util.cc
@@ -165,18 +165,19 @@ // Get any Device properties required to translate state. if (NetworkTypePattern::Cellular().MatchesType(network->type())) { - // We need to set Device[Cellular.ProviderRequiresRoaming] so that - // Cellular[RoamingState] can be set correctly for badging network icons. const DeviceState* device = NetworkHandler::Get()->network_state_handler()->GetDeviceState( network->device_path()); if (device) { - std::unique_ptr<base::DictionaryValue> device_dict( - new base::DictionaryValue); - device_dict->SetKey(shill::kProviderRequiresRoamingProperty, - base::Value(device->provider_requires_roaming())); - shill_dictionary->SetWithoutPathExpansion(shill::kDeviceProperty, - std::move(device_dict)); + base::DictionaryValue device_dict; + // We need to set Device.Cellular.ProviderRequiresRoaming so that + // Cellular.RoamingState can be set correctly for badging network icons. + device_dict.SetKey(shill::kProviderRequiresRoamingProperty, + base::Value(device->provider_requires_roaming())); + // Scanning is also used in the UI when displaying a list of networks. + device_dict.SetKey(shill::kScanningProperty, + base::Value(device->scanning())); + shill_dictionary->SetKey(shill::kDeviceProperty, std::move(device_dict)); } }
diff --git a/chromeos/network/onc/onc_translator_shill_to_onc.cc b/chromeos/network/onc/onc_translator_shill_to_onc.cc index 0d5cf55..faf2104 100644 --- a/chromeos/network/onc/onc_translator_shill_to_onc.cc +++ b/chromeos/network/onc/onc_translator_shill_to_onc.cc
@@ -436,6 +436,7 @@ const base::DictionaryValue* device_dictionary = NULL; bool requires_roaming = false; + bool scanning = false; shill_dictionary_->GetDictionaryWithoutPathExpansion(shill::kDeviceProperty, &device_dictionary); if (device_dictionary) { @@ -448,9 +449,11 @@ nested_translator.CreateTranslatedONCObject(); onc_object_->MergeDictionary(nested_object.get()); - /// Get the requires_roaming from the Device dictionary. + /// Get requires_roaming and scanning from the Device dictionary. device_dictionary->GetBooleanWithoutPathExpansion( shill::kProviderRequiresRoamingProperty, &requires_roaming); + device_dictionary->GetBooleanWithoutPathExpansion(shill::kScanningProperty, + &scanning); } if (requires_roaming) { onc_object_->SetKey(::onc::cellular::kRoamingState, @@ -459,6 +462,7 @@ TranslateWithTableAndSet(shill::kRoamingStateProperty, kRoamingStateTable, ::onc::cellular::kRoamingState); } + onc_object_->SetKey(::onc::cellular::kScanning, base::Value(scanning)); } void ShillToONCTranslator::TranslateCellularDevice() {
diff --git a/chromeos/test/data/network/translation_of_shill_cellular_with_state.onc b/chromeos/test/data/network/translation_of_shill_cellular_with_state.onc index d90db843..2368b47 100644 --- a/chromeos/test/data/network/translation_of_shill_cellular_with_state.onc +++ b/chromeos/test/data/network/translation_of_shill_cellular_with_state.onc
@@ -53,7 +53,8 @@ "SIMLockStatus": { "LockType": "sim-pin", "LockEnabled": true - } + }, + "Scanning": false }, "Source":"Device" }
diff --git a/components/autofill/core/browser/autofill_experiments.cc b/components/autofill/core/browser/autofill_experiments.cc index 4bc7503..0b48cff 100644 --- a/components/autofill/core/browser/autofill_experiments.cc +++ b/components/autofill/core/browser/autofill_experiments.cc
@@ -60,7 +60,7 @@ const base::Feature kAutofillUpstreamRequestCvcIfMissing{ "AutofillUpstreamRequestCvcIfMissing", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kAutofillUpstreamSendDetectedValues{ - "AutofillUpstreamSendDetectedValues", base::FEATURE_DISABLED_BY_DEFAULT}; + "AutofillUpstreamSendDetectedValues", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kAutofillUpstreamSendPanFirstSix{ "AutofillUpstreamSendPanFirstSix", base::FEATURE_DISABLED_BY_DEFAULT}; const char kCreditCardSigninPromoImpressionLimitParamKey[] = "impression_limit";
diff --git a/components/autofill/core/browser/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/credit_card_save_manager_unittest.cc index ac38115..2a8a1835 100644 --- a/components/autofill/core/browser/credit_card_save_manager_unittest.cc +++ b/components/autofill/core/browser/credit_card_save_manager_unittest.cc
@@ -133,6 +133,11 @@ kAutofillUpstreamRequestCvcIfMissing); } + void DisableAutofillUpstreamSendDetectedValuesExperiment() { + scoped_feature_list_.InitAndDisableFeature( + kAutofillUpstreamSendDetectedValues); + } + void EnableAutofillUpstreamSendDetectedValuesExperiment() { scoped_feature_list_.InitAndEnableFeature( kAutofillUpstreamSendDetectedValues); @@ -266,9 +271,7 @@ ToHistogramSample(metric), 1); } - void ExpectCardUploadDecisionUkm( - AutofillMetrics::CardUploadDecisionMetric upload_decision) { - int expected_metric_value = upload_decision; + void ExpectCardUploadDecisionUkm(int expected_metric_value) { ExpectMetric(UkmCardUploadDecisionType::kUploadDecisionName, UkmCardUploadDecisionType::kEntryName, expected_metric_value, 1 /* expected_num_matching_entries */); @@ -456,7 +459,8 @@ EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); + EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(), + UnorderedElementsAre(kAutofillUpstreamSendDetectedValues.name)); // Server did not send a server_id, expect copy of card is not stored. EXPECT_TRUE(personal_data_.GetCreditCards().empty()); @@ -507,7 +511,8 @@ FormSubmitted(credit_card_form); EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); // Submitted form included CVC, so user did not need to enter CVC. - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); + EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(), + UnorderedElementsAre(kAutofillUpstreamSendDetectedValues.name)); } TEST_F(CreditCardSaveManagerTest, UploadCreditCardAndSaveCopy) { @@ -597,6 +602,53 @@ } TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) { + EnableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen(std::vector<FormData>(1, address_form)); + ExpectUniqueFillableFormParsedUkm(); + + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16(""); // CVC MISSING + + base::HistogramTester histogram_tester; + + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::CVC_VALUE_NOT_FOUND); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::CVC_VALUE_NOT_FOUND); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_CvcUnavailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); personal_data_.ClearProfiles(); credit_card_save_manager_->SetCreditCardUploadEnabled(true); @@ -663,6 +715,49 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the invalid CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::INVALID_CVC_VALUE); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::INVALID_CVC_VALUE); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_CvcInvalidLength_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen(std::vector<FormData>(1, address_form)); + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("1234"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -781,7 +876,68 @@ base::HistogramTester histogram_tester; - // Upload should not happen because user did not provide CVC. + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::CVC_FIELD_NOT_FOUND); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::CVC_FIELD_NOT_FOUND); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoCvcFieldOnForm_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Remove the profiles that were created in the TestPersonalDataManager + // constructor because they would result in conflicting names that would + // prevent the upload. + personal_data_.ClearProfiles(); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen(std::vector<FormData>(1, address_form)); + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. Note that CVC field is missing. + FormData credit_card_form; + credit_card_form.name = ASCIIToUTF16("MyForm"); + credit_card_form.origin = GURL("https://myform.com/form.html"); + credit_card_form.action = GURL("https://myform.com/submit.html"); + credit_card_form.main_frame_origin = + url::Origin::Create(GURL("http://myform_root.com/form.html")); + + FormFieldData field; + test::CreateTestFormField("Card Name", "cardname", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Month", "ccmonth", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Year", "ccyear", "", "text", &field); + credit_card_form.fields.push_back(field); + + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + + base::HistogramTester histogram_tester; + + // Upload should not happen because CVC field was not found. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); @@ -841,7 +997,72 @@ base::HistogramTester histogram_tester; - // Upload should not happen because user did not provide CVC. + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the invalid CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::CVC_FIELD_NOT_FOUND); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::CVC_FIELD_NOT_FOUND); +} + +TEST_F( + CreditCardSaveManagerTest, + UploadCreditCard_NoCvcFieldOnForm_InvalidCvcInNonCvcField_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Remove the profiles that were created in the TestPersonalDataManager + // constructor because they would result in conflicting names that would + // prevent the upload. + personal_data_.ClearProfiles(); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. Note that CVC field is missing. + FormData credit_card_form; + credit_card_form.name = ASCIIToUTF16("MyForm"); + credit_card_form.origin = GURL("https://myform.com/form.html"); + credit_card_form.action = GURL("https://myform.com/submit.html"); + credit_card_form.main_frame_origin = + url::Origin::Create(GURL("http://myform_root.com/form.html")); + + FormFieldData field; + test::CreateTestFormField("Card Name", "cardname", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Month", "ccmonth", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Year", "ccyear", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Random Field", "random", "", "text", &field); + credit_card_form.fields.push_back(field); + + FormsSeen({credit_card_form}); + + // Enter an invalid cvc in "Random Field" and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("1234"); + + base::HistogramTester histogram_tester; + + // Upload should not happen because CVC field was not found. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); @@ -892,7 +1113,7 @@ FormsSeen({credit_card_form}); - // Enter an invalid cvc in "Random Field" and submit. + // Enter a valid cvc in "Random Field" and submit. credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); credit_card_form.fields[2].value = ASCIIToUTF16("11"); @@ -901,7 +1122,73 @@ base::HistogramTester histogram_tester; - // Upload should not happen because user did not provide CVC. + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, + AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoCvcFieldOnForm_CvcInNonCvcField_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Remove the profiles that were created in the TestPersonalDataManager + // constructor because they would result in conflicting names that would + // prevent the upload. + personal_data_.ClearProfiles(); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. Note that CVC field is missing. + FormData credit_card_form; + credit_card_form.name = ASCIIToUTF16("MyForm"); + credit_card_form.origin = GURL("https://myform.com/form.html"); + credit_card_form.action = GURL("https://myform.com/submit.html"); + credit_card_form.main_frame_origin = + url::Origin::Create(GURL("http://myform_root.com/form.html")); + + FormFieldData field; + test::CreateTestFormField("Card Name", "cardname", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Month", "ccmonth", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Year", "ccyear", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Random Field", "random", "", "text", &field); + credit_card_form.fields.push_back(field); + + FormsSeen({credit_card_form}); + + // Enter a valid cvc in "Random Field" and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + + // Upload should not happen because CVC field was not found. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); @@ -954,7 +1241,7 @@ FormsSeen({credit_card_form}); - // Enter an invalid cvc in "Random Field" and submit. + // Enter a valid cvc in "Random Field" and submit. credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); credit_card_form.fields[2].value = ASCIIToUTF16("11"); @@ -963,7 +1250,71 @@ base::HistogramTester histogram_tester; - // Upload should not happen because user did not provide CVC. + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing CVC value. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::CVC_FIELD_NOT_FOUND); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::CVC_FIELD_NOT_FOUND); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoCvcFieldOnForm_CvcInAddressField_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Remove the profiles that were created in the TestPersonalDataManager + // constructor because they would result in conflicting names that would + // prevent the upload. + personal_data_.ClearProfiles(); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. Note that CVC field is missing. + FormData credit_card_form; + credit_card_form.name = ASCIIToUTF16("MyForm"); + credit_card_form.origin = GURL("https://myform.com/form.html"); + credit_card_form.action = GURL("https://myform.com/submit.html"); + credit_card_form.main_frame_origin = + url::Origin::Create(GURL("http://myform_root.com/form.html")); + + FormFieldData field; + test::CreateTestFormField("Card Name", "cardname", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Month", "ccmonth", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Expiration Year", "ccyear", "", "text", &field); + credit_card_form.fields.push_back(field); + test::CreateTestFormField("Address Line 1", "addr1", "", "text", &field); + credit_card_form.fields.push_back(field); + + FormsSeen({credit_card_form}); + + // Enter a valid cvc in "Random Field" and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + + // Upload should not happen because CVC field was not found. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); @@ -1034,7 +1385,8 @@ FormSubmitted(credit_card_form); EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(), - UnorderedElementsAre(kAutofillUpstreamRequestCvcIfMissing.name)); + UnorderedElementsAre(kAutofillUpstreamRequestCvcIfMissing.name, + kAutofillUpstreamSendDetectedValues.name)); // Verify that the correct histogram entries were logged. ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); @@ -1048,64 +1400,45 @@ 1 /* expected_num_matching_entries */); } -TEST_F(CreditCardSaveManagerTest, - UploadCreditCard_NoCvcFieldOnFormExperimentOff) { +TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) { + personal_data_.ClearProfiles(); credit_card_save_manager_->SetCreditCardUploadEnabled(true); - // Remove the profiles that were created in the TestPersonalDataManager - // constructor because they would result in conflicting names that would - // prevent the upload. - personal_data_.ClearProfiles(); + // Don't fill or submit an address form. - // Create, fill and submit an address form in order to establish a recent - // profile which can be selected for the upload request. - FormData address_form; - test::CreateTestAddressFormData(&address_form); - FormsSeen(std::vector<FormData>(1, address_form)); - ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); - FormSubmitted(address_form); - - // Set up our credit card form data. Note that CVC field is missing. + // Set up our credit card form data. FormData credit_card_form; - credit_card_form.name = ASCIIToUTF16("MyForm"); - credit_card_form.origin = GURL("https://myform.com/form.html"); - credit_card_form.action = GURL("https://myform.com/submit.html"); - credit_card_form.main_frame_origin = - url::Origin::Create(GURL("http://myform_root.com/form.html")); - - FormFieldData field; - test::CreateTestFormField("Card Name", "cardname", "", "text", &field); - credit_card_form.fields.push_back(field); - test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); - credit_card_form.fields.push_back(field); - test::CreateTestFormField("Expiration Month", "ccmonth", "", "text", &field); - credit_card_form.fields.push_back(field); - test::CreateTestFormField("Expiration Year", "ccyear", "", "text", &field); - credit_card_form.fields.push_back(field); - + CreateTestCreditCardFormData(&credit_card_form, true, false); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. - credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master"); credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); credit_card_form.fields[2].value = ASCIIToUTF16("11"); credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); base::HistogramTester histogram_tester; - // Neither a local save nor an upload should happen in this case. + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing name/address. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); - EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); - // Verify that the correct histogram entry (and only that) was logged. - ExpectUniqueCardUploadDecision(histogram_tester, - AutofillMetrics::CVC_FIELD_NOT_FOUND); + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE); // Verify that the correct UKM was logged. - ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND); + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE); } -TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) { +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoProfileAvailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); personal_data_.ClearProfiles(); credit_card_save_manager_->SetCreditCardUploadEnabled(true); @@ -1171,6 +1504,61 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing name/address. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_RECENTLY_USED_ADDRESS); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_RECENTLY_USED_ADDRESS); + // Verify the histogram entry for recent profile modification. + histogram_tester.ExpectUniqueSample( + "Autofill.HasModifiedProfile.CreditCardFormSubmission", false, 1); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoRecentlyUsedProfile_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + // Create the test clock and set the time to a specific value. + TestAutofillClock test_clock; + test_clock.SetNow(kArbitraryTime); + + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit an address form in order to establish a profile. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set the current time to another value. + test_clock.SetNow(kMuchLaterTime); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1209,9 +1597,47 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing CVC, name, and address. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::CVC_VALUE_NOT_FOUND); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | AutofillMetrics::CVC_VALUE_NOT_FOUND | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_CvcUnavailableAndNoProfileAvailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Don't fill or submit an address form. + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16(""); // CVC MISSING + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. - // Note that AutofillManager should *check* for both no CVC and no address - // profile, but the no CVC case should have priority over being reported. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); @@ -1255,6 +1681,49 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing name. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_NAME); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_NAME); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoNameAvailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen(std::vector<FormData>(1, address_form)); + // But omit the name: + ManuallyFillAddressForm("", "", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, but don't include a name, and submit. + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1287,6 +1756,47 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing names/address. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_NAME); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ADDRESS_PROFILE | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_NAME); +} + +TEST_F( + CreditCardSaveManagerTest, + UploadCreditCard_NoNameAvailableAndNoProfileAvailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Don't fill or submit an address form. + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, but don't include a name, and submit. + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1341,6 +1851,60 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the conflicting zip codes. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_ZipCodesConflict_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit two address forms with different zip codes. + FormData address_form1, address_form2; + test::CreateTestAddressFormData(&address_form1); + test::CreateTestAddressFormData(&address_form2); + + std::vector<FormData> address_forms; + address_forms.push_back(address_form1); + address_forms.push_back(address_form2); + FormsSeen(address_forms); + ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); + + ManuallyFillAddressForm("Flo", "Master", "77401-8294", "US", &address_form1); + FormSubmitted(address_form1); + + ManuallyFillAddressForm("Flo", "Master", "77401-1234", "US", &address_form2); + FormSubmitted(address_form2); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + ExpectFillableFormParsedUkm(3 /* num_fillable_forms_parsed */); + + // Edit the data and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1389,6 +1953,58 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the conflicting zip codes. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_ZipCodesDoNotDiscardWhitespace_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create two separate profiles with different zip codes. Must directly add + // instead of submitting a form, because they're deduped on form submit. + AutofillProfile profile1; + profile1.set_guid("00000000-0000-0000-0000-000000000001"); + profile1.SetInfo(NAME_FULL, ASCIIToUTF16("Flo Master"), "en-US"); + profile1.SetInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("H3B2Y5"), "en-US"); + profile1.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA"), "en-US"); + personal_data_.AddProfile(profile1); + + AutofillProfile profile2; + profile2.set_guid("00000000-0000-0000-0000-000000000002"); + profile2.SetInfo(NAME_FULL, ASCIIToUTF16("Flo Master"), "en-US"); + profile2.SetInfo(ADDRESS_HOME_ZIP, ASCIIToUTF16("h3b 2y5"), "en-US"); + profile2.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA"), "en-US"); + personal_data_.AddProfile(profile2); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen({credit_card_form}); + + // Edit the data and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1479,6 +2095,56 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the missing zip code. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision(histogram_tester, + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NoZipCodeAvailable_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit an address form in order to establish a recent + // profile which can be selected for the upload request. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen(std::vector<FormData>(1, address_form)); + // Autofill's validation requirements for Venezuala ("VE", see + // src/components/autofill/core/browser/country_data.cc) do not require zip + // codes. We use Venezuala here because to use the US (or one of many other + // countries which autofill requires a zip code for) would result in no + // address being imported at all, and then we never reach the check for + // missing zip code in the upload code. + ManuallyFillAddressForm("Flo", "Master", "" /* zip_code */, "Venezuela", + &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Neither a local save nor an upload should happen in this case. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); @@ -1528,7 +2194,6 @@ EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); // Verify that the correct histogram entry (and only that) was logged. ExpectUniqueCardUploadDecision(histogram_tester, @@ -1605,11 +2270,53 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the mismatching names. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_CCFormHasCardholderMiddleName_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit address form without middle name. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + ManuallyFillAddressForm("John", "Adams", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen({credit_card_form}); + + // Edit the name by adding a middle name. + credit_card_form.fields[0].value = ASCIIToUTF16("John Quincy Adams"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Names match loosely but middle name mismatches. Upload should not happen. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); // Verify that the correct histogram entry (and only that) was logged. ExpectUniqueCardUploadDecision( @@ -1641,11 +2348,53 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the mismatching names. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_CCFormHasAddressMiddleName_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit address form with middle name. + FormData address_form; + test::CreateTestAddressFormData(&address_form); + FormsSeen({address_form}); + ManuallyFillAddressForm("John Quincy", "Adams", "77401", "US", &address_form); + FormSubmitted(address_form); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen({credit_card_form}); + + // Edit the name by removing middle name. + credit_card_form.fields[0].value = ASCIIToUTF16("John Adams"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Names match loosely but middle name mismatches. Upload should not happen. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); // Verify that the correct histogram entry (and only that) was logged. ExpectUniqueCardUploadDecision( @@ -1689,11 +2438,62 @@ base::HistogramTester histogram_tester; + // With the offer-to-save decision deferred to Google Payments, Payments can + // still decide to allow saving despite the mismatching names. + EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); + FormSubmitted(credit_card_form); + EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded()); + + // Verify that the correct histogram entries were logged. + ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED); + ExpectCardUploadDecision( + histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); + // Verify that the correct UKM was logged. + ExpectCardUploadDecisionUkm( + AutofillMetrics::UPLOAD_OFFERED | + AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); +} + +TEST_F(CreditCardSaveManagerTest, + UploadCreditCard_NamesHaveToMatch_DetectedValuesOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + personal_data_.ClearProfiles(); + credit_card_save_manager_->SetCreditCardUploadEnabled(true); + + // Create, fill and submit two address forms with different names. + FormData address_form1, address_form2; + test::CreateTestAddressFormData(&address_form1); + test::CreateTestAddressFormData(&address_form2); + + std::vector<FormData> address_forms; + address_forms.push_back(address_form1); + address_forms.push_back(address_form2); + FormsSeen(address_forms); + + ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form1); + FormSubmitted(address_form1); + + ManuallyFillAddressForm("Master", "Blaster", "77401", "US", &address_form2); + FormSubmitted(address_form2); + + // Set up our credit card form data. + FormData credit_card_form; + CreateTestCreditCardFormData(&credit_card_form, true, false); + FormsSeen(std::vector<FormData>(1, credit_card_form)); + + // Edit the data, but use yet another name, and submit. + credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master"); + credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); + credit_card_form.fields[2].value = ASCIIToUTF16("11"); + credit_card_form.fields[3].value = ASCIIToUTF16(NextYear()); + credit_card_form.fields[4].value = ASCIIToUTF16("123"); + + base::HistogramTester histogram_tester; + // Names are required to match, upload should not happen. EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); FormSubmitted(credit_card_form); EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded()); - EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty()); // Verify that the correct histogram entry (and only that) was logged. ExpectUniqueCardUploadDecision( @@ -2905,6 +3705,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_DoNotAddAnyFlagStatesToRequestIfExperimentsOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); personal_data_.ClearProfiles(); credit_card_save_manager_->SetCreditCardUploadEnabled(true); @@ -2970,7 +3771,8 @@ // Confirm that the "send pan first six" experiment flag was sent in the // request. EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(), - UnorderedElementsAre(kAutofillUpstreamSendPanFirstSix.name)); + UnorderedElementsAre(kAutofillUpstreamSendDetectedValues.name, + kAutofillUpstreamSendPanFirstSix.name)); } } // namespace autofill
diff --git a/components/autofill/core/browser/payments/payments_client_unittest.cc b/components/autofill/core/browser/payments/payments_client_unittest.cc index 50ef8b7..ad3833e 100644 --- a/components/autofill/core/browser/payments/payments_client_unittest.cc +++ b/components/autofill/core/browser/payments/payments_client_unittest.cc
@@ -74,6 +74,11 @@ kAutofillSendBillingCustomerNumber); } + void DisableAutofillUpstreamSendDetectedValuesExperiment() { + scoped_feature_list_.InitAndDisableFeature( + kAutofillUpstreamSendDetectedValues); + } + void EnableAutofillUpstreamSendDetectedValuesExperiment() { scoped_feature_list_.InitAndEnableFeature( kAutofillUpstreamSendDetectedValues); @@ -303,6 +308,8 @@ TEST_F(PaymentsClientTest, GetDetailsDoesNotIncludeDetectedValuesInRequestIfExperimentOff) { + DisableAutofillUpstreamSendDetectedValuesExperiment(); + StartGettingUploadDetails(); // Verify that the detected values were left out of the request.
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc index 3d9e3c4..db22684d 100644 --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc
@@ -15,7 +15,7 @@ // Controls whether the Autofill credit card dropdown shows Google Pay icon. const base::Feature kAutofillCreditCardDropdownGooglePayBranding{ "AutofillCreditCardDropdownGooglePayBranding", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether or not a minimum number of fields is required before // heuristic field type prediction is run for a form. @@ -55,11 +55,11 @@ // Controls whether the credit card upload bubble shows the Google Pay logo and // a shorter "Save card?" header message. const base::Feature kAutofillUpstreamUseGooglePayBranding{ - "AutofillUpstreamUseGooglePayBranding", base::FEATURE_DISABLED_BY_DEFAULT}; + "AutofillUpstreamUseGooglePayBranding", base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether to show new settings name in Autofill dropdown. const base::Feature kAutofillUseNewSettingsNameInDropdown{ - "AutofillUseNewSettingsNameInDropdown", base::FEATURE_DISABLED_BY_DEFAULT}; + "AutofillUseNewSettingsNameInDropdown", base::FEATURE_ENABLED_BY_DEFAULT}; } // namespace features } // namespace autofill
diff --git a/components/consent_auditor/consent_auditor.cc b/components/consent_auditor/consent_auditor.cc index 8ae79a4a..5e49fd42 100644 --- a/components/consent_auditor/consent_auditor.cc +++ b/components/consent_auditor/consent_auditor.cc
@@ -105,9 +105,11 @@ std::unique_ptr<sync_pb::UserEventSpecifics> specifics = ConstructUserConsent( feature, description_grd_ids, confirmation_grd_id, status); - // For real usage, UserEventSyncBridge should always be ready to receive - // events when a consent gets recorded. - // FakeUserEventService doesn't have a sync bridge. + // 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. @@ -115,11 +117,13 @@ user_event_service_->GetSyncBridge() ->change_processor() ->IsTrackingMetadata(); - // Although there is a DCHECK and we believe it should always be true, - // also record a histogram to verify this assumption. UMA_HISTOGRAM_BOOLEAN("Privacy.ConsentAuditor.UserEventServiceReady", event_service_ready); - DCHECK(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/cronet/android/api.txt b/components/cronet/android/api.txt index 2a0b8d0..c911c94 100644 --- a/components/cronet/android/api.txt +++ b/components/cronet/android/api.txt
@@ -253,9 +253,9 @@ public static final int WAITING_FOR_AVAILABLE_SOCKET; public static final int WAITING_FOR_DELEGATE; public static final int WAITING_FOR_CACHE; - public static final int DOWNLOADING_PROXY_SCRIPT; + public static final int DOWNLOADING_PAC_FILE; public static final int RESOLVING_PROXY_FOR_URL; - public static final int RESOLVING_HOST_IN_PROXY_SCRIPT; + public static final int RESOLVING_HOST_IN_PAC_FILE; public static final int ESTABLISHING_PROXY_TUNNEL; public static final int RESOLVING_HOST; public static final int CONNECTING;
diff --git a/components/cronet/android/api/src/org/chromium/net/UrlRequest.java b/components/cronet/android/api/src/org/chromium/net/UrlRequest.java index cf5250a..d809677 100644 --- a/components/cronet/android/api/src/org/chromium/net/UrlRequest.java +++ b/components/cronet/android/api/src/org/chromium/net/UrlRequest.java
@@ -277,7 +277,7 @@ * This state corresponds to a resource being blocked waiting for the * PAC script to be downloaded. */ - public static final int DOWNLOADING_PROXY_SCRIPT = 5; + public static final int DOWNLOADING_PAC_FILE = 5; /** * This state corresponds to a resource load that is blocked waiting for a * proxy autoconfig script to return a proxy server to use. @@ -288,7 +288,7 @@ * proxy autoconfig script to return a proxy server to use, but that proxy * script is busy resolving the IP address of a host. */ - public static final int RESOLVING_HOST_IN_PROXY_SCRIPT = 7; + public static final int RESOLVING_HOST_IN_PAC_FILE = 7; /** * This state indicates that we're in the process of establishing a tunnel * through the proxy server.
diff --git a/components/cronet/android/java/src/org/chromium/net/impl/UrlRequestBase.java b/components/cronet/android/java/src/org/chromium/net/impl/UrlRequestBase.java index a13eeb4..7eeab0905 100644 --- a/components/cronet/android/java/src/org/chromium/net/impl/UrlRequestBase.java +++ b/components/cronet/android/java/src/org/chromium/net/impl/UrlRequestBase.java
@@ -6,13 +6,13 @@ import android.support.annotation.IntDef; import static org.chromium.net.UrlRequest.Status.CONNECTING; -import static org.chromium.net.UrlRequest.Status.DOWNLOADING_PROXY_SCRIPT; +import static org.chromium.net.UrlRequest.Status.DOWNLOADING_PAC_FILE; import static org.chromium.net.UrlRequest.Status.ESTABLISHING_PROXY_TUNNEL; import static org.chromium.net.UrlRequest.Status.IDLE; import static org.chromium.net.UrlRequest.Status.INVALID; import static org.chromium.net.UrlRequest.Status.READING_RESPONSE; import static org.chromium.net.UrlRequest.Status.RESOLVING_HOST; -import static org.chromium.net.UrlRequest.Status.RESOLVING_HOST_IN_PROXY_SCRIPT; +import static org.chromium.net.UrlRequest.Status.RESOLVING_HOST_IN_PAC_FILE; import static org.chromium.net.UrlRequest.Status.RESOLVING_PROXY_FOR_URL; import static org.chromium.net.UrlRequest.Status.SENDING_REQUEST; import static org.chromium.net.UrlRequest.Status.SSL_HANDSHAKE; @@ -73,10 +73,9 @@ */ @IntDef({ INVALID, IDLE, WAITING_FOR_STALLED_SOCKET_POOL, WAITING_FOR_AVAILABLE_SOCKET, - WAITING_FOR_DELEGATE, WAITING_FOR_CACHE, DOWNLOADING_PROXY_SCRIPT, - RESOLVING_PROXY_FOR_URL, RESOLVING_HOST_IN_PROXY_SCRIPT, ESTABLISHING_PROXY_TUNNEL, - RESOLVING_HOST, CONNECTING, SSL_HANDSHAKE, SENDING_REQUEST, WAITING_FOR_RESPONSE, - READING_RESPONSE, + WAITING_FOR_DELEGATE, WAITING_FOR_CACHE, DOWNLOADING_PAC_FILE, RESOLVING_PROXY_FOR_URL, + RESOLVING_HOST_IN_PAC_FILE, ESTABLISHING_PROXY_TUNNEL, RESOLVING_HOST, CONNECTING, + SSL_HANDSHAKE, SENDING_REQUEST, WAITING_FOR_RESPONSE, READING_RESPONSE, }) @Retention(RetentionPolicy.SOURCE) public @interface StatusValues {} @@ -105,14 +104,14 @@ case (LoadState.WAITING_FOR_CACHE): return WAITING_FOR_CACHE; - case (LoadState.DOWNLOADING_PROXY_SCRIPT): - return DOWNLOADING_PROXY_SCRIPT; + case (LoadState.DOWNLOADING_PAC_FILE): + return DOWNLOADING_PAC_FILE; case (LoadState.RESOLVING_PROXY_FOR_URL): return RESOLVING_PROXY_FOR_URL; - case (LoadState.RESOLVING_HOST_IN_PROXY_SCRIPT): - return RESOLVING_HOST_IN_PROXY_SCRIPT; + case (LoadState.RESOLVING_HOST_IN_PAC_FILE): + return RESOLVING_HOST_IN_PAC_FILE; case (LoadState.ESTABLISHING_PROXY_TUNNEL): return ESTABLISHING_PROXY_TUNNEL;
diff --git a/components/cronet/native/cronet.idl b/components/cronet/native/cronet.idl index f9e22714..99f0073 100644 --- a/components/cronet/native/cronet.idl +++ b/components/cronet/native/cronet.idl
@@ -676,7 +676,7 @@ * This state corresponds to a resource being blocked waiting for the * PAC script to be downloaded. */ - DOWNLOADING_PROXY_SCRIPT = 5, + DOWNLOADING_PAC_FILE = 5, /** * This state corresponds to a resource load that is blocked waiting for a @@ -689,7 +689,7 @@ * proxy autoconfig script to return a proxy server to use, but that proxy * script is busy resolving the IP address of a host. */ - RESOLVING_HOST_IN_PROXY_SCRIPT = 7, + RESOLVING_HOST_IN_PAC_FILE = 7, /** * This state indicates that we're in the process of establishing a tunnel
diff --git a/components/cronet/native/generated/cronet.idl_c.h b/components/cronet/native/generated/cronet.idl_c.h index 53ba12d..dac363a 100644 --- a/components/cronet/native/generated/cronet.idl_c.h +++ b/components/cronet/native/generated/cronet.idl_c.h
@@ -135,9 +135,9 @@ Cronet_UrlRequestStatusListener_Status_WAITING_FOR_AVAILABLE_SOCKET = 2, Cronet_UrlRequestStatusListener_Status_WAITING_FOR_DELEGATE = 3, Cronet_UrlRequestStatusListener_Status_WAITING_FOR_CACHE = 4, - Cronet_UrlRequestStatusListener_Status_DOWNLOADING_PROXY_SCRIPT = 5, + Cronet_UrlRequestStatusListener_Status_DOWNLOADING_PAC_FILE = 5, Cronet_UrlRequestStatusListener_Status_RESOLVING_PROXY_FOR_URL = 6, - Cronet_UrlRequestStatusListener_Status_RESOLVING_HOST_IN_PROXY_SCRIPT = 7, + Cronet_UrlRequestStatusListener_Status_RESOLVING_HOST_IN_PAC_FILE = 7, Cronet_UrlRequestStatusListener_Status_ESTABLISHING_PROXY_TUNNEL = 8, Cronet_UrlRequestStatusListener_Status_RESOLVING_HOST = 9, Cronet_UrlRequestStatusListener_Status_CONNECTING = 10,
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn index 5287fb4..add18cd 100644 --- a/components/metrics/BUILD.gn +++ b/components/metrics/BUILD.gn
@@ -383,10 +383,7 @@ } if (is_chromeos) { - deps += [ - "leak_detector:unit_tests", - "//chromeos", - ] + deps += [ "//chromeos" ] } # iOS is not supported by the profiler and the ios-simulator bot chokes on
diff --git a/components/metrics/leak_detector/BUILD.gn b/components/metrics/leak_detector/BUILD.gn deleted file mode 100644 index a8426d98..0000000 --- a/components/metrics/leak_detector/BUILD.gn +++ /dev/null
@@ -1,66 +0,0 @@ -# Copyright 2016 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("//mojo/public/tools/bindings/mojom.gni") - -if (is_chromeos) { - source_set("leak_detector") { - sources = [ - "call_stack_manager.cc", - "call_stack_manager.h", - "call_stack_table.cc", - "call_stack_table.h", - "custom_allocator.cc", - "custom_allocator.h", - "gnu_build_id_reader.cc", - "gnu_build_id_reader.h", - "leak_analyzer.cc", - "leak_analyzer.h", - "leak_detector.cc", - "leak_detector.h", - "leak_detector_impl.cc", - "leak_detector_impl.h", - "leak_detector_value_type.cc", - "leak_detector_value_type.h", - "protobuf_to_mojo_converter.cc", - "protobuf_to_mojo_converter.h", - "ranked_set.cc", - "ranked_set.h", - ] - - deps = [ - ":interfaces", - "//base", - "//third_party/metrics_proto", - ] - } - - mojom("interfaces") { - sources = [ - "leak_detector.mojom", - ] - } - - source_set("unit_tests") { - testonly = true - sources = [ - "call_stack_manager_unittest.cc", - "call_stack_table_unittest.cc", - "leak_analyzer_unittest.cc", - "leak_detector_impl_unittest.cc", - "leak_detector_unittest.cc", - "protobuf_to_mojo_converter_unittest.cc", - "ranked_set_unittest.cc", - ] - - deps = [ - ":interfaces", - ":leak_detector", - "//base", - "//content/test:test_support", - "//testing/gtest", - "//third_party/metrics_proto", - ] - } -}
diff --git a/components/metrics/leak_detector/OWNERS b/components/metrics/leak_detector/OWNERS deleted file mode 100644 index 36706c05..0000000 --- a/components/metrics/leak_detector/OWNERS +++ /dev/null
@@ -1,9 +0,0 @@ -sque@chromium.org -wfh@chromium.org - -# Changes to Mojo interfaces require a security review to avoid -# introducing new sandbox escapes. -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Internals>Metrics
diff --git a/components/metrics/leak_detector/call_stack_manager.cc b/components/metrics/leak_detector/call_stack_manager.cc deleted file mode 100644 index afedeed..0000000 --- a/components/metrics/leak_detector/call_stack_manager.cc +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/call_stack_manager.h" - -#include <algorithm> // For std::copy. -#include <new> - -#include "base/hash.h" -#include "components/metrics/leak_detector/custom_allocator.h" - -namespace metrics { -namespace leak_detector { - -CallStackManager::CallStackManager() {} - -CallStackManager::~CallStackManager() { - // Free all call stack objects and clear |call_stacks_|. Make sure to save the - // CallStack object pointer and remove it from the container before freeing - // the CallStack memory. - while (!call_stacks_.empty()) { - CallStack* call_stack = *call_stacks_.begin(); - call_stacks_.erase(call_stacks_.begin()); - - CustomAllocator::Free(call_stack->stack, - call_stack->depth * sizeof(*call_stack->stack)); - call_stack->stack = nullptr; - call_stack->depth = 0; - - CustomAllocator::Free(call_stack, sizeof(CallStack)); - } -} - -const CallStack* CallStackManager::GetCallStack(size_t depth, - const void* const stack[]) { - // Temporarily create a call stack object for lookup in |call_stacks_|. - CallStack temp; - temp.depth = depth; - temp.stack = const_cast<const void**>(stack); - // This is the only place where the call stack's hash is computed. This value - // can be reused in the created object to avoid further hash computation. - temp.hash = base::Hash(stack, sizeof(*stack) * depth); - - auto iter = call_stacks_.find(&temp); - if (iter != call_stacks_.end()) - return *iter; - - // Since |call_stacks_| stores CallStack pointers rather than actual objects, - // create new call objects manually here. - CallStack* call_stack = - new (CustomAllocator::Allocate(sizeof(CallStack))) CallStack; - call_stack->depth = depth; - call_stack->hash = temp.hash; // Don't run the hash function again. - call_stack->stack = reinterpret_cast<const void**>( - CustomAllocator::Allocate(sizeof(*stack) * depth)); - std::copy(stack, stack + depth, call_stack->stack); - - call_stacks_.insert(call_stack); - return call_stack; -} - -bool CallStackManager::CallStackPointerEqual::operator()( - const CallStack* c1, - const CallStack* c2) const { - return c1->depth == c2->depth && c1->hash == c2->hash && - std::equal(c1->stack, c1->stack + c1->depth, c2->stack); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/call_stack_manager.h b/components/metrics/leak_detector/call_stack_manager.h deleted file mode 100644 index a411bcab..0000000 --- a/components/metrics/leak_detector/call_stack_manager.h +++ /dev/null
@@ -1,102 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_CALL_STACK_MANAGER_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_CALL_STACK_MANAGER_H_ - -#include <stddef.h> -#include <stdint.h> - -#include "base/containers/hash_tables.h" -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/stl_allocator.h" - -// Summary of structures: -// -// struct CallStack: -// Represents a unique call stack, defined by its raw call stack (array of -// pointers), and hash value. All CallStack objects are owned by class -// CallStackManager. Other classes may hold pointers to them but should not -// attempt to create or modify any CallStack objects. -// -// class CallStackManager: -// Creates CallStack objects to represent unique call stacks. Owns all -// CallStack objects that it creates, storing them internally. -// -// Returns the call stacks as const pointers because no caller should take -// ownership of them and modify or delete them. The lifetime of all CallStack -// objects is limited to that of the CallStackManager object that created -// them. When the CallStackManager is destroyed, the CallStack objects will be -// invalidated. Hence the caller should make sure that it does not use -// CallStack objects beyond the lifetime of the CallStackManager that created -// them. - -namespace metrics { -namespace leak_detector { - -// Struct to represent a call stack. -struct CallStack { - // Call stack as an array of pointers, |stack|. The array length is stored in - // |depth|. There is no null terminator. - const void** stack; - size_t depth; - - // Hash of call stack. It is cached here so that it doesn not have to be - // recomputed each time. - size_t hash; -}; - -// Maintains and owns all unique call stack objects. -// Not thread-safe. -class CallStackManager { - public: - CallStackManager(); - ~CallStackManager(); - - // Returns a CallStack object for a given raw call stack. The first time a - // particular raw call stack is passed into this function, it will create a - // new CallStack object to hold the raw call stack data, and then return it. - // The CallStack object is stored internally. - // - // On subsequent calls with the same raw call stack, this function will return - // the previously created CallStack object. - const CallStack* GetCallStack(size_t depth, const void* const stack[]); - - size_t size() const { return call_stacks_.size(); } - - private: - // Allocator class for unique call stacks. Uses CustomAllocator to avoid - // recursive malloc hook invocation when analyzing allocs and frees. - using CallStackPointerAllocator = STLAllocator<CallStack*, CustomAllocator>; - - // Hash operator for call stack object given as a pointer. - // Does not actually compute the hash. Instead, returns the already computed - // hash value stored in a CallStack object. - struct CallStackPointerStoredHash { - size_t operator()(const CallStack* call_stack) const { - return call_stack->hash; - } - }; - - // Equality comparator for call stack objects given as pointers. Compares - // their stack trace contents. - struct CallStackPointerEqual { - bool operator()(const CallStack* c1, const CallStack* c2) const; - }; - - // Holds all call stack objects. Each object is allocated elsewhere and stored - // as a pointer because the container may rearrange itself internally. - base::hash_set<CallStack*, - CallStackPointerStoredHash, - CallStackPointerEqual, - CallStackPointerAllocator> call_stacks_; - - DISALLOW_COPY_AND_ASSIGN(CallStackManager); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_CALL_STACK_MANAGER_H_
diff --git a/components/metrics/leak_detector/call_stack_manager_unittest.cc b/components/metrics/leak_detector/call_stack_manager_unittest.cc deleted file mode 100644 index 48f3401..0000000 --- a/components/metrics/leak_detector/call_stack_manager_unittest.cc +++ /dev/null
@@ -1,260 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/call_stack_manager.h" - -#include <stdint.h> - -#include <algorithm> -#include <memory> - -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Some test call stacks. The addresses are 64-bit but they should automatically -// be truncated to 32 bits on a 32-bit machine. -const void* kRawStack0[] = { - reinterpret_cast<const void*>(0x8899aabbccddeeff), - reinterpret_cast<const void*>(0x0000112233445566), - reinterpret_cast<const void*>(0x5566778899aabbcc), - reinterpret_cast<const void*>(0x9988776655443322), -}; -// This is similar to kRawStack0, differing only in one address by 1. It should -// still produce a distinct CallStack object and hash. -const void* kRawStack1[] = { - kRawStack0[0], kRawStack0[1], - reinterpret_cast<const void*>(reinterpret_cast<uintptr_t>(kRawStack0[2]) + - 1), - kRawStack0[3], -}; -const void* kRawStack2[] = { - reinterpret_cast<const void*>(0x900df00dcab58888), - reinterpret_cast<const void*>(0x00001337cafedeed), - reinterpret_cast<const void*>(0x0000deafbabe1234), -}; -const void* kRawStack3[] = { - reinterpret_cast<const void*>(0x0000000012345678), - reinterpret_cast<const void*>(0x00000000abcdef01), - reinterpret_cast<const void*>(0x00000000fdecab98), - reinterpret_cast<const void*>(0x0000deadbeef0001), - reinterpret_cast<const void*>(0x0000900ddeed0002), - reinterpret_cast<const void*>(0x0000f00dcafe0003), - reinterpret_cast<const void*>(0x0000f00d900d0004), - reinterpret_cast<const void*>(0xdeedcafebabe0005), -}; - -// Creates a copy of a call stack as a scoped_ptr to a raw stack. The depth is -// the same as the original stack, but it is not stored in the result. -std::unique_ptr<const void* []> CopyStack(const CallStack* stack) { - std::unique_ptr<const void* []> stack_copy(new const void*[stack->depth]); - std::copy(stack->stack, stack->stack + stack->depth, stack_copy.get()); - return stack_copy; -} - -} // namespace - -class CallStackManagerTest : public ::testing::Test { - public: - CallStackManagerTest() {} - - void SetUp() override { CustomAllocator::Initialize(); } - void TearDown() override { EXPECT_TRUE(CustomAllocator::Shutdown()); } - - private: - DISALLOW_COPY_AND_ASSIGN(CallStackManagerTest); -}; - -TEST_F(CallStackManagerTest, NewStacks) { - CallStackManager manager; - EXPECT_EQ(0U, manager.size()); - - // Request some new stacks and make sure their creation is reflected in the - // size of |manager|. - const CallStack* stack0 = - manager.GetCallStack(arraysize(kRawStack0), kRawStack0); - EXPECT_EQ(arraysize(kRawStack0), stack0->depth); - EXPECT_EQ(1U, manager.size()); - - const CallStack* stack1 = - manager.GetCallStack(arraysize(kRawStack1), kRawStack1); - EXPECT_EQ(arraysize(kRawStack1), stack1->depth); - EXPECT_EQ(2U, manager.size()); - - const CallStack* stack2 = - manager.GetCallStack(arraysize(kRawStack2), kRawStack2); - EXPECT_EQ(arraysize(kRawStack2), stack2->depth); - EXPECT_EQ(3U, manager.size()); - - const CallStack* stack3 = - manager.GetCallStack(arraysize(kRawStack3), kRawStack3); - EXPECT_EQ(arraysize(kRawStack3), stack3->depth); - EXPECT_EQ(4U, manager.size()); - - // Call stack objects should be unique. - EXPECT_NE(stack0, stack1); - EXPECT_NE(stack0, stack2); - EXPECT_NE(stack0, stack3); - EXPECT_NE(stack1, stack2); - EXPECT_NE(stack1, stack3); - EXPECT_NE(stack2, stack3); -} - -TEST_F(CallStackManagerTest, Hashes) { - CallStackManager manager; - - const CallStack* stack0 = - manager.GetCallStack(arraysize(kRawStack0), kRawStack0); - const CallStack* stack1 = - manager.GetCallStack(arraysize(kRawStack1), kRawStack1); - const CallStack* stack2 = - manager.GetCallStack(arraysize(kRawStack2), kRawStack2); - const CallStack* stack3 = - manager.GetCallStack(arraysize(kRawStack3), kRawStack3); - - // Hash values should be unique. This test is not designed to make sure the - // hash function is generating unique hashes, but that CallStackManager is - // properly storing the hashes in CallStack structs. - EXPECT_NE(stack0->hash, stack1->hash); - EXPECT_NE(stack0->hash, stack2->hash); - EXPECT_NE(stack0->hash, stack3->hash); - EXPECT_NE(stack1->hash, stack2->hash); - EXPECT_NE(stack1->hash, stack3->hash); - EXPECT_NE(stack2->hash, stack3->hash); -} - -TEST_F(CallStackManagerTest, MultipleManagersHashes) { - CallStackManager manager1; - const CallStack* stack10 = - manager1.GetCallStack(arraysize(kRawStack0), kRawStack0); - const CallStack* stack11 = - manager1.GetCallStack(arraysize(kRawStack1), kRawStack1); - const CallStack* stack12 = - manager1.GetCallStack(arraysize(kRawStack2), kRawStack2); - const CallStack* stack13 = - manager1.GetCallStack(arraysize(kRawStack3), kRawStack3); - - CallStackManager manager2; - const CallStack* stack20 = - manager2.GetCallStack(arraysize(kRawStack0), kRawStack0); - const CallStack* stack21 = - manager2.GetCallStack(arraysize(kRawStack1), kRawStack1); - const CallStack* stack22 = - manager2.GetCallStack(arraysize(kRawStack2), kRawStack2); - const CallStack* stack23 = - manager2.GetCallStack(arraysize(kRawStack3), kRawStack3); - - // Different CallStackManagers should still generate the same hashes. - EXPECT_EQ(stack10->hash, stack20->hash); - EXPECT_EQ(stack11->hash, stack21->hash); - EXPECT_EQ(stack12->hash, stack22->hash); - EXPECT_EQ(stack13->hash, stack23->hash); -} - -TEST_F(CallStackManagerTest, HashWithReducedDepth) { - CallStackManager manager; - const CallStack* stack = - manager.GetCallStack(arraysize(kRawStack3), kRawStack3); - - // Hash function should only operate on the first |CallStack::depth| elements - // of CallStack::stack. To test this, reduce the depth value of one of the - // stacks and make sure the hash changes. - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 1, stack->stack)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 2, stack->stack)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 3, stack->stack)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 4, stack->stack)->hash); - - // Also try subsets of the stack that don't start from the beginning. - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 1, stack->stack + 1)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 2, stack->stack + 2)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 3, stack->stack + 3)->hash); - EXPECT_NE(stack->hash, - manager.GetCallStack(stack->depth - 4, stack->stack + 4)->hash); -} - -TEST_F(CallStackManagerTest, DuplicateStacks) { - CallStackManager manager; - EXPECT_EQ(0U, manager.size()); - - // Calling manager.GetCallStack() multiple times with the same raw stack - // arguments will not result in creation of new call stack objects after the - // first call. Instead, the previously created object will be returned, and - // the size of |manager| will remain unchanged. - // - // Thus a call to GetCallStack() will always return the same result, given the - // same inputs. - - // Add stack0. - const CallStack* stack0 = - manager.GetCallStack(arraysize(kRawStack0), kRawStack0); - - std::unique_ptr<const void* []> rawstack0_duplicate0 = CopyStack(stack0); - const CallStack* stack0_duplicate0 = - manager.GetCallStack(arraysize(kRawStack0), rawstack0_duplicate0.get()); - EXPECT_EQ(1U, manager.size()); - EXPECT_EQ(stack0, stack0_duplicate0); - - // Add stack1. - const CallStack* stack1 = - manager.GetCallStack(arraysize(kRawStack1), kRawStack1); - EXPECT_EQ(2U, manager.size()); - - std::unique_ptr<const void* []> rawstack0_duplicate1 = CopyStack(stack0); - const CallStack* stack0_duplicate1 = - manager.GetCallStack(arraysize(kRawStack0), rawstack0_duplicate1.get()); - EXPECT_EQ(2U, manager.size()); - EXPECT_EQ(stack0, stack0_duplicate1); - - std::unique_ptr<const void* []> rawstack1_duplicate0 = CopyStack(stack1); - const CallStack* stack1_duplicate0 = - manager.GetCallStack(arraysize(kRawStack1), rawstack1_duplicate0.get()); - EXPECT_EQ(2U, manager.size()); - EXPECT_EQ(stack1, stack1_duplicate0); - - // Add stack2 and stack3. - const CallStack* stack2 = - manager.GetCallStack(arraysize(kRawStack2), kRawStack2); - const CallStack* stack3 = - manager.GetCallStack(arraysize(kRawStack3), kRawStack3); - EXPECT_EQ(4U, manager.size()); - - std::unique_ptr<const void* []> rawstack1_duplicate1 = CopyStack(stack1); - const CallStack* stack1_duplicate1 = - manager.GetCallStack(arraysize(kRawStack1), rawstack1_duplicate1.get()); - EXPECT_EQ(4U, manager.size()); - EXPECT_EQ(stack1, stack1_duplicate1); - - std::unique_ptr<const void* []> rawstack0_duplicate2 = CopyStack(stack0); - const CallStack* stack0_duplicate2 = - manager.GetCallStack(arraysize(kRawStack0), rawstack0_duplicate2.get()); - EXPECT_EQ(4U, manager.size()); - EXPECT_EQ(stack0, stack0_duplicate2); - - std::unique_ptr<const void* []> rawstack3_duplicate0 = CopyStack(stack3); - const CallStack* stack3_duplicate0 = - manager.GetCallStack(arraysize(kRawStack3), rawstack3_duplicate0.get()); - EXPECT_EQ(4U, manager.size()); - EXPECT_EQ(stack3, stack3_duplicate0); - - std::unique_ptr<const void* []> rawstack2_duplicate0 = CopyStack(stack2); - const CallStack* stack2_duplicate0 = - manager.GetCallStack(arraysize(kRawStack2), rawstack2_duplicate0.get()); - EXPECT_EQ(4U, manager.size()); - EXPECT_EQ(stack2, stack2_duplicate0); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/call_stack_table.cc b/components/metrics/leak_detector/call_stack_table.cc deleted file mode 100644 index ec9b7869..0000000 --- a/components/metrics/leak_detector/call_stack_table.cc +++ /dev/null
@@ -1,108 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/call_stack_table.h" - -#include <algorithm> - -#include "components/metrics/leak_detector/call_stack_manager.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -using ValueType = LeakDetectorValueType; - -// During leak analysis, we only want to examine the top -// |kMaxCountOfSuspciousStacks| entries. -const int kMaxCountOfSuspciousStacks = 16; - -const int kInitialHashTableSize = 1999; - -} // namespace - -size_t CallStackTable::StoredHash::operator()( - const CallStack* call_stack) const { - // The call stack object should already have a hash computed when it was - // created. - // - // This is NOT the actual hash computation function for a new call stack. - return call_stack->hash; -} - -CallStackTable::CallStackTable(int call_stack_suspicion_threshold) - : num_allocs_(0), - num_frees_(0), - entry_map_(kInitialHashTableSize), - leak_analyzer_(kMaxCountOfSuspciousStacks, - call_stack_suspicion_threshold) {} - -CallStackTable::~CallStackTable() {} - -void CallStackTable::Add(const CallStack* call_stack) { - ++entry_map_[call_stack].count; - ++num_allocs_; -} - -void CallStackTable::Remove(const CallStack* call_stack) { - auto iter = entry_map_.find(call_stack); - if (iter == entry_map_.end()) - return; - uint32_t& count_for_call_stack = iter->second.count; - --count_for_call_stack; - ++num_frees_; - - // Delete zero-alloc entries to free up space. - if (count_for_call_stack == 0) - entry_map_.erase(iter); -} - -void CallStackTable::TestForLeaks() { - // Add all entries to the ranked list. - RankedSet ranked_entries(kMaxCountOfSuspciousStacks); - GetTopCallStacks(&ranked_entries); - leak_analyzer_.AddSample(std::move(ranked_entries)); -} - -void CallStackTable::GetTopCallStacks(RankedSet* top_entries) const { - for (const auto& call_stack_count_info : entry_map_) { - top_entries->AddCallStack(call_stack_count_info.first, - call_stack_count_info.second.count); - } -} - -void CallStackTable::UpdateLastDropInfo(size_t timestamp) { - for (auto& call_stack_and_info : entry_map_) { - auto& count_info = call_stack_and_info.second; - - // If the |previous_count| is 0 then we need to initialize info. - if (count_info.previous_count == 0 || - count_info.count < count_info.previous_count) { - count_info.last_drop_timestamp = timestamp; - count_info.last_drop_count = count_info.count; - } - count_info.previous_count = count_info.count; - } -} - -void CallStackTable::GetLastUptrendInfo( - const CallStack* call_stack, size_t timestamp, size_t* timestamp_delta, - uint32_t* count_delta) const { - const auto& call_stack_count_info_iter = entry_map_.find(call_stack); - - if (call_stack_count_info_iter != entry_map_.end()) { - const auto& count_info = call_stack_count_info_iter->second; - *timestamp_delta = timestamp - count_info.last_drop_timestamp; - *count_delta = count_info.count - count_info.last_drop_count; - } else { - DLOG(WARNING) << "Accessing information about a call stack that has not " - << "been recorded"; - *timestamp_delta = timestamp; - *count_delta = 0; - } -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/call_stack_table.h b/components/metrics/leak_detector/call_stack_table.h deleted file mode 100644 index 8372716..0000000 --- a/components/metrics/leak_detector/call_stack_table.h +++ /dev/null
@@ -1,109 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_CALL_STACK_TABLE_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_CALL_STACK_TABLE_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <functional> // For std::equal_to. - -#include "base/containers/hash_tables.h" -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_analyzer.h" -#include "components/metrics/leak_detector/ranked_set.h" -#include "components/metrics/leak_detector/stl_allocator.h" - -namespace metrics { -namespace leak_detector { - -struct CallStack; - -// Contains a hash table where the key is the call stack and the value is the -// number of allocations from that call stack. -// Not thread-safe. -class CallStackTable { - public: - struct StoredHash { - size_t operator()(const CallStack* call_stack) const; - }; - - explicit CallStackTable(int call_stack_suspicion_threshold); - ~CallStackTable(); - - // Add/Remove an allocation for the given call stack. - // Note that this class does NOT own the CallStack objects. Instead, it - // identifies different CallStacks by their hashes. - void Add(const CallStack* call_stack); - void Remove(const CallStack* call_stack); - - // Check for leak patterns in the allocation data. - void TestForLeaks(); - - // Get the top N entries in the CallStackTable, ranked by net number of - // allocations. N is given by |top_entries->max_size()|, so |*top_entries| - // must already be initialized with that number. - void GetTopCallStacks(RankedSet* top_entries) const; - - // Updates information about the last seen drop in the number of allocations - // and sets the |previous_count| for every stored call stack, both inside - // |entry_map_|. It should be called in the analysis phase, before the - // reports are generated, with |timestamp| describing current point in the - // timeline. - void UpdateLastDropInfo(size_t timestamp); - - // Retrieves the change in timestamp and allocation count since the last - // observed drop in the number for allocations for the given call stack - // (or since the oldest kept record for the call stacks if there were no - // drops) - void GetLastUptrendInfo( - const CallStack* call_stack, size_t timestamp, size_t *timestamp_delta, - uint32_t *count_delta) const; - - const LeakAnalyzer& leak_analyzer() const { return leak_analyzer_; } - - size_t size() const { return entry_map_.size(); } - bool empty() const { return entry_map_.empty(); } - - uint32_t num_allocs() const { return num_allocs_; } - uint32_t num_frees() const { return num_frees_; } - - private: - struct CallStackCountInfo { - uint32_t count, previous_count, last_drop_count; - size_t last_drop_timestamp; - CallStackCountInfo() : count(0), previous_count(0), last_drop_count(0), - last_drop_timestamp(0) {} - }; - - // Total number of allocs and frees in this table. - uint32_t num_allocs_; - uint32_t num_frees_; - - // Hash table containing entries. Uses CustomAllocator to avoid recursive - // malloc hook invocation when analyzing allocs and frees. - using TableEntryAllocator = - STLAllocator<std::pair<const CallStack* const, CallStackCountInfo>, - CustomAllocator>; - - // Stores a mapping of each call stack to the number of recorded allocations - // made from that call site. - base::hash_map<const CallStack*, - CallStackCountInfo, - StoredHash, - std::equal_to<const CallStack*>, - TableEntryAllocator> entry_map_; - - // For detecting leak patterns in incoming allocations. - LeakAnalyzer leak_analyzer_; - - DISALLOW_COPY_AND_ASSIGN(CallStackTable); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_CALL_STACK_TABLE_H_
diff --git a/components/metrics/leak_detector/call_stack_table_unittest.cc b/components/metrics/leak_detector/call_stack_table_unittest.cc deleted file mode 100644 index 253b2bc..0000000 --- a/components/metrics/leak_detector/call_stack_table_unittest.cc +++ /dev/null
@@ -1,458 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/call_stack_table.h" - -#include <memory> -#include <set> - -#include "base/macros.h" -#include "components/metrics/leak_detector/call_stack_manager.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Default threshold used for leak analysis. -const int kDefaultLeakThreshold = 5; - -// Some test call stacks. -const void* kRawStack0[] = { - reinterpret_cast<const void*>(0xaabbccdd), - reinterpret_cast<const void*>(0x11223344), - reinterpret_cast<const void*>(0x55667788), - reinterpret_cast<const void*>(0x99887766), -}; -const void* kRawStack1[] = { - reinterpret_cast<const void*>(0xdeadbeef), - reinterpret_cast<const void*>(0x900df00d), - reinterpret_cast<const void*>(0xcafedeed), - reinterpret_cast<const void*>(0xdeafbabe), -}; -const void* kRawStack2[] = { - reinterpret_cast<const void*>(0x12345678), - reinterpret_cast<const void*>(0xabcdef01), - reinterpret_cast<const void*>(0xfdecab98), -}; -const void* kRawStack3[] = { - reinterpret_cast<const void*>(0xdead0001), - reinterpret_cast<const void*>(0xbeef0002), - reinterpret_cast<const void*>(0x900d0003), - reinterpret_cast<const void*>(0xf00d0004), - reinterpret_cast<const void*>(0xcafe0005), - reinterpret_cast<const void*>(0xdeed0006), - reinterpret_cast<const void*>(0xdeaf0007), - reinterpret_cast<const void*>(0xbabe0008), -}; - -} // namespace - -class CallStackTableTest : public ::testing::Test { - public: - CallStackTableTest() - : stack0_(nullptr), - stack1_(nullptr), - stack2_(nullptr), - stack3_(nullptr) {} - - void SetUp() override { - CustomAllocator::Initialize(); - - manager_.reset(new CallStackManager); - - // The unit tests expect a certain order to the call stack pointers. It is - // an important detail when checking the output of LeakAnalyzer's suspected - // leaks, which are ordered by the leak value (call stack pointer). Use a - // set to sort the pointers as they are created. - std::set<const CallStack*> stacks; - stacks.insert(manager_->GetCallStack(arraysize(kRawStack0), kRawStack0)); - stacks.insert(manager_->GetCallStack(arraysize(kRawStack1), kRawStack1)); - stacks.insert(manager_->GetCallStack(arraysize(kRawStack2), kRawStack2)); - stacks.insert(manager_->GetCallStack(arraysize(kRawStack3), kRawStack3)); - ASSERT_EQ(4U, stacks.size()); - - std::set<const CallStack*>::const_iterator iter = stacks.begin(); - stack0_ = *iter++; - stack1_ = *iter++; - stack2_ = *iter++; - stack3_ = *iter++; - } - - void TearDown() override { - // All call stacks generated by |manager_| will be invalidated when it is - // destroyed. - stack0_ = nullptr; - stack1_ = nullptr; - stack2_ = nullptr; - stack3_ = nullptr; - - // Destroy the call stack manager before shutting down the allocator. - manager_.reset(); - - EXPECT_TRUE(CustomAllocator::Shutdown()); - } - - protected: - // Unit tests should directly reference these pointers to CallStack objects. - const CallStack* stack0_; - const CallStack* stack1_; - const CallStack* stack2_; - const CallStack* stack3_; - - private: - std::unique_ptr<CallStackManager> manager_; - - DISALLOW_COPY_AND_ASSIGN(CallStackTableTest); -}; - -TEST_F(CallStackTableTest, PointerOrder) { - EXPECT_LT(stack0_, stack1_); - EXPECT_LT(stack1_, stack2_); - EXPECT_LT(stack2_, stack3_); -} - -TEST_F(CallStackTableTest, EmptyTable) { - CallStackTable table(kDefaultLeakThreshold); - EXPECT_TRUE(table.empty()); - - EXPECT_EQ(0U, table.num_allocs()); - EXPECT_EQ(0U, table.num_frees()); - - // The table should be able to gracefully handle an attempt to remove a call - // stack entry when none exists. - table.Remove(stack0_); - table.Remove(stack1_); - table.Remove(stack2_); - table.Remove(stack3_); - - EXPECT_EQ(0U, table.num_allocs()); - EXPECT_EQ(0U, table.num_frees()); -} - -TEST_F(CallStackTableTest, InsertionAndRemoval) { - CallStackTable table(kDefaultLeakThreshold); - - table.Add(stack0_); - EXPECT_EQ(1U, table.size()); - EXPECT_EQ(1U, table.num_allocs()); - table.Add(stack1_); - EXPECT_EQ(2U, table.size()); - EXPECT_EQ(2U, table.num_allocs()); - table.Add(stack2_); - EXPECT_EQ(3U, table.size()); - EXPECT_EQ(3U, table.num_allocs()); - table.Add(stack3_); - EXPECT_EQ(4U, table.size()); - EXPECT_EQ(4U, table.num_allocs()); - - // Add some call stacks that have already been added. There should be no - // change in the number of entries, as they are aggregated by call stack. - table.Add(stack2_); - EXPECT_EQ(4U, table.size()); - EXPECT_EQ(5U, table.num_allocs()); - table.Add(stack3_); - EXPECT_EQ(4U, table.size()); - EXPECT_EQ(6U, table.num_allocs()); - - // Start removing entries. - EXPECT_EQ(0U, table.num_frees()); - - table.Remove(stack0_); - EXPECT_EQ(3U, table.size()); - EXPECT_EQ(1U, table.num_frees()); - table.Remove(stack1_); - EXPECT_EQ(2U, table.size()); - EXPECT_EQ(2U, table.num_frees()); - - // Removing call stacks with multiple counts will not reduce the overall - // number of table entries, until the count reaches 0. - table.Remove(stack2_); - EXPECT_EQ(2U, table.size()); - EXPECT_EQ(3U, table.num_frees()); - table.Remove(stack3_); - EXPECT_EQ(2U, table.size()); - EXPECT_EQ(4U, table.num_frees()); - - table.Remove(stack2_); - EXPECT_EQ(1U, table.size()); - EXPECT_EQ(5U, table.num_frees()); - table.Remove(stack3_); - EXPECT_EQ(0U, table.size()); - EXPECT_EQ(6U, table.num_frees()); - - // Now the table should be empty, but attempt to remove some more and make - // sure nothing breaks. - table.Remove(stack0_); - table.Remove(stack1_); - table.Remove(stack2_); - table.Remove(stack3_); - - EXPECT_TRUE(table.empty()); - EXPECT_EQ(6U, table.num_allocs()); - EXPECT_EQ(6U, table.num_frees()); -} - -TEST_F(CallStackTableTest, MassiveInsertionAndRemoval) { - CallStackTable table(kDefaultLeakThreshold); - - for (int i = 0; i < 100; ++i) - table.Add(stack3_); - EXPECT_EQ(1U, table.size()); - EXPECT_EQ(100U, table.num_allocs()); - - for (int i = 0; i < 100; ++i) - table.Add(stack2_); - EXPECT_EQ(2U, table.size()); - EXPECT_EQ(200U, table.num_allocs()); - - for (int i = 0; i < 100; ++i) - table.Add(stack1_); - EXPECT_EQ(3U, table.size()); - EXPECT_EQ(300U, table.num_allocs()); - - for (int i = 0; i < 100; ++i) - table.Add(stack0_); - EXPECT_EQ(4U, table.size()); - EXPECT_EQ(400U, table.num_allocs()); - - // Remove them in a different order, by removing one of each stack during one - // iteration. The size should not decrease until the last iteration. - EXPECT_EQ(0U, table.num_frees()); - - for (int i = 0; i < 100; ++i) { - table.Remove(stack0_); - EXPECT_EQ(4U * i + 1, table.num_frees()); - - table.Remove(stack1_); - EXPECT_EQ(4U * i + 2, table.num_frees()); - - table.Remove(stack2_); - EXPECT_EQ(4U * i + 3, table.num_frees()); - - table.Remove(stack3_); - EXPECT_EQ(4U * i + 4, table.num_frees()); - } - EXPECT_EQ(400U, table.num_frees()); - EXPECT_TRUE(table.empty()); - - // Try to remove some more from an empty table and make sure nothing breaks. - table.Remove(stack0_); - table.Remove(stack1_); - table.Remove(stack2_); - table.Remove(stack3_); - - EXPECT_TRUE(table.empty()); - EXPECT_EQ(400U, table.num_allocs()); - EXPECT_EQ(400U, table.num_frees()); -} - -TEST_F(CallStackTableTest, DetectLeak) { - CallStackTable table(kDefaultLeakThreshold); - - // Add some base number of entries. - for (int i = 0; i < 60; ++i) - table.Add(stack0_); - for (int i = 0; i < 50; ++i) - table.Add(stack1_); - for (int i = 0; i < 64; ++i) - table.Add(stack2_); - for (int i = 0; i < 72; ++i) - table.Add(stack3_); - - table.TestForLeaks(); - EXPECT_TRUE(table.leak_analyzer().suspected_leaks().empty()); - - // Use the following scheme: - // - stack0_: increase by 4 each time -- leak suspect - // - stack1_: increase by 3 each time -- leak suspect - // - stack2_: increase by 1 each time -- not a suspect - // - stack3_: alternate between increasing and decreasing - not a suspect - bool increase_kstack3 = true; - for (int i = 0; i < kDefaultLeakThreshold; ++i) { - EXPECT_TRUE(table.leak_analyzer().suspected_leaks().empty()); - - for (int j = 0; j < 4; ++j) - table.Add(stack0_); - - for (int j = 0; j < 3; ++j) - table.Add(stack1_); - - table.Add(stack2_); - - // Alternate between adding and removing. - if (increase_kstack3) - table.Add(stack3_); - else - table.Remove(stack3_); - increase_kstack3 = !increase_kstack3; - - table.TestForLeaks(); - } - - // Check that the correct leak values have been detected. - const auto& leaks = table.leak_analyzer().suspected_leaks(); - ASSERT_EQ(2U, leaks.size()); - // Suspected leaks are reported in increasing leak value -- in this case, the - // CallStack object's address. - EXPECT_EQ(stack0_, leaks[0].call_stack()); - EXPECT_EQ(stack1_, leaks[1].call_stack()); -} - -TEST_F(CallStackTableTest, GetTopCallStacks) { - CallStackTable table(kDefaultLeakThreshold); - - // Add a bunch of entries. - for (int i = 0; i < 60; ++i) - table.Add(stack0_); - for (int i = 0; i < 50; ++i) - table.Add(stack1_); - for (int i = 0; i < 64; ++i) - table.Add(stack2_); - for (int i = 0; i < 72; ++i) - table.Add(stack3_); - - // Get the call sites ordered from least to greatest number of entries. - RankedSet top_four(4); - table.GetTopCallStacks(&top_four); - ASSERT_EQ(4U, top_four.size()); - auto iter = top_four.begin(); - EXPECT_EQ(72, iter->count); - EXPECT_EQ(stack3_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(64, iter->count); - EXPECT_EQ(stack2_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(60, iter->count); - EXPECT_EQ(stack0_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(50, iter->count); - EXPECT_EQ(stack1_, iter->value.call_stack()); - - // Get the top three call sites ordered from least to greatest number of - // entries. - RankedSet top_three(3); - table.GetTopCallStacks(&top_three); - ASSERT_EQ(3U, top_three.size()); - iter = top_three.begin(); - EXPECT_EQ(72, iter->count); - EXPECT_EQ(stack3_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(64, iter->count); - EXPECT_EQ(stack2_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(60, iter->count); - EXPECT_EQ(stack0_, iter->value.call_stack()); - - // Get the top two call sites ordered from least to greatest number of - // entries. - RankedSet top_two(2); - table.GetTopCallStacks(&top_two); - ASSERT_EQ(2U, top_two.size()); - iter = top_two.begin(); - EXPECT_EQ(72, iter->count); - EXPECT_EQ(stack3_, iter->value.call_stack()); - ++iter; - EXPECT_EQ(64, iter->count); - EXPECT_EQ(stack2_, iter->value.call_stack()); -} - -TEST_F(CallStackTableTest, GetLastUptrendInfo) { - CallStackTable table(kDefaultLeakThreshold); - - // Add some |stack0_| and |stack1_|. - for (int i = 0; i < 60; ++i) - table.Add(stack0_); - for (int i = 0; i < 60; ++i) - table.Add(stack1_); - table.UpdateLastDropInfo(100); - - size_t timestamp_delta; - uint32_t count_delta; - table.GetLastUptrendInfo(stack0_, 100, ×tamp_delta, &count_delta); - EXPECT_EQ(0U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - // Remove |stack0_| and add |stack1_|. - for (int i = 0; i < 30; ++i) - table.Remove(stack0_); - for (int i = 0; i < 30; ++i) - table.Add(stack1_); - table.UpdateLastDropInfo(200); - - table.GetLastUptrendInfo(stack0_, 200, ×tamp_delta, &count_delta); - EXPECT_EQ(0U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - table.GetLastUptrendInfo(stack1_, 200, ×tamp_delta, &count_delta); - EXPECT_EQ(100U, timestamp_delta); - EXPECT_EQ(30U, count_delta); - - // Check if previous drop of |stack0_| was recorded and introduce |stack2_|. - for (int i = 0; i < 30; ++i) - table.Add(stack0_); - for (int i = 0; i < 60; ++i) - table.Add(stack2_); - table.UpdateLastDropInfo(300); - - table.GetLastUptrendInfo(stack0_, 300, ×tamp_delta, &count_delta); - EXPECT_EQ(100U, timestamp_delta); - EXPECT_EQ(30U, count_delta); - - table.GetLastUptrendInfo(stack2_, 300, ×tamp_delta, &count_delta); - EXPECT_EQ(0U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - // Introduce more variation between updates. Decrease |stack2_| to 0. - // All the history for |stack2_| should be forgotten. - for (int i = 0; i < 30; ++i) - table.Add(stack0_); - for (int i = 0; i < 40; ++i) - table.Remove(stack0_); - for (int i = 0; i < 40; ++i) - table.Add(stack1_); - for (int i = 0; i < 30; ++i) - table.Remove(stack1_); - for (int i = 0; i < 30; ++i) - table.Remove(stack2_); - for (int i = 0; i < 30; ++i) - table.Remove(stack2_); - table.UpdateLastDropInfo(400); - - table.GetLastUptrendInfo(stack0_, 400, ×tamp_delta, &count_delta); - EXPECT_EQ(0U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - table.GetLastUptrendInfo(stack1_, 400, ×tamp_delta, &count_delta); - EXPECT_EQ(300U, timestamp_delta); - EXPECT_EQ(40U, count_delta); - - table.GetLastUptrendInfo(stack2_, 400, ×tamp_delta, &count_delta); - EXPECT_EQ(400U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - // Make a 0-sum sequence for |stack0_|. Introduce |stack2_| again. - for (int i = 0; i < 30; ++i) - table.Add(stack0_); - for (int i = 0; i < 30; ++i) - table.Remove(stack0_); - for (int i = 0; i < 40; ++i) - table.Add(stack2_); - for (int i = 0; i < 30; ++i) - table.Remove(stack2_); - table.UpdateLastDropInfo(500); - - table.GetLastUptrendInfo(stack0_, 500, ×tamp_delta, &count_delta); - EXPECT_EQ(100U, timestamp_delta); - EXPECT_EQ(0U, count_delta); - - table.GetLastUptrendInfo(stack2_, 500, ×tamp_delta, &count_delta); - EXPECT_EQ(0U, timestamp_delta); - EXPECT_EQ(0U, count_delta); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/custom_allocator.cc b/components/metrics/leak_detector/custom_allocator.cc deleted file mode 100644 index 1f80a971..0000000 --- a/components/metrics/leak_detector/custom_allocator.cc +++ /dev/null
@@ -1,61 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/custom_allocator.h" - -#include <stddef.h> - -namespace metrics { -namespace leak_detector { - -namespace { - -// Wrappers around new and delete. -void* DefaultAlloc(size_t size) { - return new char[size]; -} -void DefaultFree(void* ptr, size_t /* size */) { - delete[] reinterpret_cast<char*>(ptr); -} - -CustomAllocator::AllocFunc g_alloc_func = nullptr; -CustomAllocator::FreeFunc g_free_func = nullptr; - -} // namespace - -// static -void CustomAllocator::Initialize() { - Initialize(&DefaultAlloc, &DefaultFree); -} - -// static -void CustomAllocator::Initialize(AllocFunc alloc_func, FreeFunc free_func) { - g_alloc_func = alloc_func; - g_free_func = free_func; -} - -// static -bool CustomAllocator::Shutdown() { - g_alloc_func = nullptr; - g_free_func = nullptr; - return true; -} - -// static -bool CustomAllocator::IsInitialized() { - return g_alloc_func && g_free_func; -} - -// static -void* CustomAllocator::Allocate(size_t size) { - return g_alloc_func(size); -} - -// static -void CustomAllocator::Free(void* ptr, size_t size) { - g_free_func(ptr, size); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/custom_allocator.h b/components/metrics/leak_detector/custom_allocator.h deleted file mode 100644 index fdbfc77..0000000 --- a/components/metrics/leak_detector/custom_allocator.h +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_CUSTOM_ALLOCATOR_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_CUSTOM_ALLOCATOR_H_ - -#include <stddef.h> - -#include <type_traits> - -namespace metrics { -namespace leak_detector { - -// Custom allocator class to be passed to STLAllocator as a template argument. -// -// By default, CustomAllocator uses the default allocator (new/delete), but the -// caller of Initialize ()can provide a pair of alternative alloc/ free -// functions to use as an external allocator. -// -// This is a stateless class, but there is static data within the module that -// needs to be created and deleted. -// -// Not thread-safe. -class CustomAllocator { - public: - using AllocFunc = std::add_pointer<void*(size_t)>::type; - using FreeFunc = std::add_pointer<void(void*, size_t)>::type; - - // Initialize CustomAllocator to use the default allocator. - static void Initialize(); - - // Initialize CustomAllocator to use the given alloc/free functions. - static void Initialize(AllocFunc alloc_func, FreeFunc free_func); - - // Performs any cleanup required, e.g. unset custom functions. Returns true - // on success or false if something failed. - static bool Shutdown(); - - static bool IsInitialized(); - - // These functions must match the specifications in STLAllocator. - static void* Allocate(size_t size); - static void Free(void* ptr, size_t size); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_CUSTOM_ALLOCATOR_H_
diff --git a/components/metrics/leak_detector/gnu_build_id_reader.cc b/components/metrics/leak_detector/gnu_build_id_reader.cc deleted file mode 100644 index ac0f07da..0000000 --- a/components/metrics/leak_detector/gnu_build_id_reader.cc +++ /dev/null
@@ -1,124 +0,0 @@ -// Copyright 2016 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 "components/metrics/leak_detector/gnu_build_id_reader.h" - -#include <elf.h> - -#include <algorithm> - -#if defined(OS_CHROMEOS) -#include <link.h> // for dl_iterate_phdr -#else -#error "Getting binary mapping info is not supported on this platform." -#endif // defined(OS_CHROMEOS) - -namespace metrics { -namespace leak_detector { -namespace gnu_build_id_reader { - -namespace { - -// Contains data passed to dl_iterate_phdr() for reading build ID. -struct ReadBuildIDData { - // Points to a vector for storing the build ID. - std::vector<uint8_t>* build_id; - // Indicates whether build ID was read successfully. - bool success; -}; - -// Given a pointer and an offset, add the offset to the pointer and round it up -// to the next uint32_t. -const void* AlignPtrAndOffsetToUint32(const void* ptr, intptr_t offset) { - uintptr_t addr = reinterpret_cast<uintptr_t>(ptr) + offset; - uintptr_t aligned_addr = - (addr + sizeof(uint32_t) - 1) & ~(sizeof(uint32_t) - 1); - return reinterpret_cast<const void*>(aligned_addr); -} - -// Searches for the ELF note containing the build ID within the data range -// specified by [start, end). Returns the build ID in |*result|. If the build ID -// is not found, |*result| will be unchanged. Returns true if the build ID was -// successfully read or false otherwise. -bool GetBuildIdFromNotes(const void* start, - const void* end, - std::vector<uint8_t>* result) { - using NoteHeaderPtr = const ElfW(Nhdr)*; - NoteHeaderPtr note = reinterpret_cast<NoteHeaderPtr>(start); - - while (note < end) { - const char* name_ptr = reinterpret_cast<const char*>(note + 1); - if (name_ptr >= end) { - break; - } - // |desc_ptr| points the to the actual build ID data. - const uint8_t* desc_ptr = reinterpret_cast<const uint8_t*>( - AlignPtrAndOffsetToUint32(name_ptr, note->n_namesz)); - if (note->n_type == NT_GNU_BUILD_ID && - note->n_namesz == sizeof(ELF_NOTE_GNU) && - std::equal(name_ptr, name_ptr + sizeof(ELF_NOTE_GNU), ELF_NOTE_GNU)) { - result->assign(desc_ptr, desc_ptr + note->n_descsz); - return true; - } - NoteHeaderPtr next_ptr = reinterpret_cast<NoteHeaderPtr>( - AlignPtrAndOffsetToUint32(desc_ptr, note->n_descsz)); - note = next_ptr; - } - return false; -} - -// Callback for dl_iterate_phdr(). Finds the notes section and looks for the -// build ID in there. |data| points to a ReadBuildIDData struct whose |build_id| -// field should point to a valid std::vector<uint8_t>. Returns the build ID in -// that field, and sets |ReadBuildIDData::success| based on whether the build ID -// was successfully read. -// -// This function always returns 1 to signal the end of dl_iterate_phdr()'s -// iteration, because it is only interested in the first binary iterated by -// dl_iterate_phdr(), which is the current binary. -int FindNotesAndGetBuildID(struct dl_phdr_info* info, - size_t /* size */, - void* data) { - uintptr_t mapping_addr = reinterpret_cast<uintptr_t>(info->dlpi_addr); - const ElfW(Ehdr)* file_header = - reinterpret_cast<const ElfW(Ehdr)*>(mapping_addr); - - // Make sure that a valid |mapping_addr| was read. - if (!file_header || file_header->e_phentsize != sizeof(ElfW(Phdr))) { - return 1; - } - - // Find the ELF segment header for the NOTES section. - for (int i = 0; i < info->dlpi_phnum; ++i) { - const ElfW(Phdr)& segment_header = info->dlpi_phdr[i]; - if (segment_header.p_type == PT_NOTE) { - const void* note = reinterpret_cast<const void*>( - mapping_addr + segment_header.p_vaddr); - const void* note_end = reinterpret_cast<const void*>( - mapping_addr + segment_header.p_vaddr + segment_header.p_memsz); - ReadBuildIDData* read_data = reinterpret_cast<ReadBuildIDData*>(data); - read_data->success = - GetBuildIdFromNotes(note, note_end, read_data->build_id); - } - } - return 1; -} - -} // namespace - -bool ReadBuildID(std::vector<uint8_t>* build_id) { - ReadBuildIDData data; - data.build_id = build_id; - data.success = false; - -#if defined(OS_CHROMEOS) - dl_iterate_phdr(FindNotesAndGetBuildID, &data); -#endif // defined(OS_CHROMEOS) - - return data.success; -} - -} // namespace gnu_build_id_reader -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/gnu_build_id_reader.h b/components/metrics/leak_detector/gnu_build_id_reader.h deleted file mode 100644 index 5cda9f3..0000000 --- a/components/metrics/leak_detector/gnu_build_id_reader.h +++ /dev/null
@@ -1,24 +0,0 @@ -// Copyright 2016 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_METRICS_LEAK_DETECTOR_GNU_BUILD_ID_READER_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_GNU_BUILD_ID_READER_H_ - -#include <stdint.h> - -#include <vector> - -namespace metrics { -namespace leak_detector { -namespace gnu_build_id_reader { - -// Reads the build ID from the GNU build notes and stores it in |*build_id|. -// Returns true if it was successfully read, or false otherwise. -bool ReadBuildID(std::vector<uint8_t>* build_id); - -} // namespace gnu_build_id_reader -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_GNU_BUILD_ID_READER_H_
diff --git a/components/metrics/leak_detector/leak_analyzer.cc b/components/metrics/leak_detector/leak_analyzer.cc deleted file mode 100644 index 54568ac2..0000000 --- a/components/metrics/leak_detector/leak_analyzer.cc +++ /dev/null
@@ -1,139 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/leak_analyzer.h" - -#include <set> - -namespace metrics { -namespace leak_detector { - -namespace { - -using RankedEntry = RankedSet::Entry; - -// Increase suspicion scores by this much each time an entry is suspected as -// being a leak. -const int kSuspicionScoreIncrease = 1; - -} // namespace - -LeakAnalyzer::LeakAnalyzer(uint32_t ranking_size, - uint32_t num_suspicions_threshold) - : ranking_size_(ranking_size), - score_threshold_(num_suspicions_threshold), - ranked_entries_(ranking_size), - prev_ranked_entries_(ranking_size) { - suspected_leaks_.reserve(ranking_size); -} - -LeakAnalyzer::~LeakAnalyzer() {} - -void LeakAnalyzer::AddSample(RankedSet ranked_set) { - // Save the ranked entries from the previous call. - prev_ranked_entries_ = std::move(ranked_entries_); - - // Save the current entries. - ranked_entries_ = std::move(ranked_set); - - RankedSet ranked_deltas(ranking_size_); - for (const RankedEntry& entry : ranked_entries_) { - // Determine what count was recorded for this value last time. - uint32_t prev_count = 0; - if (GetPreviousCountForValue(entry.value, &prev_count)) - ranked_deltas.Add(entry.value, entry.count - prev_count); - } - - AnalyzeDeltas(ranked_deltas); -} - -void LeakAnalyzer::AnalyzeDeltas(const RankedSet& ranked_deltas) { - bool found_drop = false; - RankedSet::const_iterator drop_position = ranked_deltas.end(); - - if (ranked_deltas.size() > 1) { - RankedSet::const_iterator entry_iter = ranked_deltas.begin(); - RankedSet::const_iterator next_entry_iter = ranked_deltas.begin(); - ++next_entry_iter; - - // If the first entry is 0, that means all deltas are 0 or negative. Do - // not treat this as a suspicion of leaks; just quit. - if (entry_iter->count > 0) { - while (next_entry_iter != ranked_deltas.end()) { - const RankedEntry& entry = *entry_iter; - const RankedEntry& next_entry = *next_entry_iter; - - // Find the first major drop in values (i.e. by 50% or more). - if (entry.count > next_entry.count * 2) { - found_drop = true; - drop_position = next_entry_iter; - break; - } - ++entry_iter; - ++next_entry_iter; - } - } - } - - // All leak values before the drop are suspected during this analysis. - std::set<ValueType, std::less<ValueType>, Allocator<ValueType>> - current_suspects; - if (found_drop) { - for (RankedSet::const_iterator ranked_set_iter = ranked_deltas.begin(); - ranked_set_iter != drop_position; ++ranked_set_iter) { - current_suspects.insert(ranked_set_iter->value); - } - } - - // Reset the score to 0 for all previously suspected leak values that did - // not get suspected this time. - auto iter = suspected_histogram_.begin(); - while (iter != suspected_histogram_.end()) { - const ValueType& value = iter->first; - // Erase entries whose suspicion score reaches 0. - auto erase_iter = iter++; - if (current_suspects.find(value) == current_suspects.end()) - suspected_histogram_.erase(erase_iter); - } - - // For currently suspected values, increase the leak score. - for (const ValueType& value : current_suspects) { - auto histogram_iter = suspected_histogram_.find(value); - if (histogram_iter != suspected_histogram_.end()) { - histogram_iter->second += kSuspicionScoreIncrease; - } else if (suspected_histogram_.size() < ranking_size_) { - // Create a new entry if it didn't already exist. - suspected_histogram_[value] = kSuspicionScoreIncrease; - } - } - - // Now check the leak suspicion scores. Make sure to erase the suspected - // leaks from the previous call. - suspected_leaks_.clear(); - for (const auto& entry : suspected_histogram_) { - if (suspected_leaks_.size() > ranking_size_) - break; - - // Only report suspected values that have accumulated a suspicion score. - // This is achieved by maintaining suspicion for several cycles, with few - // skips. - if (entry.second >= score_threshold_) - suspected_leaks_.emplace_back(entry.first); - } -} - -bool LeakAnalyzer::GetPreviousCountForValue(const ValueType& value, - uint32_t* count) const { - // Determine what count was recorded for this value last time. - for (const RankedEntry& entry : prev_ranked_entries_) { - if (entry.value == value) { - *count = entry.count; - return true; - } - } - return false; -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_analyzer.h b/components/metrics/leak_detector/leak_analyzer.h deleted file mode 100644 index 55ca297..0000000 --- a/components/metrics/leak_detector/leak_analyzer.h +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_LEAK_ANALYZER_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_ANALYZER_H_ - -#include <stdint.h> - -#include <map> -#include <vector> - -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_detector_value_type.h" -#include "components/metrics/leak_detector/ranked_set.h" -#include "components/metrics/leak_detector/stl_allocator.h" - -namespace metrics { -namespace leak_detector { - -// This class looks for possible leak patterns in allocation data over time. -// Not thread-safe. -class LeakAnalyzer { - public: - using ValueType = LeakDetectorValueType; - - // This class uses CustomAllocator to avoid recursive malloc hook invocation - // when analyzing allocs and frees. - template <typename Type> - using Allocator = STLAllocator<Type, CustomAllocator>; - - LeakAnalyzer(uint32_t ranking_size, uint32_t num_suspicions_threshold); - ~LeakAnalyzer(); - - // Take in a RankedSet of allocations, sorted by count. Removes the contents - // of |ranked_entries| to be stored internally, which is why it is not passed - // in as a const reference. - void AddSample(RankedSet ranked_entries); - - // Used to report suspected leaks. Reported leaks are sorted by ValueType. - const std::vector<ValueType, Allocator<ValueType>>& suspected_leaks() const { - return suspected_leaks_; - } - - private: - // Analyze a list of allocation count deltas from the previous iteration. If - // anything looks like a possible leak, update the suspicion scores. - void AnalyzeDeltas(const RankedSet& ranked_deltas); - - // Returns the count for the given value from the previous analysis in - // |count|. Returns true if the given value was present in the previous - // analysis, or false if not. - bool GetPreviousCountForValue(const ValueType& value, uint32_t* count) const; - - // Look for the top |ranking_size_| entries when analyzing leaks. - const uint32_t ranking_size_; - - // Report suspected leaks when the suspicion score reaches this value. - const uint32_t score_threshold_; - - // A mapping of allocation values to suspicion score. All allocations in this - // container are suspected leaks. The score can increase or decrease over - // time. Once the score reaches |score_threshold_|, the entry is reported as - // a suspected leak in |suspected_leaks_|. - std::map<ValueType, - uint32_t, - std::less<ValueType>, - Allocator<std::pair<const ValueType, uint32_t>>> - suspected_histogram_; - - // Array of allocated values that passed the suspicion threshold and are being - // reported. - std::vector<ValueType, Allocator<ValueType>> suspected_leaks_; - - // The most recent allocation entries, since the last call to AddSample(). - RankedSet ranked_entries_; - // The previous allocation entries, from before the last call to AddSample(). - RankedSet prev_ranked_entries_; - - DISALLOW_COPY_AND_ASSIGN(LeakAnalyzer); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_ANALYZER_H_
diff --git a/components/metrics/leak_detector/leak_analyzer_unittest.cc b/components/metrics/leak_detector/leak_analyzer_unittest.cc deleted file mode 100644 index 71555b4c..0000000 --- a/components/metrics/leak_detector/leak_analyzer_unittest.cc +++ /dev/null
@@ -1,366 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/leak_analyzer.h" - -#include <stdint.h> - -#include <algorithm> - -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/ranked_set.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Default ranking size and threshold used for leak analysis. -const int kDefaultRankedSetSize = 10; -const int kDefaultLeakThreshold = 5; - -// Makes it easier to instantiate LeakDetectorValueTypes. Instantiates with an -// integer value that indicates an allocation size. Storing the size allows us -// to track the storage of the LeakDetectorValueType object within LeakAnalyzer. -// -// There is no need to test this with call stacks in addition to sizes because -// call stacks will be contained in a LeakDetectorValueType object as well. -LeakDetectorValueType Size(uint32_t value) { - return LeakDetectorValueType(value); -} - -} // namespace - -class LeakAnalyzerTest : public ::testing::Test { - public: - LeakAnalyzerTest() {} - - void SetUp() override { CustomAllocator::Initialize(); } - void TearDown() override { EXPECT_TRUE(CustomAllocator::Shutdown()); } - - private: - DISALLOW_COPY_AND_ASSIGN(LeakAnalyzerTest); -}; - -TEST_F(LeakAnalyzerTest, Empty) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - EXPECT_TRUE(analyzer.suspected_leaks().empty()); -} - -TEST_F(LeakAnalyzerTest, SingleSize) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 20; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 10); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected. - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, VariousSizesWithoutIncrease) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 20; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30); - set.Add(Size(32), 10); - set.Add(Size(56), 90); - set.Add(Size(64), 40); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected. - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, VariousSizesWithEqualIncrease) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 20; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); - set.Add(Size(32), 10 + i * 10); - set.Add(Size(56), 90 + i * 10); - set.Add(Size(64), 40 + i * 10); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected. - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, NotEnoughRunsToTriggerLeakReport) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - // Run this one iteration short of the number of cycles needed to trigger a - // leak report. Because LeakAnalyzer requires |kDefaultLeakThreshold| - // suspicions based on deltas between AddSample() calls, the below loop needs - // to run |kDefaultLeakThreshold + 1| times to trigger a leak report. - for (int i = 0; i <= kDefaultLeakThreshold - 1; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); // This one has a potential leak. - set.Add(Size(32), 10 + i * 2); - set.Add(Size(56), 90 + i); - set.Add(Size(64), 40 + i / 2); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected. - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, LeakSingleSize) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - // Run this past the number of iterations required to trigger a leak report. - for (int i = 0; i < kDefaultLeakThreshold + 10; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(32), 10); - set.Add(Size(56), 90); - set.Add(Size(24), 30 + i * 10); // This one has a potential leak. - set.Add(Size(64), 40); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected initially... - if (i < kDefaultLeakThreshold) { - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } else { - // ... but there should be reported leaks once the threshold is reached. - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(1U, leaks.size()); - EXPECT_EQ(24U, leaks[0].size()); - } - } -} - -TEST_F(LeakAnalyzerTest, LeakSingleSizeOthersAlsoIncreasing) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 10; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); // This one has a potential leak. - set.Add(Size(32), 10 + i * 2); - set.Add(Size(56), 90 + i); - set.Add(Size(64), 40 + i / 2); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected initially... - if (i < kDefaultLeakThreshold) { - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } else { - // ... but there should be reported leaks once the threshold is reached. - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(1U, leaks.size()); - EXPECT_EQ(24U, leaks[0].size()); - } - } -} - -TEST_F(LeakAnalyzerTest, LeakMultipleSizes) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 10; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 5); - set.Add(Size(32), 10 + i * 40); - set.Add(Size(56), 90 + i * 30); - set.Add(Size(64), 40 + i * 20); - set.Add(Size(80), 20 + i * 3); - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected initially... - if (i < kDefaultLeakThreshold) { - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } else { - // ... but there should be reported leaks once the threshold is reached. - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(3U, leaks.size()); - // These should be in order of increasing allocation size. - EXPECT_EQ(32U, leaks[0].size()); - EXPECT_EQ(56U, leaks[1].size()); - EXPECT_EQ(64U, leaks[2].size()); - } - } -} - -TEST_F(LeakAnalyzerTest, LeakMultipleSizesValueOrder) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i <= kDefaultLeakThreshold; ++i) { - RankedSet set(kDefaultRankedSetSize); - // These are similar to LeakMultipleSizes, but the relative order of - // allocation increases is different from the relative order of sizes. - set.Add(Size(24), 30 + i * 5); - set.Add(Size(32), 10 + i * 20); - set.Add(Size(56), 90 + i * 40); - set.Add(Size(64), 40 + i * 30); - set.Add(Size(80), 20 + i * 3); - analyzer.AddSample(std::move(set)); - } - - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(3U, leaks.size()); - // These should be in order of increasing allocation size, NOT in order of - // allocation count or deltas. - EXPECT_EQ(32U, leaks[0].size()); - EXPECT_EQ(56U, leaks[1].size()); - EXPECT_EQ(64U, leaks[2].size()); -} - -TEST_F(LeakAnalyzerTest, EqualIncreasesNoLeak) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 20; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); - set.Add(Size(32), 10 + i * 10); - set.Add(Size(56), 90 + i * 10); - set.Add(Size(64), 40 + i * 10); - set.Add(Size(80), 20 + i * 10); - analyzer.AddSample(std::move(set)); - - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, NotBigEnoughDeltaGap) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i < kDefaultLeakThreshold + 20; ++i) { - RankedSet set(kDefaultRankedSetSize); - // These all have different increments but there is no clear group of - // increases that are larger than the rest. - set.Add(Size(24), 30 + i * 80); - set.Add(Size(32), 10 + i * 45); - set.Add(Size(56), 90 + i * 25); - set.Add(Size(64), 40 + i * 15); - set.Add(Size(80), 20 + i * 10); - analyzer.AddSample(std::move(set)); - - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } -} - -TEST_F(LeakAnalyzerTest, RepeatedRisesUntilLeakFound) { - LeakAnalyzer analyzer(kDefaultRankedSetSize, kDefaultLeakThreshold); - - // Remember, there is an extra iteration beyond |kDefaultLeakThreshold| needed - // to actually trigger the leak detection. - for (int i = 0; i <= kDefaultLeakThreshold - 2; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); - set.Add(Size(32), 10); - set.Add(Size(56), 90); - set.Add(Size(64), 40); - set.Add(Size(80), 20); - analyzer.AddSample(std::move(set)); - - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } - - // Drop back down to 30. - for (int i = 0; i <= kDefaultLeakThreshold - 1; ++i) { - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); - set.Add(Size(32), 10); - set.Add(Size(56), 90); - set.Add(Size(64), 40); - set.Add(Size(80), 20); - analyzer.AddSample(std::move(set)); - - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } - - // Drop back down to 30. - for (int i = 0; i <= kDefaultLeakThreshold; ++i) { - // Initially there should not be any leak detected. - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - - RankedSet set(kDefaultRankedSetSize); - set.Add(Size(24), 30 + i * 10); - set.Add(Size(32), 10); - set.Add(Size(56), 90); - set.Add(Size(64), 40); - set.Add(Size(80), 20); - analyzer.AddSample(std::move(set)); - } - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(1U, leaks.size()); - EXPECT_EQ(24U, leaks[0].size()); -} - -TEST_F(LeakAnalyzerTest, LeakWithMultipleGroupsOfDeltas) { - const int kRankedSetSize = 20; - LeakAnalyzer analyzer(kRankedSetSize, kDefaultLeakThreshold); - - for (int i = 0; i <= kDefaultLeakThreshold; ++i) { - RankedSet set(kRankedSetSize); - set.Add(Size(24), 30 + i * 10); // A group of smaller deltas. - set.Add(Size(32), 10 + i * 3); - set.Add(Size(80), 20 + i * 5); - set.Add(Size(40), 30 + i * 7); - set.Add(Size(56), 90); - set.Add(Size(64), 40); - set.Add(Size(128), 100); - set.Add(Size(44), 100 + i * 10); // A group of medium deltas. - set.Add(Size(16), 60 + i * 50); - set.Add(Size(4), 20 + i * 40); - set.Add(Size(8), 100 + i * 60); - set.Add(Size(48), 100); - set.Add(Size(72), 60 + i * 240); // A group of largest deltas. - set.Add(Size(28), 100); - set.Add(Size(100), 100 + i * 200); - set.Add(Size(104), 60 + i * 128); - analyzer.AddSample(std::move(set)); - } - // Only the group of largest deltas should be caught. - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(3U, leaks.size()); - // These should be in order of increasing allocation size. - EXPECT_EQ(72U, leaks[0].size()); - EXPECT_EQ(100U, leaks[1].size()); - EXPECT_EQ(104U, leaks[2].size()); -} - -TEST_F(LeakAnalyzerTest, LeakMultipleSizesWithLargeThreshold) { - const int kLeakThreshold = 50; - LeakAnalyzer analyzer(kDefaultRankedSetSize, kLeakThreshold); - - for (int i = 0; i <= kLeakThreshold + 10; ++i) { - RankedSet set(kDefaultRankedSetSize); - // * - Cluster of larger deltas - set.Add(Size(24), 30 + i * 5); - set.Add(Size(32), 10 + i * 40); // * - set.Add(Size(56), 90 + i * 30); // * - set.Add(Size(40), 30 + i * 7); - set.Add(Size(64), 40 + i * 25); // * - set.Add(Size(80), 20 + i * 3); - set.Add(Size(128), 100); - set.Add(Size(44), 100 + i * 10); - set.Add(Size(16), 60 + i * 50); // * - analyzer.AddSample(std::move(set)); - - // No leaks should have been detected initially... - if (i < kLeakThreshold) { - EXPECT_TRUE(analyzer.suspected_leaks().empty()); - } else { - // ... but there should be reported leaks once the threshold is reached. - const auto& leaks = analyzer.suspected_leaks(); - ASSERT_EQ(4U, leaks.size()); - // These should be in order of increasing allocation size. - EXPECT_EQ(16U, leaks[0].size()); - EXPECT_EQ(32U, leaks[1].size()); - EXPECT_EQ(56U, leaks[2].size()); - EXPECT_EQ(64U, leaks[3].size()); - } - } -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector.cc b/components/metrics/leak_detector/leak_detector.cc deleted file mode 100644 index b700b5ac..0000000 --- a/components/metrics/leak_detector/leak_detector.cc +++ /dev/null
@@ -1,355 +0,0 @@ -// Copyright 2016 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 "components/metrics/leak_detector/leak_detector.h" - -#include <stdint.h> - -#include <algorithm> - -#include "base/allocator/allocator_extension.h" -#include "base/bind.h" -#include "base/lazy_instance.h" -#include "base/location.h" -#include "base/logging.h" -#include "base/numerics/safe_conversions.h" -#include "base/threading/thread_local.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_detector_impl.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -#if defined(OS_CHROMEOS) -#include <link.h> // for dl_iterate_phdr -#else -#error "Getting binary mapping info is not supported on this platform." -#endif // defined(OS_CHROMEOS) - -namespace metrics { - -using InternalLeakReport = leak_detector::LeakDetectorImpl::LeakReport; -template <typename T> -using InternalVector = leak_detector::LeakDetectorImpl::InternalVector<T>; - -namespace { - -// Add the thread-local alloc size count to the shared alloc size count -// (LeakDetector::total_alloc_size_) whenever the local counter reaches -// |LeakDetector::analysis_interval_bytes_| divided by this value. Choose a -// high enough value that there is plenty of granularity, but low enough that a -// thread is not frequently updating the shared counter. -const int kTotalAllocSizeUpdateIntervalDivisor = 1024; - -#if defined(OS_CHROMEOS) -// For storing the address range of the Chrome binary in memory. -struct MappingInfo { - uintptr_t addr; - size_t size; -}; -#endif // defined(OS_CHROMEOS) - -// Local data to be used in the alloc/free hook functions to keep track of -// things across hook function calls. -struct HookData { - // The total number of bytes nominally allocated from the allocator on the - // current thread. - size_t alloc_size; - - // Flag indicating that one of the alloc hooks have already been entered. Used - // to handle recursive hook calls. Anything allocated when this flag is set - // should also be freed when this flag is set. - bool entered_hook; -}; - -#if defined(OS_CHROMEOS) -// Callback for dl_iterate_phdr() to find the Chrome binary mapping. -int IterateLoadedObjects(struct dl_phdr_info* shared_object, - size_t /* size */, - void* data) { - for (int i = 0; i < shared_object->dlpi_phnum; i++) { - // Find the ELF segment header that contains the actual code of the Chrome - // binary. - const ElfW(Phdr)& segment_header = shared_object->dlpi_phdr[i]; - if (segment_header.p_type == SHT_PROGBITS && segment_header.p_offset == 0 && - data) { - MappingInfo* mapping = reinterpret_cast<MappingInfo*>(data); - - // Make sure the fields in the ELF header and MappingInfo have the - // same size. - static_assert(sizeof(mapping->addr) == sizeof(shared_object->dlpi_addr), - "Integer size mismatch between MappingInfo::addr and " - "dl_phdr_info::dlpi_addr."); - static_assert(sizeof(mapping->size) == sizeof(segment_header.p_offset), - "Integer size mismatch between MappingInfo::size and " - "ElfW(Phdr)::p_memsz."); - - mapping->addr = shared_object->dlpi_addr + segment_header.p_offset; - mapping->size = segment_header.p_memsz; - return 1; - } - } - return 0; -} -#endif // defined(OS_CHROMEOS) - -// Convert a pointer to a hash value. Returns only the upper eight bits. -inline uint64_t PointerToHash(const void* ptr) { - // The input data is the pointer address, not the location in memory pointed - // to by the pointer. - // The multiplier is taken from Farmhash code: - // https://github.com/google/farmhash/blob/master/src/farmhash.cc - const uint64_t kMultiplier = 0x9ddfea08eb382d69ULL; - return reinterpret_cast<uint64_t>(ptr) * kMultiplier; -} - -// Converts an memory leak report generated by LeakDetectorImpl -// (InternalLeakReport) to protobuf format (MemoryLeakReportProto). -MemoryLeakReportProto ConvertLeakReportToProto( - const InternalLeakReport& report) { - MemoryLeakReportProto proto; - - proto.set_size_bytes(report.alloc_size_bytes()); - for (auto call_stack_entry : report.call_stack()) { - proto.add_call_stack(call_stack_entry); - } - - for (const auto& entry : report.alloc_breakdown_history()) { - auto* proto_entry = proto.add_alloc_breakdown_history(); - for (const uint32_t count : entry.counts_by_size) { - proto_entry->add_counts_by_size(count); - } - proto_entry->set_count_for_call_stack(entry.count_for_call_stack); - } - - proto.set_num_rising_intervals(report.num_rising_intervals()); - proto.set_num_allocs_increase(report.num_allocs_increase()); - - return proto; -} - -// The only instance of LeakDetector that should be used. -base::LazyInstance<LeakDetector>::Leaky g_instance = LAZY_INSTANCE_INITIALIZER; - -// Thread-specific data to be used by hook functions. -base::LazyInstance<base::ThreadLocalPointer<void>>::Leaky g_hook_data_tls = - LAZY_INSTANCE_INITIALIZER; - -// Returns the contents of |g_hook_data_tls| as a HookData structure. -inline HookData LoadHookDataFromTLS() { - uintptr_t ptr_value = - reinterpret_cast<uintptr_t>(g_hook_data_tls.Get().Get()); - - // The lower bit of |ptr_value| indicates whether a hook has already been - // entered. The remaining bits store the alloc size. - HookData result; - result.entered_hook = ptr_value & 0x01; - result.alloc_size = ptr_value >> 1; - return result; -} - -// Stores a HookData structure in |g_hook_data_tls|. HookData is a trivial -// struct so it is faster to pass by value. -inline void StoreHookDataToTLS(HookData hook_data) { - // NOTE: |alloc_size| loses its upper bit when it gets stored in the TLS here. - // The effective max value of |alloc_size| is thus half its nominal max value. - uintptr_t ptr_value = - (hook_data.entered_hook ? 1 : 0) | (hook_data.alloc_size << 1); - g_hook_data_tls.Get().Set(reinterpret_cast<void*>(ptr_value)); -} - -} // namespace - -// static -LeakDetector* LeakDetector::GetInstance() { - return g_instance.Pointer(); -} - -// static -void LeakDetector::InitTLSSlot() { - ignore_result(g_hook_data_tls.Get()); -} - -void LeakDetector::Init(const MemoryLeakReportProto::Params& params, - scoped_refptr<base::TaskRunner> task_runner) { - DCHECK(thread_checker_.CalledOnValidThread()); - DCHECK_GT(params.sampling_rate(), 0); - - sampling_factor_ = - base::saturated_cast<uint64_t>(params.sampling_rate() * UINT64_MAX); - - analysis_interval_bytes_ = params.analysis_interval_bytes(); - max_call_stack_unwind_depth_ = params.max_stack_depth(); - - MappingInfo mapping = {0}; -#if defined(OS_CHROMEOS) - // Locate the Chrome binary mapping info. - dl_iterate_phdr(IterateLoadedObjects, &mapping); -#endif // defined(OS_CHROMEOS) - - task_runner_ = task_runner; - - // CustomAllocator can use the default allocator, as long as the hook - // functions can handle recursive calls. - leak_detector::CustomAllocator::Initialize(); - - // The initialization should be done only once. Check for this by examining - // whether |impl_| has already been initialized. - CHECK(!impl_.get()) << "Cannot initialize LeakDetector more than once!"; - impl_.reset(new leak_detector::LeakDetectorImpl( - mapping.addr, mapping.size, params.size_suspicion_threshold(), - params.call_stack_suspicion_threshold())); - - // Register allocator hook functions. This must be done last since the - // preceding code will need to call the allocator. - base::allocator::SetHooks(&AllocHook, &FreeHook); -} - -void LeakDetector::AddObserver(Observer* observer) { - base::AutoLock lock(observers_lock_); - observers_.AddObserver(observer); -} - -void LeakDetector::RemoveObserver(Observer* observer) { - base::AutoLock lock(observers_lock_); - observers_.RemoveObserver(observer); -} - -LeakDetector::LeakDetector() - : total_alloc_size_(0), - last_analysis_alloc_size_(0), - analysis_interval_bytes_(0), - max_call_stack_unwind_depth_(0), - sampling_factor_(0) {} - -LeakDetector::~LeakDetector() {} - -// static -void LeakDetector::AllocHook(const void* ptr, size_t size) { - HookData hook_data = LoadHookDataFromTLS(); - if (hook_data.entered_hook) - return; - - hook_data.alloc_size += size; - - LeakDetector* detector = GetInstance(); - if (!detector->ShouldSample(ptr)) { - StoreHookDataToTLS(hook_data); - return; - } - - hook_data.entered_hook = true; - StoreHookDataToTLS(hook_data); - - // Get stack trace if necessary. - std::vector<void*> stack; - int depth = 0; - if (detector->impl_->ShouldGetStackTraceForSize(size)) { - stack.resize(detector->max_call_stack_unwind_depth_); - depth = base::allocator::GetCallStack(stack.data(), stack.size()); - } - - { - base::AutoLock lock(detector->recording_lock_); - detector->impl_->RecordAlloc(ptr, size, depth, stack.data()); - - const auto& analysis_interval_bytes = detector->analysis_interval_bytes_; - auto& total_alloc_size = detector->total_alloc_size_; - // Update the shared counter, |detector->total_alloc_size_|, once the local - // counter reaches a threshold that is a fraction of the analysis interval. - // The fraction should be small enough (and hence the value of - // kTotalAllocSizeUpdateIntervalDivisor should be large enough) that the - // shared counter is updated with sufficient granularity. This way, even if - // a few threads were slow to reach the threshold, the leak analysis would - // not be delayed by too much. - if (hook_data.alloc_size >= - analysis_interval_bytes / kTotalAllocSizeUpdateIntervalDivisor) { - total_alloc_size += hook_data.alloc_size; - hook_data.alloc_size = 0; - } - - // Check for leaks after |analysis_interval_bytes_| bytes have been - // allocated since the last time that was done. - if (total_alloc_size > - detector->last_analysis_alloc_size_ + analysis_interval_bytes) { - // Try to maintain regular intervals of size |analysis_interval_bytes_|. - detector->last_analysis_alloc_size_ = - total_alloc_size - total_alloc_size % analysis_interval_bytes; - - // Collect new leak reports. Use current |total_alloc_size| as - // a timestamp, then transform change in timestamp into the - // number of intervals passed. - InternalVector<InternalLeakReport> leak_reports; - detector->impl_->TestForLeaks(&leak_reports, total_alloc_size); - for (auto &report : leak_reports) - report.set_num_rising_intervals( - report.num_rising_intervals() / analysis_interval_bytes); - - // Pass leak reports to observers. - std::vector<MemoryLeakReportProto> leak_report_protos; - leak_report_protos.reserve(leak_reports.size()); - std::transform(leak_reports.begin(), leak_reports.end(), - std::back_inserter(leak_report_protos), - &ConvertLeakReportToProto); - detector->NotifyObservers(leak_report_protos); - } - } - - { - // The internal memory of |stack| should be freed before setting - // |entered_hook| to false at the end of this function. Free it here by - // moving the internal memory to a temporary variable that will go out of - // scope. - std::vector<void*> dummy_stack; - dummy_stack.swap(stack); - } - - hook_data.entered_hook = false; - StoreHookDataToTLS(hook_data); -} - -// static -void LeakDetector::FreeHook(const void* ptr) { - LeakDetector* detector = GetInstance(); - if (!detector->ShouldSample(ptr)) - return; - - HookData hook_data = LoadHookDataFromTLS(); - if (hook_data.entered_hook) - return; - - hook_data.entered_hook = true; - StoreHookDataToTLS(hook_data); - - { - base::AutoLock lock(detector->recording_lock_); - detector->impl_->RecordFree(ptr); - } - - hook_data.entered_hook = false; - StoreHookDataToTLS(hook_data); -} - -inline bool LeakDetector::ShouldSample(const void* ptr) const { - return PointerToHash(ptr) < sampling_factor_; -} - -void LeakDetector::NotifyObservers( - const std::vector<MemoryLeakReportProto>& reports) { - if (reports.empty()) - return; - - if (!task_runner_->RunsTasksInCurrentSequence()) { - task_runner_->PostTask(FROM_HERE, - base::Bind(&LeakDetector::NotifyObservers, - base::Unretained(this), reports)); - return; - } - - { - base::AutoLock lock(observers_lock_); - for (Observer& observer : observers_) - observer.OnLeaksFound(reports); - } -} - -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector.h b/components/metrics/leak_detector/leak_detector.h deleted file mode 100644 index fb20899..0000000 --- a/components/metrics/leak_detector/leak_detector.h +++ /dev/null
@@ -1,161 +0,0 @@ -// Copyright 2016 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_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <list> -#include <memory> -#include <vector> - -#include "base/feature_list.h" -#include "base/gtest_prod_util.h" -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/observer_list.h" -#include "base/synchronization/lock.h" -#include "base/task_runner.h" -#include "base/threading/thread_checker.h" - -namespace base { -template <typename T> -struct LazyInstanceTraitsBase; -} - -namespace metrics { - -class MemoryLeakReportProto; -class MemoryLeakReportProto_Params; - -namespace leak_detector { -class LeakDetectorImpl; -} - -// LeakDetector is an interface layer that connects the allocator -// (base::allocator), the leak detector logic (LeakDetectorImpl), and any -// external classes interested in receiving leak reports (extend the Observer -// class). -// -// Only one instance of this class can exist. Access this instance using -// GetInstance(). Do not create an instance of this class directly. -// -// These member functions are thread-safe: -// - AllocHook -// - FreeHook -// - AddObserver -// - RemoveObserver -// -// All other functions must always be called from the same thread. This is -// enforced with a DCHECK. -class LeakDetector { - public: - // Interface for receiving leak reports. - class Observer { - public: - virtual ~Observer() {} - - // Called by leak detector to report leaks. - virtual void OnLeaksFound( - const std::vector<MemoryLeakReportProto>& reports) = 0; - }; - - // Returns the sole instance, or creates it if it hasn't already been created. - static LeakDetector* GetInstance(); - - // Initializes leak detector. Args: - // - |params| is a set of parameters used by the leak detector. See definition - // of MemoryLeakReportProto_Params for info about individual parameters. - // - |task_runner| is a TaskRunner to which NotifyObservers() should be - // posted, if it is initally called from a different thread than the one on - // which |task_runner| runs. - void Init(const MemoryLeakReportProto_Params& params, - scoped_refptr<base::TaskRunner> task_runner); - - // Initializes the thread-local storage slot to be used by LeakDetector. - static void InitTLSSlot(); - - // Add |observer| to the list of stored Observers, i.e. |observers_|, to which - // the leak detector will report leaks. - void AddObserver(Observer* observer); - - // Remove |observer| from |observers_|. - void RemoveObserver(Observer* observer); - - private: - friend base::LazyInstanceTraitsBase<LeakDetector>; - FRIEND_TEST_ALL_PREFIXES(LeakDetectorTest, NotifyObservers); - - // Keep these private, as this class is meant to be initialized only through - // the lazy instance, and never destroyed. - LeakDetector(); - ~LeakDetector(); - - // Allocator hook function that processes each alloc. Performs sampling and - // unwinds call stack if necessary. Passes the allocated memory |ptr| and - // allocation size |size| along with call stack info to RecordAlloc(). - static void AllocHook(const void* ptr, size_t size); - - // Allocator hook function that processes each free. Performs sampling and - // passes the allocation address |ptr| to |impl_|. - static void FreeHook(const void* ptr); - - // Give an pointer |ptr|, computes a hash of the pointer value and compares it - // against |sampling_factor_| to determine if it should be sampled. This - // allows the same pointer to be sampled during both alloc and free. - bool ShouldSample(const void* ptr) const; - - // Notifies all Observers in |observers_| with the given vector of leak - // report protobufs. If it is not currently on the thread that corresponds to - // |task_runner_|, it will post the call as task to |task_runner_|. - void NotifyObservers(const std::vector<MemoryLeakReportProto>& reports); - - // List of observers to notify when there's a leak report. - // TODO(sque): Consider using ObserverListThreadSafe instead. - base::ObserverList<Observer> observers_; - - // For atomic access to |observers_|. - base::Lock observers_lock_; - - // Handles leak detection logic. Must be called under lock as LeakDetectorImpl - // uses shared resources. - std::unique_ptr<leak_detector::LeakDetectorImpl> impl_; - - // For thread safety. - base::ThreadChecker thread_checker_; - - // For posting leak report notifications. - scoped_refptr<base::TaskRunner> task_runner_; - - // Total number of bytes allocated, computed before sampling. - size_t total_alloc_size_; - - // The value of |total_alloc_size_| the last time there was a leak analysis, - // rounded down to the nearest multiple of |analysis_interval_bytes_|. - size_t last_analysis_alloc_size_; - - // For atomic access to |impl_|, |total_alloc_size_| and - // |last_analysis_alloc_size_|. - base::Lock recording_lock_; - - // Perform a leak analysis each time this many bytes have been allocated since - // the previous analysis. - size_t analysis_interval_bytes_; - - // When unwinding call stacks, unwind no more than this number of frames. - size_t max_call_stack_unwind_depth_; - - // Sampling factor used by ShouldSample(). It's full range of values - // corresponds to the allowable range of |sampling_rate| passed in during - // initialization: [0.0f, 1.0f] -> [0, UINT64_MAX]. - uint64_t sampling_factor_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetector); -}; - -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_H_
diff --git a/components/metrics/leak_detector/leak_detector.mojom b/components/metrics/leak_detector/leak_detector.mojom deleted file mode 100644 index 08eea5119..0000000 --- a/components/metrics/leak_detector/leak_detector.mojom +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright 2016 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. - -module metrics.mojom; - -struct LeakDetectorParams { - float sampling_rate; - uint32 max_stack_depth; - uint64 analysis_interval_bytes; - uint32 size_suspicion_threshold; - uint32 call_stack_suspicion_threshold; -}; - -struct AllocationBreakdown { - array<uint32> counts_by_size; - uint32 count_for_call_stack; -}; - -struct MemoryLeakReport { - uint32 size_bytes; - array<uint64> call_stack; - uint32 num_rising_intervals; - uint32 num_allocs_increase; - - array<AllocationBreakdown> alloc_breakdown_history; -}; - -// Provides a remote interface for enabling LeakDetector on remote processes. -interface LeakDetector { - // Returns a LeakDetectorParams struct. Used to indicate to the remote process - // what parameters to use when initializing LeakDetector. Can also return - // |params.sampling_rate| == 0 to indicate that LeakDetector should not be - // initialized on a particular process. - GetParams() => (LeakDetectorParams params); - - // When a remote process running LeakDetector gets some leak reports, it - // should call this function to return the leak reports back to the main - // process that implements this function. The reports should be sent back as - // an array of serialized MemoryLeakReportProtos. - SendLeakReports(array<MemoryLeakReport> reports); -};
diff --git a/components/metrics/leak_detector/leak_detector_impl.cc b/components/metrics/leak_detector/leak_detector_impl.cc deleted file mode 100644 index 5cfbb54..0000000 --- a/components/metrics/leak_detector/leak_detector_impl.cc +++ /dev/null
@@ -1,355 +0,0 @@ -// Copyright 2015 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 "leak_detector_impl.h" - -#include <inttypes.h> -#include <stddef.h> - -#include <algorithm> // For std::move -#include <iterator> // For std::advance -#include <new> -#include <utility> - -#include "base/hash.h" -#include "base/process/process_handle.h" -#include "components/metrics/leak_detector/call_stack_table.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/ranked_set.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Look for leaks in the the top N entries in each tier, where N is this value. -const int kRankedSetSize = 16; - -// Initial hash table size for |LeakDetectorImpl::address_map_|. -const int kAddressMapNumBuckets = 100003; - -// Number of entries in the alloc size table. As sizes are aligned to 32-bits -// the max supported allocation size is (kNumSizeEntries * 4 - 1). Any larger -// sizes are ignored. This value is chosen high enough that such large sizes -// are rare if not nonexistent. -const int kNumSizeEntries = 2048; - -// Record only the first |kNumSizeEntriesInHistory| size classes in -// |LeakDetectorImpl::size_breakdown_history_|. -const int kNumSizeEntriesInHistory = 32; - -// Record only the top |kNumTopCallStacksInHistory| call sites, ordered by -// number of allocations at each site, in -// |AllocSizeEntry::call_site_breakdown_history|. -const int kNumTopCallStacksInHistory = 32; - -// |LeakDetectorImpl::size_breakdown_history_| and -// |AllocSizeEntry::call_site_breakdown_history| can have up to this many -// entries. Any older entries must be discarded to make way for new ones. -const int kMaxNumHistoryEntries = 32; - -using ValueType = LeakDetectorValueType; - -// Functions to convert an allocation size to/from the array index used for -// |LeakDetectorImpl::size_entries_|. -size_t SizeToIndex(const size_t size) { - int result = static_cast<int>(size / sizeof(uint32_t)); - if (result < kNumSizeEntries) - return result; - return 0; -} - -size_t IndexToSize(size_t index) { - return sizeof(uint32_t) * index; -} - -} // namespace - -LeakDetectorImpl::LeakReport::AllocationBreakdown::AllocationBreakdown() - : count_for_call_stack(0) {} - -LeakDetectorImpl::LeakReport::AllocationBreakdown::AllocationBreakdown( - const AllocationBreakdown& other) = default; - -LeakDetectorImpl::LeakReport::AllocationBreakdown::~AllocationBreakdown() {} - -LeakDetectorImpl::LeakReport::LeakReport() : alloc_size_bytes_(0) {} - -LeakDetectorImpl::LeakReport::LeakReport(const LeakReport& other) = default; - -LeakDetectorImpl::LeakReport::~LeakReport() {} - -bool LeakDetectorImpl::LeakReport::operator<(const LeakReport& other) const { - if (alloc_size_bytes_ != other.alloc_size_bytes_) - return alloc_size_bytes_ < other.alloc_size_bytes_; - for (size_t i = 0; i < call_stack_.size() && i < other.call_stack_.size(); - ++i) { - if (call_stack_[i] != other.call_stack_[i]) - return call_stack_[i] < other.call_stack_[i]; - } - return call_stack_.size() < other.call_stack_.size(); -} - -LeakDetectorImpl::LeakDetectorImpl(uintptr_t mapping_addr, - size_t mapping_size, - int size_suspicion_threshold, - int call_stack_suspicion_threshold) - : num_allocs_(0), - num_frees_(0), - alloc_size_(0), - free_size_(0), - num_allocs_with_call_stack_(0), - num_stack_tables_(0), - address_map_(kAddressMapNumBuckets), - size_leak_analyzer_(kRankedSetSize, size_suspicion_threshold), - size_entries_(kNumSizeEntries), - mapping_addr_(mapping_addr), - mapping_size_(mapping_size), - call_stack_suspicion_threshold_(call_stack_suspicion_threshold) {} - -LeakDetectorImpl::~LeakDetectorImpl() { - // Free any call stack tables. - for (AllocSizeEntry& entry : size_entries_) { - CallStackTable* table = entry.stack_table; - if (!table) - continue; - table->~CallStackTable(); - CustomAllocator::Free(table, sizeof(CallStackTable)); - } - size_entries_.clear(); -} - -bool LeakDetectorImpl::ShouldGetStackTraceForSize(size_t size) const { - return size_entries_[SizeToIndex(size)].stack_table != nullptr; -} - -void LeakDetectorImpl::RecordAlloc(const void* ptr, - size_t size, - int stack_depth, - const void* const stack[]) { - AllocInfo alloc_info; - alloc_info.size = size; - - alloc_size_ += alloc_info.size; - ++num_allocs_; - - AllocSizeEntry* entry = &size_entries_[SizeToIndex(size)]; - ++entry->num_allocs; - - if (entry->stack_table && stack_depth > 0) { - alloc_info.call_stack = - call_stack_manager_.GetCallStack(stack_depth, stack); - entry->stack_table->Add(alloc_info.call_stack); - - ++num_allocs_with_call_stack_; - } - - uintptr_t addr = reinterpret_cast<uintptr_t>(ptr); - address_map_.insert(std::pair<uintptr_t, AllocInfo>(addr, alloc_info)); -} - -void LeakDetectorImpl::RecordFree(const void* ptr) { - // Look up address. - uintptr_t addr = reinterpret_cast<uintptr_t>(ptr); - auto iter = address_map_.find(addr); - // TODO(sque): Catch and report double frees. - if (iter == address_map_.end()) - return; - - const AllocInfo& alloc_info = iter->second; - - AllocSizeEntry* entry = &size_entries_[SizeToIndex(alloc_info.size)]; - ++entry->num_frees; - - const CallStack* call_stack = alloc_info.call_stack; - if (call_stack) { - if (entry->stack_table) - entry->stack_table->Remove(call_stack); - } - ++num_frees_; - free_size_ += alloc_info.size; - - address_map_.erase(iter); -} - -void LeakDetectorImpl::TestForLeaks(InternalVector<LeakReport>* reports, - size_t timestamp) { - // Add net alloc counts for each size to a ranked list. - RankedSet size_ranked_set(kRankedSetSize); - for (size_t i = 0; i < size_entries_.size(); ++i) { - const AllocSizeEntry& entry = size_entries_[i]; - ValueType size_value(IndexToSize(i)); - size_ranked_set.Add(size_value, entry.GetNetAllocs()); - } - size_leak_analyzer_.AddSample(std::move(size_ranked_set)); - - RecordCurrentAllocationDataInHistory(timestamp); - - UpdateLeakCooldowns(); - - // Get suspected leaks by size. - for (const ValueType& size_value : size_leak_analyzer_.suspected_leaks()) { - uint32_t size = size_value.size(); - AllocSizeEntry* entry = &size_entries_[SizeToIndex(size)]; - if (entry->stack_table) - continue; - entry->stack_table = new (CustomAllocator::Allocate(sizeof(CallStackTable))) - CallStackTable(call_stack_suspicion_threshold_); - ++num_stack_tables_; - } - - // Check for leaks in each CallStackTable. It makes sense to this before - // checking the size allocations, because that could potentially create new - // CallStackTable. However, the overhead to check a new CallStackTable is - // small since this function is run very rarely. So handle the leak checks of - // Tier 2 here. - reports->clear(); - for (size_t i = 0; i < size_entries_.size(); ++i) { - const AllocSizeEntry& entry = size_entries_[i]; - CallStackTable* stack_table = entry.stack_table; - if (!stack_table || stack_table->empty()) - continue; - - size_t size = IndexToSize(i); - - // Get suspected leaks by call stack. - stack_table->TestForLeaks(); - const LeakAnalyzer& leak_analyzer = stack_table->leak_analyzer(); - for (const ValueType& call_stack_value : leak_analyzer.suspected_leaks()) { - const CallStack* call_stack = call_stack_value.call_stack(); - - if (!ReadyToGenerateReport(size, call_stack)) - continue; - - // Return reports by storing in |*reports|. - reports->resize(reports->size() + 1); - LeakReport* report = &reports->back(); - report->alloc_size_bytes_ = size; - report->call_stack_.resize(call_stack->depth); - for (size_t j = 0; j < call_stack->depth; ++j) { - report->call_stack_[j] = GetOffset(call_stack->stack[j]); - } - - StoreHistoricalDataInReport(size, call_stack, report, timestamp); - ResetLeakCooldown(size, call_stack); - } - } -} - -LeakDetectorImpl::AllocSizeEntry::AllocSizeEntry() : num_allocs(0), - num_frees(0), - stack_table(nullptr) {} - -LeakDetectorImpl::AllocSizeEntry::~AllocSizeEntry() {} - -size_t LeakDetectorImpl::AddressHash::operator()(uintptr_t addr) const { - return base::Hash(&addr, sizeof(addr)); -} - -uintptr_t LeakDetectorImpl::GetOffset(const void* ptr) const { - uintptr_t ptr_value = reinterpret_cast<uintptr_t>(ptr); - if (ptr_value >= mapping_addr_ && ptr_value < mapping_addr_ + mapping_size_) - return ptr_value - mapping_addr_; - return UINTPTR_MAX; -} - -void LeakDetectorImpl::RecordCurrentAllocationDataInHistory(size_t timestamp) { - // Record a snapshot of the current size table. - InternalVector<uint32_t> current_size_table_record; - current_size_table_record.reserve(kNumSizeEntriesInHistory); - for (const AllocSizeEntry& entry : size_entries_) { - if (current_size_table_record.size() == kNumSizeEntriesInHistory) - break; - current_size_table_record.push_back(entry.GetNetAllocs()); - } - size_breakdown_history_.emplace_back(std::move(current_size_table_record)); - if (size_breakdown_history_.size() > kMaxNumHistoryEntries) - size_breakdown_history_.pop_front(); - - // For each allocation size that has started profiling by call site, record a - // snapshot of the top call sites by number of allocations. - for (AllocSizeEntry& entry : size_entries_) { - if (!entry.stack_table) - continue; - RankedSet top_call_stacks(kNumTopCallStacksInHistory); - entry.stack_table->GetTopCallStacks(&top_call_stacks); - entry.stack_table->UpdateLastDropInfo(timestamp); - entry.call_site_breakdown_history.push_back(std::move(top_call_stacks)); - if (entry.call_site_breakdown_history.size() > kMaxNumHistoryEntries) - entry.call_site_breakdown_history.pop_front(); - } -} - -void LeakDetectorImpl::StoreHistoricalDataInReport(size_t size, - const CallStack* call_site, - LeakReport* report, - size_t timestamp) { - using AllocationBreakdown = LeakReport::AllocationBreakdown; - // Copy historical allocation data into the report. - InternalVector<AllocationBreakdown>* dest = &report->alloc_breakdown_history_; - dest->reserve(size_breakdown_history_.size()); - - // Store each frame of the breakdown by size. - for (const InternalVector<uint32_t>& breakdown : size_breakdown_history_) { - dest->push_back(AllocationBreakdown()); - dest->back().counts_by_size = breakdown; - } - - // Store the count of all allocations with size=|size| and made from call site - // |call_site|. - const InternalList<RankedSet>& src = - size_entries_[SizeToIndex(size)].call_site_breakdown_history; - - auto src_iter = src.begin(); - auto dest_iter = dest->begin(); - // The call site history and the destination container may be of different - // sizes. Adjust their iterators so they are the same distance from the last - // element of each container, i.e. they will point to the frames corresponding - // to the same time. - if (src.size() > dest->size()) - std::advance(src_iter, src.size() - dest->size()); - else if (dest->size() > src.size()) - std::advance(dest_iter, dest->size() - src.size()); - - while (src_iter != src.end() && dest_iter != dest->end()) { - const RankedSet& ranked_call_sites = *src_iter; - auto find_call_site_iter = ranked_call_sites.FindCallStack(call_site); - if (find_call_site_iter != ranked_call_sites.end()) - dest_iter->count_for_call_stack = find_call_site_iter->count; - ++src_iter; - ++dest_iter; - } - - size_entries_[SizeToIndex(size)].stack_table->GetLastUptrendInfo( - call_site, timestamp, &report->num_rising_intervals_, - &report->num_allocs_increase_); -} - -bool LeakDetectorImpl::ReadyToGenerateReport( - size_t size, - const CallStack* call_stack) const { - return cooldowns_per_leak_.find(std::make_pair(size, call_stack)) == - cooldowns_per_leak_.end(); -} - -void LeakDetectorImpl::ResetLeakCooldown(size_t size, - const CallStack* call_stack) { - cooldowns_per_leak_[std::make_pair(size, call_stack)] = - kNumSizeEntriesInHistory; -} - -void LeakDetectorImpl::UpdateLeakCooldowns() { - for (auto iter = cooldowns_per_leak_.begin(); - iter != cooldowns_per_leak_.end(); - /* No iterating here */) { - if (--iter->second > 0) { - ++iter; - } else { - cooldowns_per_leak_.erase(iter++); - } - } -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector_impl.h b/components/metrics/leak_detector/leak_detector_impl.h deleted file mode 100644 index 65c93d978..0000000 --- a/components/metrics/leak_detector/leak_detector_impl.h +++ /dev/null
@@ -1,262 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_IMPL_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_IMPL_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <list> -#include <vector> - -#include "base/containers/hash_tables.h" -#include "base/macros.h" -#include "components/metrics/leak_detector/call_stack_manager.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_analyzer.h" -#include "components/metrics/leak_detector/stl_allocator.h" - -namespace metrics { -namespace leak_detector { - -class CallStackTable; - -// Class that contains the actual leak detection mechanism. -// Not thread-safe. -class LeakDetectorImpl { - public: - // STL types that are safe to use within the memory leak detector. They use - // CustomAllocator to avoid recursive malloc hook invocation when analyzing - // allocs and frees. - template <typename T> - using InternalList = std::list<T, STLAllocator<T, CustomAllocator>>; - template <typename T> - using InternalVector = std::vector<T, STLAllocator<T, CustomAllocator>>; - - // Leak report generated by LeakDetectorImpl. - class LeakReport { - public: - // Stores a record of the allocation bookkeeping taken at a single moment in - // time. - struct AllocationBreakdown { - AllocationBreakdown(); - AllocationBreakdown(const AllocationBreakdown& other); - ~AllocationBreakdown(); - - // The contents of |LeakDetectorImpl::size_breakdown_history_| when this - // report was generated. See comment description of that variable. - InternalVector<uint32_t> counts_by_size; - - // The net number of allocations with alloc size of - // |Leakreport::alloc_size_bytes_| allocated from |call_stack_|, at the - // time this record was generated. - uint32_t count_for_call_stack; - }; - - LeakReport(); - LeakReport(const LeakReport& other); - ~LeakReport(); - - size_t alloc_size_bytes() const { return alloc_size_bytes_; } - - const InternalVector<uintptr_t>& call_stack() const { return call_stack_; } - - const InternalVector<AllocationBreakdown>& alloc_breakdown_history() const { - return alloc_breakdown_history_; - } - - size_t num_rising_intervals() const { return num_rising_intervals_; } - - uint32_t num_allocs_increase() const { return num_allocs_increase_; } - - void set_num_rising_intervals(size_t num_rising_intervals) { - num_rising_intervals_ = num_rising_intervals; - } - - // Used to compare the contents of two leak reports. - bool operator<(const LeakReport& other) const; - - private: - // LeakDetectorImpl needs access to class members when creating a new leak - // report. - friend class LeakDetectorImpl; - - // Number of bytes allocated by the leak site during each allocation. - size_t alloc_size_bytes_; - - // Number of intervals in the last uptrend. - size_t num_rising_intervals_; - - // Net number of bytes allocated in the last uptrend. - uint32_t num_allocs_increase_; - - // Unlike the CallStack struct, which consists of addresses, this call stack - // will contain offsets in the executable binary. - InternalVector<uintptr_t> call_stack_; - - // Records of allocation bookkeeping over time. The first element is the - // oldest entry and the last element is the newest. - InternalVector<AllocationBreakdown> alloc_breakdown_history_; - }; - - LeakDetectorImpl(uintptr_t mapping_addr, - size_t mapping_size, - int size_suspicion_threshold, - int call_stack_suspicion_threshold); - ~LeakDetectorImpl(); - - // Indicates whether the given allocation size has an associated call stack - // table, and thus requires a stack unwind. - bool ShouldGetStackTraceForSize(size_t size) const; - - // Record allocs and frees. - void RecordAlloc(const void* ptr, - size_t size, - int stack_depth, - const void* const call_stack[]); - void RecordFree(const void* ptr); - - // Run check for possible leaks based on the current profiling data. - void TestForLeaks(InternalVector<LeakReport>* reports, size_t timestamp); - - private: - // A record of allocations for a particular size. - struct AllocSizeEntry { - // Number of allocations and frees for this size. - uint32_t num_allocs; - uint32_t num_frees; - - // A stack table, if this size is being profiled for stack as well. - CallStackTable* stack_table; - - // Historical records of allocation breakdown by call site, for a particular - // allocation size. Each entry in the list is a RankedSet containing the top - // call sites ordered by most number of call sites, collected during a leak - // analysis. The oldest record is at the head and the newest record is at - // the tail. - InternalList<RankedSet> call_site_breakdown_history; - - AllocSizeEntry(); - ~AllocSizeEntry(); - - // Returns net number of allocs. - uint32_t GetNetAllocs() const { return num_allocs - num_frees; } - }; - - // Info for a single allocation. - struct AllocInfo { - AllocInfo() : call_stack(nullptr) {} - - // Number of bytes in this allocation. - size_t size; - - // Points to a unique call stack. - const CallStack* call_stack; - }; - - // Allocator class for allocation entry map. Maps allocated addresses to - // AllocInfo objects. - using AllocationEntryAllocator = - STLAllocator<std::pair<const uintptr_t, AllocInfo>, CustomAllocator>; - - // Hash class for addresses. - struct AddressHash { - size_t operator()(uintptr_t addr) const; - }; - - // Returns the offset of |ptr| within the current binary. If it is not in the - // current binary, return |UINTPTR_MAX|. - uintptr_t GetOffset(const void* ptr) const; - - // Record some of the current allocation bookkeeping. The net number of allocs - // per size is recorded in |size_breakdown_history_|. The net number of allocs - // per call site for each size is recorded in - // |AllocSizeEntry::call_site_breakdown_history|. - // Argument |timestamp| is used to update information about drops in - // allocation number for each stored call stack. - // - // Not all the net alloc counts are recorded. And the number of historical - // records kept is capped. If adding a new record exceeds that limit, the - // oldest record is discarded. See the function definition for more details. - void RecordCurrentAllocationDataInHistory(size_t timestamp); - - // Store the data collected by RecordCurrentAllocationDataInHistory() in - // |*report|. Not all net alloc counts per call site will be stored, only the - // count for size=|size| and made from |call_site|. Also information - // about the last uptrend in net allocations for |size| and |call_site| - // is recorded with help of |timestamp|. - void StoreHistoricalDataInReport(size_t size, const CallStack* call_site, - LeakReport* report, size_t timestamp); - - // Decrements the cooldown counter (value) for each entry in - // |cooldowns_per_leak_|. If the cooldown counter reaches 0, the entry is - // removed. Thus, all extantentries in |cooldowns_per_leak_| maintain a - // positive count. - void UpdateLeakCooldowns(); - - // Returns true if a particular leak signature (alloc size + call site) does - // not have an active cooldown counter (i.e. does not have an entry in - // |cooldowns_per_leak_|. - bool ReadyToGenerateReport(size_t size, const CallStack* call_stack) const; - - // Resets the counter for a leak signature (alloc size + call site) in - // |cooldowns_per_leak_| to the max cooldown value. Creates a new entry in the - // container if none exists for this leak signature. - void ResetLeakCooldown(size_t size, const CallStack* call_stack); - - // Owns all unique call stack objects, which are allocated on the heap. Any - // other class or function that references a call stack must get it from here, - // but may not take ownership of the call stack object. - CallStackManager call_stack_manager_; - - // Allocation stats. - uint64_t num_allocs_; - uint64_t num_frees_; - uint64_t alloc_size_; - uint64_t free_size_; - - uint32_t num_allocs_with_call_stack_; - uint32_t num_stack_tables_; - - // Stores all individual recorded allocations. - base::hash_map<uintptr_t, - AllocInfo, - AddressHash, - std::equal_to<uintptr_t>, - AllocationEntryAllocator> address_map_; - - // Used to analyze potential leak patterns in the allocation sizes. - LeakAnalyzer size_leak_analyzer_; - - // Allocation stats for each size. - InternalVector<AllocSizeEntry> size_entries_; - - // Tracks the net number of allocations per size over time. Each list item is - // a vector containing the allocation counts for each size. The vector element - // with index i corresponds to sizes |i * 4| to |i * 4 + 3|. The oldest size - // breakdowns is at the head of the list, and new size breakdowns should be - // added to the tail of the list. - InternalList<InternalVector<uint32_t>> size_breakdown_history_; - - // Key: leak signature (alloc size + call site) - // Value: number of leak analyses before another leak report can be generated - // for that leak. - std::map<std::pair<size_t, const CallStack*>, size_t> cooldowns_per_leak_; - - // Address mapping info of the current binary. - uintptr_t mapping_addr_; - size_t mapping_size_; - - // Number of consecutive times a call stack must trigger suspicion to be - // considered a leak suspect. - int call_stack_suspicion_threshold_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorImpl); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_IMPL_H_
diff --git a/components/metrics/leak_detector/leak_detector_impl_unittest.cc b/components/metrics/leak_detector/leak_detector_impl_unittest.cc deleted file mode 100644 index 5a0c12ad..0000000 --- a/components/metrics/leak_detector/leak_detector_impl_unittest.cc +++ /dev/null
@@ -1,751 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/leak_detector_impl.h" - -#include <stddef.h> -#include <stdint.h> - -#include <complex> -#include <memory> -#include <new> -#include <set> -#include <vector> - -#include "base/macros.h" -#include "base/numerics/math_constants.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Makes working with complex numbers easier. -using Complex = std::complex<double>; - -using InternalLeakReport = LeakDetectorImpl::LeakReport; -using AllocationBreakdown = LeakDetectorImpl::LeakReport::AllocationBreakdown; - -// The mapping location in memory for a fictional executable. -const uintptr_t kMappingAddr = 0x800000; -const size_t kMappingSize = 0x200000; - -// Some call stacks within the fictional executable. -// * - outside the mapping range, e.g. JIT code. -const uintptr_t kRawStack0[] = { - 0x800100, 0x900000, 0x880080, 0x810000, -}; -const uintptr_t kRawStack1[] = { - 0x940000, 0x980000, - 0xdeadbeef, // * - 0x9a0000, -}; -const uintptr_t kRawStack2[] = { - 0x8f0d00, 0x803abc, 0x9100a0, -}; -const uintptr_t kRawStack3[] = { - 0x90fcde, - 0x900df00d, // * - 0x801000, 0x880088, - 0xdeadcafe, // * - 0x9f0000, 0x8700a0, 0x96037c, -}; -const uintptr_t kRawStack4[] = { - 0x8c0000, 0x85d00d, 0x921337, - 0x780000, // * -}; -const uintptr_t kRawStack5[] = { - 0x990000, 0x888888, 0x830ac0, 0x8e0000, - 0xc00000, // * -}; - -// This struct makes it easier to pass call stack info to -// LeakDetectorImplTest::Alloc(). -struct TestCallStack { - const uintptr_t* stack; // A reference to the original stack data. - size_t depth; -}; - -const TestCallStack kStack0 = {kRawStack0, arraysize(kRawStack0)}; -const TestCallStack kStack1 = {kRawStack1, arraysize(kRawStack1)}; -const TestCallStack kStack2 = {kRawStack2, arraysize(kRawStack2)}; -const TestCallStack kStack3 = {kRawStack3, arraysize(kRawStack3)}; -const TestCallStack kStack4 = {kRawStack4, arraysize(kRawStack4)}; -const TestCallStack kStack5 = {kRawStack5, arraysize(kRawStack5)}; - -// The interval between consecutive analyses (LeakDetectorImpl::TestForLeaks), -// in number of bytes allocated. e.g. if |kAllocedSizeAnalysisInterval| = 1024 -// then call TestForLeaks() every 1024 bytes of allocation that occur. -const size_t kAllocedSizeAnalysisInterval = 8192; - -// Suspicion thresholds used by LeakDetectorImpl for size and call stacks. -const uint32_t kSizeSuspicionThreshold = 4; -const uint32_t kCallStackSuspicionThreshold = 4; - -// Because it takes N+1 analyses to reach a suspicion threshold of N (the -// suspicion score is only calculated based on deltas from the previous -// analysis), the actual number of analyses it takes to generate a report for -// the first time is: -const uint32_t kMinNumAnalysesToGenerateReport = - kSizeSuspicionThreshold + 1 + kCallStackSuspicionThreshold + 1; - -// Returns the offset within [kMappingAddr, kMappingAddr + kMappingSize) if -// |addr| falls in that range. Otherwise, returns |UINTPTR_MAX|. -uintptr_t GetOffsetInMapping(uintptr_t addr) { - if (addr >= kMappingAddr && addr < kMappingAddr + kMappingSize) - return addr - kMappingAddr; - return UINTPTR_MAX; -} - -// Copied from leak_detector_impl.cc. Converts a size to a size class index. -// Any size in the range [index * 4, index * 4 + 3] falls into that size class. -uint32_t SizeToIndex(size_t size) { - return size / sizeof(uint32_t); -} - -// Returns true if the |alloc_breakdown_history_| field of the two LeakReports -// |a| and |b| are the same. -bool CompareReportAllocHistory(const InternalLeakReport& a, - const InternalLeakReport& b) { - auto alloc_breakdown_compare_func = [](AllocationBreakdown a, - AllocationBreakdown b) -> bool { - return std::equal(a.counts_by_size.begin(), a.counts_by_size.end(), - b.counts_by_size.begin()) && - a.count_for_call_stack == b.count_for_call_stack; - }; - return std::equal( - a.alloc_breakdown_history().begin(), a.alloc_breakdown_history().end(), - b.alloc_breakdown_history().begin(), alloc_breakdown_compare_func); -} - -} // namespace - -// This test suite will test the ability of LeakDetectorImpl to catch leaks in -// a program. Individual tests can run leaky code locally. -// -// The leaky code must call Alloc() and Free() for heap memory management. It -// should not call See comments on those -// functions for more details. -class LeakDetectorImplTest : public ::testing::Test { - public: - LeakDetectorImplTest() - : total_num_allocs_(0), - total_num_frees_(0), - total_alloced_size_(0), - next_analysis_total_alloced_size_(kAllocedSizeAnalysisInterval), - num_reports_generated_(0) {} - - void SetUp() override { - CustomAllocator::Initialize(); - - detector_.reset(new LeakDetectorImpl(kMappingAddr, kMappingSize, - kSizeSuspicionThreshold, - kCallStackSuspicionThreshold)); - } - - void TearDown() override { - // Free any memory that was leaked by test cases. Do not use Free() because - // that will try to modify |alloced_ptrs_|. - for (void* ptr : alloced_ptrs_) - delete[] reinterpret_cast<char*>(ptr); - alloced_ptrs_.clear(); - - // Must destroy all objects that use CustomAllocator before shutting down. - detector_.reset(); - stored_reports_.clear(); - - EXPECT_TRUE(CustomAllocator::Shutdown()); - } - - protected: - template <typename T> - using InternalVector = LeakDetectorImpl::InternalVector<T>; - - // Alloc and free functions that allocate and free heap memory and - // automatically pass alloc/free info to |detector_|. They emulate the - // alloc/free hook functions that would call into LeakDetectorImpl in - // real-life usage. They also keep track of individual allocations locally, so - // any leaked memory could be cleaned up. - // - // |stack| is just a nominal call stack object to identify the call site. It - // doesn't have to contain the stack trace of the actual call stack. - void* Alloc(size_t size, const TestCallStack& stack) { - void* ptr = new char[size]; - detector_->RecordAlloc(ptr, size, stack.depth, - reinterpret_cast<const void* const*>(stack.stack)); - - EXPECT_TRUE(alloced_ptrs_.find(ptr) == alloced_ptrs_.end()); - alloced_ptrs_.insert(ptr); - - ++total_num_allocs_; - total_alloced_size_ += size; - if (total_alloced_size_ >= next_analysis_total_alloced_size_) { - InternalVector<InternalLeakReport> reports; - detector_->TestForLeaks(&reports, 1024); - for (const InternalLeakReport& report : reports) { - auto iter = stored_reports_.find(report); - if (iter == stored_reports_.end()) { - stored_reports_.insert(report); - } else { - // InternalLeakReports are uniquely identified by |alloc_size_bytes_| - // and |call_stack_|. See InternalLeakReport::operator<(). - // If a report with the same size and call stack already exists, - // overwrite it with the new report, which has a newer history. - stored_reports_.erase(iter); - stored_reports_.insert(report); - } - } - num_reports_generated_ += reports.size(); - - // Determine when the next leak analysis should occur. - while (total_alloced_size_ >= next_analysis_total_alloced_size_) - next_analysis_total_alloced_size_ += kAllocedSizeAnalysisInterval; - } - return ptr; - } - - // See comment for Alloc(). - void Free(void* ptr) { - auto find_ptr_iter = alloced_ptrs_.find(ptr); - EXPECT_FALSE(find_ptr_iter == alloced_ptrs_.end()); - if (find_ptr_iter == alloced_ptrs_.end()) - return; - alloced_ptrs_.erase(find_ptr_iter); - ++total_num_frees_; - - detector_->RecordFree(ptr); - - delete[] reinterpret_cast<char*>(ptr); - } - - // TEST CASE: Simple program that leaks memory regularly. Pass in - // enable_leaks=true to trigger some memory leaks. - void SimpleLeakyFunction(bool enable_leaks); - - // TEST CASE: Julia set fractal computation. Pass in enable_leaks=true to - // trigger some memory leaks. - void JuliaSet(bool enable_leaks); - - // Instance of the class being tested. - std::unique_ptr<LeakDetectorImpl> detector_; - - // Number of pointers allocated and freed so far. - size_t total_num_allocs_; - size_t total_num_frees_; - - // Keeps count of total size allocated by Alloc(). - size_t total_alloced_size_; - - // The cumulative allocation size at which to trigger the TestForLeaks() call. - size_t next_analysis_total_alloced_size_; - - // Stores all pointers to memory allocated by by Alloc() so we can manually - // free the leaked pointers at the end. This also serves as redundant - // bookkeepping: it stores all pointers that have been allocated but not yet - // freed. - std::set<void*> alloced_ptrs_; - - // Store leak reports here. Use a set so duplicate reports are not stored. - std::set<InternalLeakReport> stored_reports_; - - // Keeps track of the actual number of reports (duplicate or not) that were - // generated by |detector_|. - size_t num_reports_generated_; - - private: - DISALLOW_COPY_AND_ASSIGN(LeakDetectorImplTest); -}; - -void LeakDetectorImplTest::SimpleLeakyFunction(bool enable_leaks) { - std::vector<uint32_t*> ptrs(7); - - const int kNumOuterIterations = 32; - for (int j = 0; j < kNumOuterIterations; ++j) { - // The inner loop allocates 256 bytes. Run it 32 times so that 8192 bytes - // (|kAllocedSizeAnalysisInterval|) are allocated for each iteration of the - // outer loop. - const int kNumInnerIterations = 32; - static_assert(kNumInnerIterations * 256 == kAllocedSizeAnalysisInterval, - "Inner loop iterations do not allocate the correct number of " - "bytes."); - for (int i = 0; i < kNumInnerIterations; ++i) { - size_t alloc_size_at_beginning = total_alloced_size_; - - ptrs[0] = new(Alloc(16, kStack0)) uint32_t; - ptrs[1] = new(Alloc(32, kStack1)) uint32_t; - ptrs[2] = new(Alloc(48, kStack2)) uint32_t; - // Allocate two 32-byte blocks and record them as from the same call site. - ptrs[3] = new(Alloc(32, kStack3)) uint32_t; - ptrs[4] = new(Alloc(32, kStack3)) uint32_t; - // Allocate two 48-byte blocks and record them as from the same call site. - ptrs[5] = new(Alloc(48, kStack4)) uint32_t; - ptrs[6] = new(Alloc(48, kStack4)) uint32_t; - - // Now free these pointers. - Free(ptrs[0]); - if (!enable_leaks) // Leak with size=32, call_stack=kStack1. - Free(ptrs[1]); - if (!enable_leaks) // Leak with size=48, call_stack=kStack2. - Free(ptrs[2]); - Free(ptrs[3]); - Free(ptrs[4]); - Free(ptrs[5]); - Free(ptrs[6]); - - // Make sure that the above code actually allocates 256 bytes. - EXPECT_EQ(alloc_size_at_beginning + 256, total_alloced_size_); - } - } -} - -void LeakDetectorImplTest::JuliaSet(bool enable_leaks) { - // The center region of the complex plane that is the basis for our Julia set - // computations is a circle of radius kRadius. - constexpr double kRadius = 2; - - // To track points in the complex plane, we will use a rectangular grid in the - // range defined by [-kRadius, kRadius] along both axes. - constexpr double kRangeMin = -kRadius; - constexpr double kRangeMax = kRadius; - - // Divide each axis into intervals, each of which is associated with a point - // on that axis at its center. - constexpr double kIntervalInverse = 64; - constexpr double kInterval = 1.0 / kIntervalInverse; - constexpr int kNumPoints = (kRangeMax - kRangeMin) / kInterval + 1; - - // Contains some useful functions for converting between points on the complex - // plane and in a gridlike data structure. - struct ComplexPlane { - static int GetXGridIndex(const Complex& value) { - return (value.real() + kInterval / 2 - kRangeMin) / kInterval; - } - static int GetYGridIndex(const Complex& value) { - return (value.imag() + kInterval / 2 - kRangeMin) / kInterval; - } - static int GetArrayIndex(const Complex& value) { - return GetXGridIndex(value) + GetYGridIndex(value) * kNumPoints; - } - static Complex GetComplexForGridPoint(size_t x, size_t y) { - return Complex(kRangeMin + x * kInterval, kRangeMin + y * kInterval); - } - }; - - // Make sure the choice of interval doesn't result in any loss of precision. - ASSERT_EQ(1.0, kInterval * kIntervalInverse); - - // Create a grid for part of the complex plane, with each axis within the - // range [kRangeMin, kRangeMax]. - constexpr size_t width = kNumPoints; - constexpr size_t height = kNumPoints; - std::vector<Complex*> grid(width * height); - - // Initialize an object for each point within the inner circle |z| < kRadius. - for (size_t i = 0; i < width; ++i) { - for (size_t j = 0; j < height; ++j) { - Complex point = ComplexPlane::GetComplexForGridPoint(i, j); - // Do not store any values outside the inner circle. - if (abs(point) <= kRadius) { - grid[i + j * width] = - new (Alloc(sizeof(Complex), kStack0)) Complex(point); - } - } - } - EXPECT_LE(alloced_ptrs_.size(), width * height); - - // Create a new grid for the result of the transformation. - std::vector<Complex*> next_grid(width * height, nullptr); - - // Number of times to run the Julia set iteration. This is not the same as the - // number of analyses performed by LeakDetectorImpl, which is determined by - // the total number of bytes allocated divided by - // |kAllocedSizeAnalysisInterval|. - const int kNumIterations = 20; - for (int n = 0; n < kNumIterations; ++n) { - for (int i = 0; i < kNumPoints; ++i) { - for (int j = 0; j < kNumPoints; ++j) { - if (!grid[i + j * width]) - continue; - - // NOTE: The below code is NOT an efficient way to compute a Julia set. - // This is only to test the leak detector with some nontrivial code. - - // A simple polynomial function for generating Julia sets is: - // f(z) = z^n + c - - // But in this algorithm, we need the inverse: - // fInv(z) = (z - c)^(1/n) - - // Here, let's use n=5 and c=0.544. - const Complex c(0.544, 0); - const Complex& z = *grid[i + j * width]; - - // This is the principal root. - Complex root = pow(z - c, 0.2); - - // Discard the result if it is too far out from the center of the plane. - if (abs(root) > kRadius) - continue; - - // The below code only allocates Complex objects of the same size. The - // leak detector expects various sizes, so increase the allocation size - // by a different amount at each call site. - - // Nth root produces N results. - // Place all root results on |next_grid|. - - // First, place the principal root. - if (!next_grid[ComplexPlane::GetArrayIndex(root)]) { - next_grid[ComplexPlane::GetArrayIndex(root)] = - new (Alloc(sizeof(Complex) + 24, kStack1)) Complex(root); - } - - double magnitude = abs(root); - double angle = arg(root); - // To generate other roots, rotate the principal root by increments of - // 1/N of a full circle. - const double kAngleIncrement = base::kPiDouble * 2 / 5; - - // Second root. - root = std::polar(magnitude, angle + kAngleIncrement); - if (!next_grid[ComplexPlane::GetArrayIndex(root)]) { - next_grid[ComplexPlane::GetArrayIndex(root)] = - new (Alloc(sizeof(Complex) + 40, kStack2)) Complex(root); - } - - // In some of the sections below, setting |enable_leaks| to true will - // trigger a memory leak by overwriting the old Complex pointer value - // without freeing it. Due to the nature of complex roots being confined - // to equal sections of the complex plane, each new pointer will - // displace an old pointer that was allocated from the same line of - // code. - - // Third root. - root = std::polar(magnitude, angle + kAngleIncrement * 2); - // *** LEAK *** - if (enable_leaks || !next_grid[ComplexPlane::GetArrayIndex(root)]) { - next_grid[ComplexPlane::GetArrayIndex(root)] = - new (Alloc(sizeof(Complex) + 40, kStack3)) Complex(root); - } - - // Fourth root. - root = std::polar(magnitude, angle + kAngleIncrement * 3); - // *** LEAK *** - if (enable_leaks || !next_grid[ComplexPlane::GetArrayIndex(root)]) { - next_grid[ComplexPlane::GetArrayIndex(root)] = - new (Alloc(sizeof(Complex) + 52, kStack4)) Complex(root); - } - - // Fifth root. - root = std::polar(magnitude, angle + kAngleIncrement * 4); - if (!next_grid[ComplexPlane::GetArrayIndex(root)]) { - next_grid[ComplexPlane::GetArrayIndex(root)] = - new (Alloc(sizeof(Complex) + 52, kStack5)) Complex(root); - } - } - } - - // Clear the previously allocated points. - for (Complex*& point : grid) { - if (point) { - Free(point); - point = nullptr; - } - } - - // Now swap the two grids for the next iteration. - grid.swap(next_grid); - } - - // Clear the previously allocated points. - for (Complex*& point : grid) { - if (point) { - Free(point); - point = nullptr; - } - } -} - -TEST_F(LeakDetectorImplTest, CheckTestFramework) { - EXPECT_EQ(0U, total_num_allocs_); - EXPECT_EQ(0U, total_num_frees_); - EXPECT_EQ(0U, alloced_ptrs_.size()); - - // Allocate some memory. - void* ptr0 = Alloc(12, kStack0); - void* ptr1 = Alloc(16, kStack0); - void* ptr2 = Alloc(24, kStack0); - EXPECT_EQ(3U, total_num_allocs_); - EXPECT_EQ(0U, total_num_frees_); - EXPECT_EQ(3U, alloced_ptrs_.size()); - - // Free one of the pointers. - Free(ptr1); - EXPECT_EQ(3U, total_num_allocs_); - EXPECT_EQ(1U, total_num_frees_); - EXPECT_EQ(2U, alloced_ptrs_.size()); - - // Allocate some more memory. - void* ptr3 = Alloc(72, kStack1); - void* ptr4 = Alloc(104, kStack1); - void* ptr5 = Alloc(96, kStack1); - void* ptr6 = Alloc(24, kStack1); - EXPECT_EQ(7U, total_num_allocs_); - EXPECT_EQ(1U, total_num_frees_); - EXPECT_EQ(6U, alloced_ptrs_.size()); - - // Free more pointers. - Free(ptr2); - Free(ptr4); - Free(ptr6); - EXPECT_EQ(7U, total_num_allocs_); - EXPECT_EQ(4U, total_num_frees_); - EXPECT_EQ(3U, alloced_ptrs_.size()); - - // Free remaining memory. - Free(ptr0); - Free(ptr3); - Free(ptr5); - EXPECT_EQ(7U, total_num_allocs_); - EXPECT_EQ(7U, total_num_frees_); - EXPECT_EQ(0U, alloced_ptrs_.size()); -} - -TEST_F(LeakDetectorImplTest, SimpleLeakyFunctionNoLeak) { - SimpleLeakyFunction(false /* enable_leaks */); - - // SimpleLeakyFunction() should have run cleanly without leaking. - EXPECT_EQ(total_num_allocs_, total_num_frees_); - EXPECT_EQ(0U, alloced_ptrs_.size()); - EXPECT_EQ(0U, num_reports_generated_); - EXPECT_EQ(0U, stored_reports_.size()); -} - -TEST_F(LeakDetectorImplTest, SimpleLeakyFunctionWithLeak) { - SimpleLeakyFunction(true /* enable_leaks */); - - // SimpleLeakyFunction() should generated some leak reports. - EXPECT_GT(total_num_allocs_, total_num_frees_); - EXPECT_GT(alloced_ptrs_.size(), 0U); - EXPECT_EQ(2U, num_reports_generated_); - ASSERT_EQ(2U, stored_reports_.size()); - - // The reports should be stored in order of size. - - // |report1| comes from the call site marked with kStack1, with size=32. - const InternalLeakReport& report1 = *stored_reports_.begin(); - EXPECT_EQ(32U, report1.alloc_size_bytes()); - ASSERT_EQ(kStack1.depth, report1.call_stack().size()); - for (size_t i = 0; i < kStack1.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack1.stack[i]), - report1.call_stack()[i]) << i; - } - - // |report2| comes from the call site marked with kStack2, with size=48. - const InternalLeakReport& report2 = *(++stored_reports_.begin()); - EXPECT_EQ(48U, report2.alloc_size_bytes()); - ASSERT_EQ(kStack2.depth, report2.call_stack().size()); - for (size_t i = 0; i < kStack2.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack2.stack[i]), - report2.call_stack()[i]) << i; - } - - // Check historical data recorded in the reports. - // - Each inner loop iteration allocates a net of 1x 32 bytes and 1x 48 bytes. - // - Each outer loop iteration allocates a net of 32x 32 bytes and 32x 48 - // bytes. - // - However, the leak analysis happens after the allocs but before the frees - // that come right after. So it should count the two extra allocs made at - // call sites |kStack3| and |kStack4|. The formula is |(i + 1) * 32 + 2|, - // where |i| is the iteration index. - // - It takes |kMinNumAnalysesToGenerateReport| analyses for the first report - // to be generated. Subsequent analyises do not generate reports due to the - // cooldown mechanism. - - const auto& report1_history = report1.alloc_breakdown_history(); - EXPECT_EQ(kMinNumAnalysesToGenerateReport, report1_history.size()); - - for (size_t i = 0; i < report1_history.size(); ++i) { - const AllocationBreakdown& entry = report1_history[i]; - - const InternalVector<uint32_t>& counts_by_size = entry.counts_by_size; - ASSERT_GT(counts_by_size.size(), SizeToIndex(48)); - - // Check the two leaky sizes, 32 and 48. - uint32_t expected_leaky_count = (i + 1) * 32 + 2; - EXPECT_EQ(expected_leaky_count, counts_by_size[SizeToIndex(32)]); - EXPECT_EQ(expected_leaky_count, counts_by_size[SizeToIndex(48)]); - - // Not related to the leaks, but there should be a dangling 16-byte - // allocation during each leak analysis, because it hasn't yet been freed. - EXPECT_EQ(1U, counts_by_size[SizeToIndex(16)]); - } - - // Check call site count over time. - ASSERT_LT(kSizeSuspicionThreshold, report1_history.size()); - // Initially, there has been no call site tracking. - for (size_t i = 0; i < kSizeSuspicionThreshold; ++i) - EXPECT_EQ(0U, report1_history[i].count_for_call_stack); - - // Once |kSizeSuspicionThreshold| has been reached and call site tracking has - // begun, the number of allocations for the suspected call site should - // increase by 32 each frame. See comments above. - uint32_t expected_call_stack_count = 0; - for (size_t i = kSizeSuspicionThreshold; i < report1_history.size(); ++i) { - EXPECT_EQ(expected_call_stack_count, - report1_history[i].count_for_call_stack); - expected_call_stack_count += 32; - } - - // |report2| should have the same size history and call stack history as - // |report1|. - EXPECT_TRUE(CompareReportAllocHistory(report1, report2)); -} - -TEST_F(LeakDetectorImplTest, SimpleLeakyFunctionWithLeakThreeTimes) { - // Run three iterations of the leaky function. - SimpleLeakyFunction(true /* enable_leaks */); - SimpleLeakyFunction(true /* enable_leaks */); - SimpleLeakyFunction(true /* enable_leaks */); - - // SimpleLeakyFunction() should have generated three times as many leak - // reports, because the number of iterations is the same as the cooldown of - // LeakDetectorImpl. But the number of unique reports stored is still two. - EXPECT_EQ(6U, num_reports_generated_); - ASSERT_EQ(2U, stored_reports_.size()); - - // The reports should be stored in order of size. - - // |report1| comes from the call site marked with kStack1, with size=32. - const InternalLeakReport& report1 = *stored_reports_.begin(); - EXPECT_EQ(32U, report1.alloc_size_bytes()); - ASSERT_EQ(kStack1.depth, report1.call_stack().size()); - for (size_t i = 0; i < kStack1.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack1.stack[i]), report1.call_stack()[i]) - << i; - } - - // |report2| comes from the call site marked with kStack2, with size=48. - const InternalLeakReport& report2 = *(++stored_reports_.begin()); - EXPECT_EQ(48U, report2.alloc_size_bytes()); - ASSERT_EQ(kStack2.depth, report2.call_stack().size()); - for (size_t i = 0; i < kStack2.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack2.stack[i]), report2.call_stack()[i]) - << i; - } - - const auto& report1_history = report1.alloc_breakdown_history(); - EXPECT_EQ(32U, report1_history.size()); - - for (size_t i = 1; i < report1_history.size(); ++i) { - const InternalVector<uint32_t>& counts_by_size = - report1_history[i].counts_by_size; - const InternalVector<uint32_t>& prev_counts_by_size = - report1_history[i - 1].counts_by_size; - ASSERT_GT(counts_by_size.size(), SizeToIndex(48)); - - // Check the two leaky sizes, 32 and 48. At this point, the exact counts - // could be computed but the computations are too complex for a unit test. - // Instead, check that the counts increase by 32 from the previous count. - // Same goes for checking call site counts later. - EXPECT_GT(counts_by_size[SizeToIndex(32)], 0U); - EXPECT_GT(counts_by_size[SizeToIndex(48)], 0U); - EXPECT_EQ(prev_counts_by_size[SizeToIndex(32)] + 32, - counts_by_size[SizeToIndex(32)]); - EXPECT_EQ(prev_counts_by_size[SizeToIndex(48)] + 32, - counts_by_size[SizeToIndex(48)]); - - // Not related to the leaks, but there should be a dangling 16-byte - // allocation during each leak analysis, because it hasn't yet been freed. - EXPECT_EQ(1U, counts_by_size[SizeToIndex(16)]); - } - - // Check call site count over time. - ASSERT_LT(kSizeSuspicionThreshold, report1_history.size()); - // Sufficient time has passed since the first report was generated. The entire - // alloc history should contain call site counts. - for (size_t i = 1; i < report1_history.size(); ++i) { - EXPECT_GT(report1_history[i].count_for_call_stack, 0U); - EXPECT_EQ(report1_history[i - 1].count_for_call_stack + 32, - report1_history[i].count_for_call_stack); - } - - // |report2| should have the same size history and call stack history as - // |report1|. - EXPECT_TRUE(CompareReportAllocHistory(report1, report2)); -} - -TEST_F(LeakDetectorImplTest, JuliaSetNoLeak) { - JuliaSet(false /* enable_leaks */); - - // JuliaSet() should have run cleanly without leaking. - EXPECT_EQ(total_num_allocs_, total_num_frees_); - EXPECT_EQ(0U, alloced_ptrs_.size()); - EXPECT_EQ(0U, num_reports_generated_); - ASSERT_EQ(0U, stored_reports_.size()); -} - -TEST_F(LeakDetectorImplTest, JuliaSetWithLeak) { - JuliaSet(true /* enable_leaks */); - - // JuliaSet() should have leaked some memory from two call sites. - EXPECT_GT(total_num_allocs_, total_num_frees_); - EXPECT_GT(alloced_ptrs_.size(), 0U); - EXPECT_GT(num_reports_generated_, 0U); - - // There should be one unique leak report generated for each leaky call site. - ASSERT_EQ(2U, stored_reports_.size()); - - // The reports should be stored in order of size. - - // |report1| comes from the call site in JuliaSet() corresponding to - // |kStack3|. - const InternalLeakReport& report1 = *stored_reports_.begin(); - EXPECT_EQ(sizeof(Complex) + 40, report1.alloc_size_bytes()); - ASSERT_EQ(kStack3.depth, report1.call_stack().size()); - for (size_t i = 0; i < kStack3.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack3.stack[i]), - report1.call_stack()[i]) << i; - } - - // |report2| comes from the call site in JuliaSet() corresponding to - // |kStack4|. - const InternalLeakReport& report2 = *(++stored_reports_.begin()); - EXPECT_EQ(sizeof(Complex) + 52, report2.alloc_size_bytes()); - ASSERT_EQ(kStack4.depth, report2.call_stack().size()); - for (size_t i = 0; i < kStack4.depth; ++i) { - EXPECT_EQ(GetOffsetInMapping(kStack4.stack[i]), - report2.call_stack()[i]) << i; - } - - // Check |report1|'s historical data. - const auto& report1_history = report1.alloc_breakdown_history(); - // Computing the exact number of leak analyses is not trivial, but we know it - // must be at least |kSizeSuspicionThreshold + kCallStackSuspicionThreshold| - // in order to have generated a report. - EXPECT_GT(report1_history.size(), - kSizeSuspicionThreshold + kCallStackSuspicionThreshold); - - // Make sure that the final allocation counts for the leaky sizes are larger - // than that of the non-leaky size by at least an order of magnitude. - const AllocationBreakdown& final_entry = *report1_history.rbegin(); - const InternalVector<uint32_t>& counts_by_size = final_entry.counts_by_size; - uint32_t size_0_index = SizeToIndex(sizeof(Complex) + 24); - uint32_t size_1_index = SizeToIndex(sizeof(Complex) + 40); - uint32_t size_2_index = SizeToIndex(sizeof(Complex) + 52); - ASSERT_LT(size_0_index, counts_by_size.size()); - ASSERT_LT(size_1_index, counts_by_size.size()); - ASSERT_LT(size_2_index, counts_by_size.size()); - - EXPECT_GT(counts_by_size[size_1_index], counts_by_size[size_0_index] * 10); - EXPECT_GT(counts_by_size[size_2_index], counts_by_size[size_0_index] * 10); - - // |report1| and |report2| do not necessarily have the same allocation history - // due to the different rates at which they were generated. -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector_unittest.cc b/components/metrics/leak_detector/leak_detector_unittest.cc deleted file mode 100644 index d0c1b9e..0000000 --- a/components/metrics/leak_detector/leak_detector_unittest.cc +++ /dev/null
@@ -1,146 +0,0 @@ -// Copyright 2016 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 "components/metrics/leak_detector/leak_detector.h" - -#include <algorithm> -#include <set> - -#include "base/allocator/allocator_extension.h" -#include "base/macros.h" -#include "base/threading/thread_task_runner_handle.h" -#include "content/public/test/test_browser_thread_bundle.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -namespace metrics { - -namespace { - -// Default values for LeakDetector params. See header file for the meaning of -// each parameter. -const float kDefaultSamplingRate = 1.0f; -const size_t kDefaultMaxCallStackUnwindDepth = 4; -const uint64_t kDefaultAnalysisIntervalBytes = 32 * 1024 * 1024; // 32 MiB. -const uint32_t kDefaultSizeSuspicionThreshold = 4; -const uint32_t kDefaultCallStackSuspicionThreshold = 4; - -// Observer class that receives leak reports and stores them in |reports_|. -// Only one copy of each unique report will be stored. -class TestObserver : public LeakDetector::Observer { - public: - // Contains a comparator function used to compare MemoryLeakReportProtos for - // uniqueness. - struct Comparator { - bool operator()(const MemoryLeakReportProto& a, - const MemoryLeakReportProto& b) const { - if (a.size_bytes() != b.size_bytes()) - return a.size_bytes() < b.size_bytes(); - - return std::lexicographical_compare(a.call_stack().begin(), - a.call_stack().end(), - b.call_stack().begin(), - b.call_stack().end()); - } - }; - - TestObserver() {} - - void OnLeaksFound( - const std::vector<MemoryLeakReportProto>& reports) override { - reports_.insert(reports.begin(), reports.end()); - } - - const std::set<MemoryLeakReportProto, Comparator>& reports() const { - return reports_; - } - - private: - // Container for all leak reports received through OnLeaksFound(). Stores only - // one copy of each unique report. - std::set<MemoryLeakReportProto, Comparator> reports_; - - DISALLOW_COPY_AND_ASSIGN(TestObserver); -}; - -} // namespace - -class LeakDetectorTest : public ::testing::Test { - public: - LeakDetectorTest() : detector_(LeakDetector::GetInstance()) { - MemoryLeakReportProto::Params params; - params.set_sampling_rate(kDefaultSamplingRate); - params.set_max_stack_depth(kDefaultMaxCallStackUnwindDepth); - params.set_analysis_interval_bytes(kDefaultAnalysisIntervalBytes); - params.set_size_suspicion_threshold(kDefaultSizeSuspicionThreshold); - params.set_call_stack_suspicion_threshold( - kDefaultCallStackSuspicionThreshold); - - EXPECT_TRUE(base::ThreadTaskRunnerHandle::IsSet()); - detector_->Init(params, base::ThreadTaskRunnerHandle::Get()); - } - - protected: - // Points to the instance of LeakDetector returned by GetInstance(). - LeakDetector* detector_; - - private: - // For supporting content::BrowserThread operations. - content::TestBrowserThreadBundle thread_bundle_; - - DISALLOW_COPY_AND_ASSIGN(LeakDetectorTest); -}; - -TEST_F(LeakDetectorTest, NotifyObservers) { - // Generate two sets of leak reports. - std::vector<MemoryLeakReportProto> reports1(3); - reports1[0].set_size_bytes(8); - for (uint64_t entry : {1, 2, 3, 4}) { - reports1[0].add_call_stack(entry); - } - reports1[1].set_size_bytes(16); - for (uint64_t entry : {5, 6, 7, 8}) { - reports1[1].add_call_stack(entry); - } - reports1[2].set_size_bytes(24); - for (uint64_t entry : {9, 10, 11, 12}) { - reports1[1].add_call_stack(entry); - } - - std::vector<MemoryLeakReportProto> reports2(3); - reports2[0].set_size_bytes(32); - for (uint64_t entry : {1, 2, 4, 8}) { - reports2[0].add_call_stack(entry); - } - reports2[1].set_size_bytes(40); - for (uint64_t entry : {16, 32, 64, 128}) { - reports2[1].add_call_stack(entry); - } - reports2[2].set_size_bytes(48); - for (uint64_t entry : {256, 512, 1024, 2048}) { - reports2[2].add_call_stack(entry); - } - - // Register three observers; - TestObserver obs1, obs2, obs3; - detector_->AddObserver(&obs1); - detector_->AddObserver(&obs2); - detector_->AddObserver(&obs3); - - // Pass both sets of reports to the leak detector. - detector_->NotifyObservers(reports1); - detector_->NotifyObservers(reports2); - - // Check that all three observers got both sets of reports, passed in - // separately. - for (const TestObserver* obs : {&obs1, &obs2, &obs3}) { - EXPECT_EQ(6U, obs->reports().size()); - for (const auto& report : {reports1[0], reports1[1], reports1[2], - reports2[0], reports2[1], reports2[2]}) { - EXPECT_TRUE(obs->reports().find(report) != obs->reports().end()); - } - } -} - -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector_value_type.cc b/components/metrics/leak_detector/leak_detector_value_type.cc deleted file mode 100644 index 4642f515..0000000 --- a/components/metrics/leak_detector/leak_detector_value_type.cc +++ /dev/null
@@ -1,47 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/leak_detector_value_type.h" - -#include <stdio.h> - -namespace metrics { -namespace leak_detector { - -bool LeakDetectorValueType::operator==( - const LeakDetectorValueType& other) const { - if (type_ != other.type_) - return false; - - switch (type_) { - case TYPE_SIZE: - return size_ == other.size_; - case TYPE_CALL_STACK: - return call_stack_ == other.call_stack_; - case TYPE_NONE: - // "NONE" types are considered to be all identical. - return true; - } - return false; -} - -bool LeakDetectorValueType::operator<( - const LeakDetectorValueType& other) const { - if (type_ != other.type_) - return type_ < other.type_; - - switch (type_) { - case TYPE_SIZE: - return size_ < other.size_; - case TYPE_CALL_STACK: - return call_stack_ < other.call_stack_; - case TYPE_NONE: - // "NONE" types are considered to be all identical. - return false; - } - return false; -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/leak_detector_value_type.h b/components/metrics/leak_detector/leak_detector_value_type.h deleted file mode 100644 index 40f6108..0000000 --- a/components/metrics/leak_detector/leak_detector_value_type.h +++ /dev/null
@@ -1,52 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_VALUE_TYPE_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_VALUE_TYPE_ - -#include <stddef.h> -#include <stdint.h> - -namespace metrics { -namespace leak_detector { - -// Used for tracking unique call stacks. -// Not thread-safe. -struct CallStack; - -class LeakDetectorValueType { - public: - // Supported types. - enum Type { - TYPE_NONE, - TYPE_SIZE, - TYPE_CALL_STACK, - }; - - LeakDetectorValueType() : type_(TYPE_NONE), size_(0), call_stack_(nullptr) {} - explicit LeakDetectorValueType(size_t size) - : type_(TYPE_SIZE), size_(size), call_stack_(nullptr) {} - explicit LeakDetectorValueType(const CallStack* call_stack) - : type_(TYPE_CALL_STACK), size_(0), call_stack_(call_stack) {} - - // Accessors. - Type type() const { return type_; } - size_t size() const { return size_; } - const CallStack* call_stack() const { return call_stack_; } - - // Comparators. - bool operator==(const LeakDetectorValueType& other) const; - bool operator<(const LeakDetectorValueType& other) const; - - private: - Type type_; - - size_t size_; - const CallStack* call_stack_; -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_LEAK_DETECTOR_VALUE_TYPE_
diff --git a/components/metrics/leak_detector/protobuf_to_mojo_converter.cc b/components/metrics/leak_detector/protobuf_to_mojo_converter.cc deleted file mode 100644 index bd827386..0000000 --- a/components/metrics/leak_detector/protobuf_to_mojo_converter.cc +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright 2016 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 "components/metrics/leak_detector/protobuf_to_mojo_converter.h" - -namespace metrics { -namespace leak_detector { -namespace protobuf_to_mojo_converter { - -void ParamsToMojo(const MemoryLeakReportProto::Params& params, - mojom::LeakDetectorParams* mojo_params) { - mojo_params->sampling_rate = params.sampling_rate(); - mojo_params->max_stack_depth = params.max_stack_depth(); - mojo_params->analysis_interval_bytes = params.analysis_interval_bytes(); - mojo_params->size_suspicion_threshold = params.size_suspicion_threshold(); - mojo_params->call_stack_suspicion_threshold = - params.call_stack_suspicion_threshold(); -} - -void MojoToParams(const mojom::LeakDetectorParams& mojo_params, - MemoryLeakReportProto::Params* params) { - params->set_sampling_rate(mojo_params.sampling_rate); - params->set_max_stack_depth(mojo_params.max_stack_depth); - params->set_analysis_interval_bytes(mojo_params.analysis_interval_bytes); - params->set_size_suspicion_threshold(mojo_params.size_suspicion_threshold); - params->set_call_stack_suspicion_threshold( - mojo_params.call_stack_suspicion_threshold); -} - -void ReportToMojo(const MemoryLeakReportProto& report, - mojom::MemoryLeakReport* mojo_report) { - mojo_report->size_bytes = report.size_bytes(); - mojo_report->num_rising_intervals = report.num_rising_intervals(); - mojo_report->num_allocs_increase = report.num_allocs_increase(); - for (auto call_stack_value : report.call_stack()) { - mojo_report->call_stack.push_back(call_stack_value); - } - - for (const auto& history_entry : report.alloc_breakdown_history()) { - metrics::mojom::AllocationBreakdownPtr mojo_entry = - metrics::mojom::AllocationBreakdown::New(); - for (auto count : history_entry.counts_by_size()) { - mojo_entry->counts_by_size.push_back(count); - } - mojo_entry->count_for_call_stack = history_entry.count_for_call_stack(); - - mojo_report->alloc_breakdown_history.push_back(std::move(mojo_entry)); - } -} - -void MojoToReport(const mojom::MemoryLeakReport& mojo_report, - MemoryLeakReportProto* report) { - report->set_size_bytes(mojo_report.size_bytes); - report->set_num_rising_intervals(mojo_report.num_rising_intervals); - report->set_num_allocs_increase(mojo_report.num_allocs_increase); - for (auto call_stack_addr : mojo_report.call_stack) - report->add_call_stack(call_stack_addr); - - for (const auto& history_entry : mojo_report.alloc_breakdown_history) { - auto* proto_entry = report->add_alloc_breakdown_history(); - for (auto count : history_entry->counts_by_size) { - proto_entry->add_counts_by_size(count); - } - proto_entry->set_count_for_call_stack(history_entry->count_for_call_stack); - } -} - -} // namespace protobuf_to_mojo_converter -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/protobuf_to_mojo_converter.h b/components/metrics/leak_detector/protobuf_to_mojo_converter.h deleted file mode 100644 index c844c42..0000000 --- a/components/metrics/leak_detector/protobuf_to_mojo_converter.h +++ /dev/null
@@ -1,36 +0,0 @@ -// Copyright 2016 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_METRICS_LEAK_DETECTOR_PROTOBUF_TO_MOJO_CONVERTER_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_PROTOBUF_TO_MOJO_CONVERTER_H_ - -#include "components/metrics/leak_detector/leak_detector.mojom.h" -#include "third_party/metrics_proto/memory_leak_report.pb.h" - -namespace metrics { -namespace leak_detector { -namespace protobuf_to_mojo_converter { - -// Converts between a MemoryLeakReportProto::Params protobuf and a -// mojom::LeakDetectorParams Mojo structure. The Mojo structure must already be -// allocated. -void ParamsToMojo(const MemoryLeakReportProto::Params& params, - mojom::LeakDetectorParams* mojo_params); -void MojoToParams(const mojom::LeakDetectorParams& mojo_params, - MemoryLeakReportProto::Params* params); - -// Converts between a MemoryLeakReportProto protobuf and a -// mojom::MemoryLeakReport Mojo structure. The Mojo structure must already be -// allocated. The conversion only covers the fields that are filled in by the -// LeakDetector class. -void ReportToMojo(const MemoryLeakReportProto& report, - mojom::MemoryLeakReport* mojo_report); -void MojoToReport(const mojom::MemoryLeakReport& mojo_report, - MemoryLeakReportProto* report); - -} // namespace protobuf_to_mojo_converter -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_PROTOBUF_TO_MOJO_CONVERTER_H_
diff --git a/components/metrics/leak_detector/protobuf_to_mojo_converter_unittest.cc b/components/metrics/leak_detector/protobuf_to_mojo_converter_unittest.cc deleted file mode 100644 index bef3f95..0000000 --- a/components/metrics/leak_detector/protobuf_to_mojo_converter_unittest.cc +++ /dev/null
@@ -1,145 +0,0 @@ -// Copyright 2016 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 "components/metrics/leak_detector/protobuf_to_mojo_converter.h" - -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -TEST(protobuf_to_mojo_converterTest, ConvertParams) { - MemoryLeakReportProto::Params params; - params.set_sampling_rate(0.75); - params.set_max_stack_depth(19); - params.set_analysis_interval_bytes(25 * 1024 * 1024); - params.set_size_suspicion_threshold(8); - params.set_call_stack_suspicion_threshold(11); - - // Convert to equivalent Mojo struct. - mojo::StructPtr<mojom::LeakDetectorParams> mojo_params = - mojom::LeakDetectorParams::New(); - protobuf_to_mojo_converter::ParamsToMojo(params, mojo_params.get()); - - EXPECT_DOUBLE_EQ(0.75, mojo_params->sampling_rate); - EXPECT_EQ(19U, mojo_params->max_stack_depth); - EXPECT_EQ(25U * 1024 * 1024, mojo_params->analysis_interval_bytes); - EXPECT_EQ(8U, mojo_params->size_suspicion_threshold); - EXPECT_EQ(11U, mojo_params->call_stack_suspicion_threshold); - - // Convert Mojo struct back to protobuf. - MemoryLeakReportProto::Params new_params; - protobuf_to_mojo_converter::MojoToParams(*mojo_params, &new_params); - - EXPECT_DOUBLE_EQ(0.75, new_params.sampling_rate()); - EXPECT_EQ(19U, new_params.max_stack_depth()); - EXPECT_EQ(25U * 1024 * 1024, new_params.analysis_interval_bytes()); - EXPECT_EQ(8U, new_params.size_suspicion_threshold()); - EXPECT_EQ(11U, new_params.call_stack_suspicion_threshold()); -} - -TEST(protobuf_to_mojo_converterTest, ConvertReport) { - MemoryLeakReportProto report; - report.add_call_stack(0xdeadbeef); - report.add_call_stack(0xc001d00d); - report.add_call_stack(0x900df00d); - report.set_size_bytes(24); - report.set_num_rising_intervals(5); - report.set_num_allocs_increase(42); - - auto* entry1 = report.add_alloc_breakdown_history(); - entry1->add_counts_by_size(1); - entry1->add_counts_by_size(2); - entry1->add_counts_by_size(3); - entry1->set_count_for_call_stack(4); - - auto* entry2 = report.add_alloc_breakdown_history(); - entry2->add_counts_by_size(11); - entry2->add_counts_by_size(12); - entry2->add_counts_by_size(13); - entry2->add_counts_by_size(14); - entry2->set_count_for_call_stack(15); - - auto* entry3 = report.add_alloc_breakdown_history(); - entry3->add_counts_by_size(21); - entry3->add_counts_by_size(22); - entry3->add_counts_by_size(23); - entry3->add_counts_by_size(24); - entry3->add_counts_by_size(25); - entry3->set_count_for_call_stack(26); - - // Convert to equivalent Mojo struct. - mojo::StructPtr<mojom::MemoryLeakReport> mojo_report = - mojom::MemoryLeakReport::New(); - protobuf_to_mojo_converter::ReportToMojo(report, mojo_report.get()); - - ASSERT_EQ(3U, mojo_report->call_stack.size()); - EXPECT_EQ(0xdeadbeef, mojo_report->call_stack[0]); - EXPECT_EQ(0xc001d00d, mojo_report->call_stack[1]); - EXPECT_EQ(0x900df00d, mojo_report->call_stack[2]); - EXPECT_EQ(24U, mojo_report->size_bytes); - EXPECT_EQ(5U, mojo_report->num_rising_intervals); - EXPECT_EQ(42U, mojo_report->num_allocs_increase); - - ASSERT_EQ(3U, mojo_report->alloc_breakdown_history.size()); - - ASSERT_EQ(3U, mojo_report->alloc_breakdown_history[0]->counts_by_size.size()); - EXPECT_EQ(1U, mojo_report->alloc_breakdown_history[0]->counts_by_size[0]); - EXPECT_EQ(2U, mojo_report->alloc_breakdown_history[0]->counts_by_size[1]); - EXPECT_EQ(3U, mojo_report->alloc_breakdown_history[0]->counts_by_size[2]); - EXPECT_EQ(4U, mojo_report->alloc_breakdown_history[0]->count_for_call_stack); - - ASSERT_EQ(4U, mojo_report->alloc_breakdown_history[1]->counts_by_size.size()); - EXPECT_EQ(11U, mojo_report->alloc_breakdown_history[1]->counts_by_size[0]); - EXPECT_EQ(12U, mojo_report->alloc_breakdown_history[1]->counts_by_size[1]); - EXPECT_EQ(13U, mojo_report->alloc_breakdown_history[1]->counts_by_size[2]); - EXPECT_EQ(14U, mojo_report->alloc_breakdown_history[1]->counts_by_size[3]); - EXPECT_EQ(15U, mojo_report->alloc_breakdown_history[1]->count_for_call_stack); - - ASSERT_EQ(5U, mojo_report->alloc_breakdown_history[2]->counts_by_size.size()); - EXPECT_EQ(21U, mojo_report->alloc_breakdown_history[2]->counts_by_size[0]); - EXPECT_EQ(22U, mojo_report->alloc_breakdown_history[2]->counts_by_size[1]); - EXPECT_EQ(23U, mojo_report->alloc_breakdown_history[2]->counts_by_size[2]); - EXPECT_EQ(24U, mojo_report->alloc_breakdown_history[2]->counts_by_size[3]); - EXPECT_EQ(25U, mojo_report->alloc_breakdown_history[2]->counts_by_size[4]); - EXPECT_EQ(26U, mojo_report->alloc_breakdown_history[2]->count_for_call_stack); - - // Convert Mojo struct back to protobuf. - MemoryLeakReportProto new_report; - protobuf_to_mojo_converter::MojoToReport(*mojo_report, &new_report); - - ASSERT_EQ(3, new_report.call_stack().size()); - EXPECT_EQ(0xdeadbeef, new_report.call_stack(0)); - EXPECT_EQ(0xc001d00d, new_report.call_stack(1)); - EXPECT_EQ(0x900df00d, new_report.call_stack(2)); - EXPECT_EQ(24U, new_report.size_bytes()); - EXPECT_EQ(5U, new_report.num_rising_intervals()); - EXPECT_EQ(42U, new_report.num_allocs_increase()); - - ASSERT_EQ(3, new_report.alloc_breakdown_history().size()); - - ASSERT_EQ(3, new_report.alloc_breakdown_history(0).counts_by_size().size()); - EXPECT_EQ(1U, new_report.alloc_breakdown_history(0).counts_by_size(0)); - EXPECT_EQ(2U, new_report.alloc_breakdown_history(0).counts_by_size(1)); - EXPECT_EQ(3U, new_report.alloc_breakdown_history(0).counts_by_size(2)); - EXPECT_EQ(4U, new_report.alloc_breakdown_history(0).count_for_call_stack()); - - ASSERT_EQ(4, new_report.alloc_breakdown_history(1).counts_by_size().size()); - EXPECT_EQ(11U, new_report.alloc_breakdown_history(1).counts_by_size(0)); - EXPECT_EQ(12U, new_report.alloc_breakdown_history(1).counts_by_size(1)); - EXPECT_EQ(13U, new_report.alloc_breakdown_history(1).counts_by_size(2)); - EXPECT_EQ(14U, new_report.alloc_breakdown_history(1).counts_by_size(3)); - EXPECT_EQ(15U, new_report.alloc_breakdown_history(1).count_for_call_stack()); - - ASSERT_EQ(5, new_report.alloc_breakdown_history(2).counts_by_size().size()); - EXPECT_EQ(21U, new_report.alloc_breakdown_history(2).counts_by_size(0)); - EXPECT_EQ(22U, new_report.alloc_breakdown_history(2).counts_by_size(1)); - EXPECT_EQ(23U, new_report.alloc_breakdown_history(2).counts_by_size(2)); - EXPECT_EQ(24U, new_report.alloc_breakdown_history(2).counts_by_size(3)); - EXPECT_EQ(25U, new_report.alloc_breakdown_history(2).counts_by_size(4)); - EXPECT_EQ(26U, new_report.alloc_breakdown_history(2).count_for_call_stack()); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/ranked_set.cc b/components/metrics/leak_detector/ranked_set.cc deleted file mode 100644 index f8945d7014..0000000 --- a/components/metrics/leak_detector/ranked_set.cc +++ /dev/null
@@ -1,67 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/ranked_set.h" - -#include <algorithm> - -namespace metrics { -namespace leak_detector { - -RankedSet::RankedSet(size_t max_size) : max_size_(max_size) {} - -RankedSet::~RankedSet() {} - -RankedSet::RankedSet(RankedSet&& other) : max_size_(other.max_size_) { - entries_ = std::move(other.entries_); -} - -RankedSet& RankedSet::operator=(RankedSet&& other) { - max_size_ = other.max_size_; - entries_ = std::move(other.entries_); - return *this; -} - -bool RankedSet::Entry::operator<(const RankedSet::Entry& other) const { - if (count == other.count) - return value < other.value; - - return count > other.count; -} - -void RankedSet::Add(const ValueType& value, int count) { - // If the container is full, do not add any entry with |count| if does not - // exceed the lowest count of the entries in the list. - if (size() == max_size_ && count < min_count()) - return; - - Entry new_entry; - new_entry.value = value; - new_entry.count = count; - entries_.insert(new_entry); - - // Limit the container size if it exceeds the maximum allowed size, by - // deleting the last element. This should only iterate once because the size - // can only have increased by 1, but use a while loop just to be safe. - while (entries_.size() > max_size_) - entries_.erase(--entries_.end()); -} - -RankedSet::const_iterator RankedSet::Find(const ValueType& value) const { - // The entries are stored sorted by |count|, but this function looks for an - // entry with a particular |value| field. Thus, std::set::find() will not - // work. Nor would std::find(), which matches by both |count| and |value| -- - // the count is unknown to the caller of this function. - // - // The most straightforward way is to iterate through the set until a matching - // value is found. - for (const_iterator iter = begin(); iter != end(); ++iter) { - if (iter->value == value) - return iter; - } - return end(); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/ranked_set.h b/components/metrics/leak_detector/ranked_set.h deleted file mode 100644 index 87c150e..0000000 --- a/components/metrics/leak_detector/ranked_set.h +++ /dev/null
@@ -1,109 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_RANKED_SET_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_RANKED_SET_H_ - -#include <stddef.h> - -#include <functional> // for std::less -#include <set> - -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_detector_value_type.h" -#include "components/metrics/leak_detector/stl_allocator.h" - -namespace metrics { -namespace leak_detector { - -// RankedSet lets you add entries consisting of a value-count pair, and -// automatically sorts them internally by count in descending order. This allows -// for the user of this container to insert value-count pairs without having to -// explicitly sort them by count. -class RankedSet { - public: - using ValueType = LeakDetectorValueType; - - // A single entry in the RankedSet. The RankedSet sorts entries by |count| - // in descending order. - struct Entry { - ValueType value; - int count; - - // This less-than comparator is used for sorting Entries within a sorted - // container. It internally reverses the comparison so that higher-count - // entries are sorted ahead of lower-count entries. - bool operator<(const Entry& other) const; - }; - - // This class uses CustomAllocator to avoid recursive malloc hook invocation - // when analyzing allocs and frees. - using EntrySet = - std::set<Entry, std::less<Entry>, STLAllocator<Entry, CustomAllocator>>; - using const_iterator = EntrySet::const_iterator; - - explicit RankedSet(size_t max_size); - ~RankedSet(); - - // For move semantics. - RankedSet(RankedSet&& other); - RankedSet& operator=(RankedSet&& other); - - // Accessors for begin() and end() const iterators. - const_iterator begin() const { return entries_.begin(); } - const_iterator end() const { return entries_.end(); } - - size_t size() const { return entries_.size(); } - size_t max_size() const { return max_size_; } - - // Add a new value-count pair to the container. Will overwrite any existing - // entry with the same value and count. Will not overwrite an existing entry - // with the same value but a different count, or different values with the - // same count. - // - // Time complexity is O(log n). - void Add(const ValueType& value, int count); - - // Helper functions to directly add a size or call stack to the RankedSet. - void AddSize(size_t size, int count) { Add(ValueType(size), count); } - void AddCallStack(const CallStack* call_stack, int count) { - Add(ValueType(call_stack), count); - } - - // Helper functions to directly search for an element with |value| equal to a - // particular size or call stack. The time complexity is O(n) rather than the - // O(log n) typical of std::set. These should be called sparingly in - // performance-critical code. - const_iterator FindSize(size_t size) const { return Find(ValueType(size)); } - const_iterator FindCallStack(const CallStack* call_stack) const { - return Find(ValueType(call_stack)); - } - - private: - // Returns an iterator to the element in |entries_| with value=|value|, or to - // entries_.end() if it was not found. - const_iterator Find(const ValueType& value) const; - - // Max and min counts. Returns 0 if the list is empty. - int max_count() const { - return entries_.empty() ? 0 : entries_.begin()->count; - } - int min_count() const { - return entries_.empty() ? 0 : entries_.rbegin()->count; - } - - // Max number of items that can be stored in the list. - size_t max_size_; - - // Actual storage container for entries. - EntrySet entries_; - - DISALLOW_COPY_AND_ASSIGN(RankedSet); -}; - -} // namespace leak_detector -} // namespace metrics - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_RANKED_SET_H_
diff --git a/components/metrics/leak_detector/ranked_set_unittest.cc b/components/metrics/leak_detector/ranked_set_unittest.cc deleted file mode 100644 index 0cb260d..0000000 --- a/components/metrics/leak_detector/ranked_set_unittest.cc +++ /dev/null
@@ -1,361 +0,0 @@ -// Copyright 2015 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 "components/metrics/leak_detector/ranked_set.h" - -#include <stddef.h> -#include <stdint.h> - -#include <algorithm> - -#include "base/macros.h" -#include "components/metrics/leak_detector/custom_allocator.h" -#include "components/metrics/leak_detector/leak_detector_value_type.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace metrics { -namespace leak_detector { - -namespace { - -// Makes it easier to instantiate LeakDetectorValueTypes. -LeakDetectorValueType Value(uint32_t value) { - return LeakDetectorValueType(value); -} - -} // namespace - -class RankedSetTest : public ::testing::Test { - public: - RankedSetTest() {} - - void SetUp() override { CustomAllocator::Initialize(); } - void TearDown() override { EXPECT_TRUE(CustomAllocator::Shutdown()); } - - private: - DISALLOW_COPY_AND_ASSIGN(RankedSetTest); -}; - -TEST_F(RankedSetTest, Iterators) { - RankedSet set(10); - EXPECT_TRUE(set.begin() == set.end()); - - set.Add(Value(0x1234), 100); - EXPECT_FALSE(set.begin() == set.end()); -} - -TEST_F(RankedSetTest, SingleInsertion) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 100); - EXPECT_EQ(1U, set.size()); - - auto iter = set.begin(); - EXPECT_EQ(0x1234U, iter->value.size()); - EXPECT_EQ(100, iter->count); -} - -TEST_F(RankedSetTest, InOrderInsertion) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 100); - EXPECT_EQ(1U, set.size()); - set.Add(Value(0x2345), 95); - EXPECT_EQ(2U, set.size()); - set.Add(Value(0x3456), 90); - EXPECT_EQ(3U, set.size()); - set.Add(Value(0x4567), 85); - EXPECT_EQ(4U, set.size()); - set.Add(Value(0x5678), 80); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues[] = { - {Value(0x1234), 100}, {Value(0x2345), 95}, {Value(0x3456), 90}, - {Value(0x4567), 85}, {Value(0x5678), 80}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues)); - EXPECT_EQ(kExpectedValues[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, ReverseOrderInsertion) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 0); - EXPECT_EQ(1U, set.size()); - set.Add(Value(0x2345), 5); - EXPECT_EQ(2U, set.size()); - set.Add(Value(0x3456), 10); - EXPECT_EQ(3U, set.size()); - set.Add(Value(0x4567), 15); - EXPECT_EQ(4U, set.size()); - set.Add(Value(0x5678), 20); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues[] = { - {Value(0x5678), 20}, {Value(0x4567), 15}, {Value(0x3456), 10}, - {Value(0x2345), 5}, {Value(0x1234), 0}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues)); - EXPECT_EQ(kExpectedValues[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, UnorderedInsertion) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 15); - set.Add(Value(0x2345), 20); - set.Add(Value(0x3456), 10); - set.Add(Value(0x4567), 30); - set.Add(Value(0x5678), 25); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues1[] = { - {Value(0x4567), 30}, {Value(0x5678), 25}, {Value(0x2345), 20}, - {Value(0x1234), 15}, {Value(0x3456), 10}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues1)); - EXPECT_EQ(kExpectedValues1[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues1[index].count, entry.count); - ++index; - } - - // Add more items. - set.Add(Value(0x6789), 35); - set.Add(Value(0x789a), 40); - set.Add(Value(0x89ab), 50); - set.Add(Value(0x9abc), 5); - set.Add(Value(0xabcd), 0); - EXPECT_EQ(10U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues2[] = { - {Value(0x89ab), 50}, {Value(0x789a), 40}, {Value(0x6789), 35}, - {Value(0x4567), 30}, {Value(0x5678), 25}, {Value(0x2345), 20}, - {Value(0x1234), 15}, {Value(0x3456), 10}, {Value(0x9abc), 5}, - {Value(0xabcd), 0}, - }; - - index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues2)); - EXPECT_EQ(kExpectedValues2[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues2[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, UnorderedInsertionWithSameCounts) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 20); - set.Add(Value(0x2345), 20); - set.Add(Value(0x3456), 30); - set.Add(Value(0x4567), 30); - set.Add(Value(0x5678), 20); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. Entries - // with the same count should be ordered from lowest value to highest value. - const RankedSet::Entry kExpectedValues1[] = { - {Value(0x3456), 30}, {Value(0x4567), 30}, {Value(0x1234), 20}, - {Value(0x2345), 20}, {Value(0x5678), 20}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues1)); - EXPECT_EQ(kExpectedValues1[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues1[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, RepeatedEntries) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 20); - set.Add(Value(0x3456), 30); - set.Add(Value(0x1234), 20); - set.Add(Value(0x3456), 30); - set.Add(Value(0x4567), 30); - set.Add(Value(0x4567), 30); - EXPECT_EQ(3U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues1[] = { - {Value(0x3456), 30}, {Value(0x4567), 30}, {Value(0x1234), 20}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues1)); - EXPECT_EQ(kExpectedValues1[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues1[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, InsertionWithOverflow) { - RankedSet set(5); - EXPECT_EQ(0U, set.size()); - - set.Add(Value(0x1234), 15); - set.Add(Value(0x2345), 20); - set.Add(Value(0x3456), 10); - set.Add(Value(0x4567), 30); - set.Add(Value(0x5678), 25); - EXPECT_EQ(5U, set.size()); - - // These values will not make it into the set, which is now full. - set.Add(Value(0x6789), 0); - EXPECT_EQ(5U, set.size()); - set.Add(Value(0x789a), 5); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues1[] = { - {Value(0x4567), 30}, {Value(0x5678), 25}, {Value(0x2345), 20}, - {Value(0x1234), 15}, {Value(0x3456), 10}, - }; - - size_t index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues1)); - EXPECT_EQ(kExpectedValues1[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues1[index].count, entry.count); - ++index; - } - - // Insert some more values that go in the middle of the set. - set.Add(Value(0x89ab), 27); - EXPECT_EQ(5U, set.size()); - set.Add(Value(0x9abc), 22); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues2[] = { - {Value(0x4567), 30}, {Value(0x89ab), 27}, {Value(0x5678), 25}, - {Value(0x9abc), 22}, {Value(0x2345), 20}, - }; - - index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues2)); - EXPECT_EQ(kExpectedValues2[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues2[index].count, entry.count); - ++index; - } - - // Insert some more values at the front of the set. - set.Add(Value(0xabcd), 40); - EXPECT_EQ(5U, set.size()); - set.Add(Value(0xbcde), 35); - EXPECT_EQ(5U, set.size()); - - // Iterate through the contents to make sure they match what went in. - const RankedSet::Entry kExpectedValues3[] = { - {Value(0xabcd), 40}, {Value(0xbcde), 35}, {Value(0x4567), 30}, - {Value(0x89ab), 27}, {Value(0x5678), 25}, - }; - - index = 0; - for (const auto& entry : set) { - EXPECT_LT(index, arraysize(kExpectedValues3)); - EXPECT_EQ(kExpectedValues3[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues3[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, MoveOperation) { - const RankedSet::Entry kExpectedValues[] = { - {Value(0x89ab), 50}, {Value(0x789a), 40}, {Value(0x6789), 35}, - {Value(0x4567), 30}, {Value(0x5678), 25}, {Value(0x2345), 20}, - {Value(0x1234), 15}, {Value(0x3456), 10}, {Value(0x9abc), 5}, - {Value(0xabcd), 0}, - }; - - RankedSet source(10); - for (const RankedSet::Entry& entry : kExpectedValues) { - source.Add(entry.value, entry.count); - } - EXPECT_EQ(10U, source.size()); - - RankedSet dest(25); // This should be changed by the move. - dest = std::move(source); - EXPECT_EQ(10U, dest.size()); - EXPECT_EQ(10U, dest.max_size()); - - size_t index = 0; - for (const auto& entry : dest) { - EXPECT_LT(index, arraysize(kExpectedValues)); - EXPECT_EQ(kExpectedValues[index].value.size(), entry.value.size()); - EXPECT_EQ(kExpectedValues[index].count, entry.count); - ++index; - } -} - -TEST_F(RankedSetTest, Find) { - RankedSet set(10); - EXPECT_EQ(0U, set.size()); - - set.AddSize(0x1234, 15); - set.AddSize(0x2345, 20); - set.AddSize(0x3456, 10); - set.AddSize(0x4567, 30); - set.AddSize(0x5678, 25); - EXPECT_EQ(5U, set.size()); - - auto iter = set.FindSize(0x1234); - EXPECT_TRUE(iter != set.end()); - EXPECT_EQ(0x1234U, iter->value.size()); - EXPECT_EQ(15, iter->count); - - iter = set.FindSize(0x2345); - EXPECT_TRUE(iter != set.end()); - EXPECT_EQ(0x2345U, iter->value.size()); - EXPECT_EQ(20, iter->count); - - iter = set.FindSize(0x3456); - EXPECT_TRUE(iter != set.end()); - EXPECT_EQ(0x3456U, iter->value.size()); - EXPECT_EQ(10, iter->count); - - iter = set.FindSize(0x4567); - EXPECT_TRUE(iter != set.end()); - EXPECT_EQ(0x4567U, iter->value.size()); - EXPECT_EQ(30, iter->count); - - iter = set.FindSize(0x5678); - EXPECT_TRUE(iter != set.end()); - EXPECT_EQ(0x5678U, iter->value.size()); - EXPECT_EQ(25, iter->count); -} - -} // namespace leak_detector -} // namespace metrics
diff --git a/components/metrics/leak_detector/stl_allocator.h b/components/metrics/leak_detector/stl_allocator.h deleted file mode 100644 index bfef0a38..0000000 --- a/components/metrics/leak_detector/stl_allocator.h +++ /dev/null
@@ -1,61 +0,0 @@ -// Copyright 2015 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_METRICS_LEAK_DETECTOR_STL_ALLOCATOR_H_ -#define COMPONENTS_METRICS_LEAK_DETECTOR_STL_ALLOCATOR_H_ - -#include <stddef.h> - -#include <limits> -#include <memory> - -#include "base/logging.h" - -// Generic allocator class for STL objects. -// deallocate() to use the template class Alloc's allocation. -// that uses a given type-less allocator Alloc, which must provide: -// static void* Alloc::Allocate(size_t size); -// static void Alloc::Free(void* ptr, size_t size); -// -// Inherits from the default allocator, std::allocator. Overrides allocate() and -// deallocate() and some other functions. -// -// STLAllocator<T, MyAlloc> provides the same thread-safety guarantees as -// MyAlloc. -// -// Usage example: -// set<T, less<T>, STLAllocator<T, MyAlloc> > my_set; - -template <typename T, class Alloc> -class STLAllocator : public std::allocator<T> { - public: - typedef size_t size_type; - typedef T* pointer; - - template <class T1> - struct rebind { - typedef STLAllocator<T1, Alloc> other; - }; - - STLAllocator() {} - explicit STLAllocator(const STLAllocator&) {} - template <class T1> - STLAllocator(const STLAllocator<T1, Alloc>&) {} - ~STLAllocator() {} - - pointer allocate(size_type n, const void* = 0) { - // Make sure the computation of the total allocation size does not cause an - // integer overflow. - RAW_CHECK(n < max_size()); - return static_cast<T*>(Alloc::Allocate(n * sizeof(T))); - } - - void deallocate(pointer p, size_type n) { Alloc::Free(p, n * sizeof(T)); } - - size_type max_size() const { - return std::numeric_limits<size_t>::max() / sizeof(T); - } -}; - -#endif // COMPONENTS_METRICS_LEAK_DETECTOR_STL_ALLOCATOR_H_
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 4817162..4201c7b 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -6111,7 +6111,7 @@ 'schema': { 'type': 'integer', 'minimum': 0, - 'maximum': 8, + 'maximum': 4, }, 'supported_on': ['chrome_os:67-'], 'device_only': True, @@ -6124,7 +6124,7 @@ 'tags': ['system-security'], 'desc': '''Specifies the minimum number of <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> milestones rollback should be allowed starting from the stable version at any time. - Default is 0 for consumer, 8 (approx. 1 year) for enterprise enrolled devices. + Default is 0 for consumer, 4 (approx. half a year) for enterprise enrolled devices. Setting this policy prevents rollback protection to apply for at least this number of milestones.
diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp index 9fb732c..38f3d25 100644 --- a/components/policy_strings.grdp +++ b/components/policy_strings.grdp
@@ -167,6 +167,9 @@ <message name="IDS_POLICY_INVALID_UPDATE_URL_ERROR" desc="The text displayed in the status column when the update URL for given extension is invalid."> Invalid update URL for extension with ID "<ph name="EXTENSION_ID">$1<ex>abcdefghijklmnopabcdefghijklmnop</ex></ph>". </message> + <message name="IDS_POLICY_OFF_CWS_URL_ERROR" desc="The text displayed in the status column when the update URL points to a location other than the Chrome Webstore and the machine is not enterprise managed."> + This computer is not detected as enterprise managed so policy can only automatically install extensions hosted on the Chrome Webstore. The Chrome Webstore update URL is "<ph name="CWS_UPDATE_URL">$1<ex>https://clients2.google.com/service/update2/crx</ex></ph>". + </message> <message name="IDS_POLICY_PROXY_MODE_DISABLED_ERROR" desc="The text displayed in the status column when use of a proxy is disabled but a proxy configuration is given."> Use of a proxy is disabled but an explicit proxy configuration is specified. </message>
diff --git a/components/signin/core/browser/account_reconcilor.h b/components/signin/core/browser/account_reconcilor.h index 4870e8d4..db4adb51 100644 --- a/components/signin/core/browser/account_reconcilor.h +++ b/components/signin/core/browser/account_reconcilor.h
@@ -123,6 +123,8 @@ FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, UnverifiedAccountMerge); FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, DiceMigrationAfterNoop); FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, + DiceNoMigrationWhenTokensNotReady); + FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, DiceNoMigrationAfterReconcile); FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, DiceReconcileReuseGaiaFirstAccount);
diff --git a/components/signin/core/browser/account_reconcilor_unittest.cc b/components/signin/core/browser/account_reconcilor_unittest.cc index 25dc923..5c43db8 100644 --- a/components/signin/core/browser/account_reconcilor_unittest.cc +++ b/components/signin/core/browser/account_reconcilor_unittest.cc
@@ -17,6 +17,7 @@ #include "base/time/time.h" #include "base/timer/mock_timer.h" #include "build/build_config.h" +#include "components/pref_registry/pref_registry_syncable.h" #include "components/signin/core/browser/account_reconcilor.h" #include "components/signin/core/browser/account_tracker_service.h" #include "components/signin/core/browser/fake_gaia_cookie_manager_service.h" @@ -28,6 +29,7 @@ #include "components/signin/core/browser/signin_buildflags.h" #include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_metrics.h" +#include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/test_signin_client.h" #include "components/sync_preferences/pref_service_syncable.h" #include "components/sync_preferences/testing_pref_service_syncable.h" @@ -307,6 +309,8 @@ AccountTrackerService::RegisterPrefs(pref_service_.registry()); SigninManagerBase::RegisterProfilePrefs(pref_service_.registry()); SigninManagerBase::RegisterPrefs(pref_service_.registry()); + pref_service_.registry()->RegisterBooleanPref( + prefs::kTokenServiceDiceCompatible, false); get_check_connection_info_url_ = GaiaUrls::GetInstance()->GetCheckConnectionInfoURLWithSource( GaiaConstants::kChromeSource); @@ -1014,6 +1018,7 @@ TEST_F(AccountReconcilorTest, DiceMigrationAfterNoop) { // Enable Dice migration. SetAccountConsistency(signin::AccountConsistencyMethod::kDiceMigration); + pref_service()->SetBoolean(prefs::kTokenServiceDiceCompatible, true); // Chrome account is consistent with the cookie. const std::string account_id = @@ -1038,10 +1043,39 @@ EXPECT_TRUE(test_signin_client()->is_ready_for_dice_migration()); } +// Tests that the Dice no migration happens if the token service is not ready. +TEST_F(AccountReconcilorTest, DiceNoMigrationWhenTokensNotReady) { + // Enable Dice migration. + SetAccountConsistency(signin::AccountConsistencyMethod::kDiceMigration); + + // Chrome account is consistent with the cookie. + const std::string account_id = + PickAccountIdForAccount("12345", "user@gmail.com"); + token_service()->UpdateCredentials(account_id, "refresh_token"); + cookie_manager_service()->SetListAccountsResponseOneAccount("user@gmail.com", + "12345"); + AccountReconcilor* reconcilor = GetMockReconcilor(); + // Dice is not enabled by default. + EXPECT_FALSE(reconcilor->delegate_->IsAccountConsistencyEnforced()); + + // No-op reconcile. + EXPECT_CALL(*GetMockReconcilor(), PerformMergeAction(testing::_)).Times(0); + EXPECT_CALL(*GetMockReconcilor(), PerformLogoutAllAccountsAction()).Times(0); + reconcilor->StartReconcile(); + ASSERT_TRUE(reconcilor->is_reconcile_started_); + base::RunLoop().RunUntilIdle(); + ASSERT_FALSE(reconcilor->is_reconcile_started_); + ASSERT_EQ(signin_metrics::ACCOUNT_RECONCILOR_OK, reconcilor->GetState()); + + // Migration did not happen. + EXPECT_FALSE(test_signin_client()->is_ready_for_dice_migration()); +} + // Tests that the Dice migration does not happen after a busy reconcile. TEST_F(AccountReconcilorTest, DiceNoMigrationAfterReconcile) { // Enable Dice migration. SetAccountConsistency(signin::AccountConsistencyMethod::kDiceMigration); + pref_service()->SetBoolean(prefs::kTokenServiceDiceCompatible, true); // Add a token in Chrome. const std::string account_id = @@ -1071,6 +1105,7 @@ TEST_F(AccountReconcilorTest, MigrationClearSecondaryTokens) { // Enable Dice migration. SetAccountConsistency(signin::AccountConsistencyMethod::kDiceMigration); + pref_service()->SetBoolean(prefs::kTokenServiceDiceCompatible, true); // Add a tokens in Chrome, signin to Sync, but no Gaia cookies. const std::string account_id_1 = @@ -1105,6 +1140,7 @@ TEST_F(AccountReconcilorTest, MigrationClearAllTokens) { // Enable Dice migration. SetAccountConsistency(signin::AccountConsistencyMethod::kDiceMigration); + pref_service()->SetBoolean(prefs::kTokenServiceDiceCompatible, true); // Add a tokens in Chrome but no Gaia cookies. const std::string account_id_1 =
diff --git a/components/signin/core/browser/dice_account_reconcilor_delegate.cc b/components/signin/core/browser/dice_account_reconcilor_delegate.cc index 764ea333..eeadbe9 100644 --- a/components/signin/core/browser/dice_account_reconcilor_delegate.cc +++ b/components/signin/core/browser/dice_account_reconcilor_delegate.cc
@@ -9,7 +9,9 @@ #include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "base/stl_util.h" +#include "components/prefs/pref_service.h" #include "components/signin/core/browser/signin_client.h" +#include "components/signin/core/browser/signin_pref_names.h" namespace signin { @@ -115,11 +117,14 @@ bool reconcile_is_noop) { last_known_first_account_ = first_account; - // Migration happens on startup if the last reconcile was a no-op. + // Migration happens on startup if the last reconcile was a no-op and the + // refresh tokens are Dice-compatible. if (DiceMethodGreaterOrEqual( account_consistency_, AccountConsistencyMethod::kDicePrepareMigration)) { - signin_client_->SetReadyForDiceMigration(reconcile_is_noop); + signin_client_->SetReadyForDiceMigration( + reconcile_is_noop && signin_client_->GetPrefs()->GetBoolean( + prefs::kTokenServiceDiceCompatible)); } }
diff --git a/components/signin/core/browser/dice_account_reconcilor_delegate_unittest.cc b/components/signin/core/browser/dice_account_reconcilor_delegate_unittest.cc index b6dbbc5..784dcddb 100644 --- a/components/signin/core/browser/dice_account_reconcilor_delegate_unittest.cc +++ b/components/signin/core/browser/dice_account_reconcilor_delegate_unittest.cc
@@ -6,12 +6,27 @@ #include <vector> +#include "components/pref_registry/pref_registry_syncable.h" #include "components/signin/core/browser/profile_management_switches.h" +#include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/test_signin_client.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "google_apis/gaia/gaia_auth_util.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +namespace { + +class DiceTestSigninClient : public testing::StrictMock<TestSigninClient> { + public: + DiceTestSigninClient(PrefService* prefs) + : testing::StrictMock<TestSigninClient>(prefs) {} + + MOCK_METHOD1(SetReadyForDiceMigration, void(bool is_ready)); +}; + +} // namespace + namespace signin { TEST(DiceAccountReconcilorDelegateTest, RevokeTokens) { @@ -38,4 +53,51 @@ } } +TEST(DiceAccountReconcilorDelegateTest, OnReconcileFinished) { + sync_preferences::TestingPrefServiceSyncable pref_service; + pref_service.registry()->RegisterBooleanPref( + prefs::kTokenServiceDiceCompatible, false); + + DiceTestSigninClient client(&pref_service); + + { + // Dice migration not enabled. + testing::InSequence mock_sequence; + EXPECT_CALL(client, SetReadyForDiceMigration(testing::_)).Times(0); + DiceAccountReconcilorDelegate delegate( + &client, AccountConsistencyMethod::kDiceFixAuthErrors); + delegate.OnReconcileFinished("account", true /* is_reconcile_noop */); + } + + { + // Dice migration enabled, but token service is not ready. + testing::InSequence mock_sequence; + EXPECT_CALL(client, SetReadyForDiceMigration(false)).Times(1); + DiceAccountReconcilorDelegate delegate( + &client, AccountConsistencyMethod::kDicePrepareMigration); + delegate.OnReconcileFinished("account", true /* is_reconcile_noop */); + } + + pref_service.SetBoolean(prefs::kTokenServiceDiceCompatible, true); + + { + // Dice migration enabled, token service is ready, but reconcile is not + // no-op. + testing::InSequence mock_sequence; + EXPECT_CALL(client, SetReadyForDiceMigration(false)).Times(1); + DiceAccountReconcilorDelegate delegate( + &client, AccountConsistencyMethod::kDicePrepareMigration); + delegate.OnReconcileFinished("account", false /* is_reconcile_noop */); + } + + { + // Ready for migration. + testing::InSequence mock_sequence; + EXPECT_CALL(client, SetReadyForDiceMigration(true)).Times(1); + DiceAccountReconcilorDelegate delegate( + &client, AccountConsistencyMethod::kDicePrepareMigration); + delegate.OnReconcileFinished("account", true /* is_reconcile_noop */); + } +} + } // namespace signin
diff --git a/components/signin/core/browser/signin_pref_names.cc b/components/signin/core/browser/signin_pref_names.cc index 7ec48b97..efc5bf6 100644 --- a/components/signin/core/browser/signin_pref_names.cc +++ b/components/signin/core/browser/signin_pref_names.cc
@@ -95,6 +95,9 @@ // Boolean which stores if the user is allowed to signin to chrome. const char kSigninAllowed[] = "signin.allowed"; +// True if the token service has been prepared for Dice migration. +const char kTokenServiceDiceCompatible[] = "token_service.dice_compatible"; + // Boolean which stores if the OAuth2TokenService should ignore secondary // accounts. const char kTokenServiceExcludeAllSecondaryAccounts[] =
diff --git a/components/signin/core/browser/signin_pref_names.h b/components/signin/core/browser/signin_pref_names.h index fec221e..7e6afad 100644 --- a/components/signin/core/browser/signin_pref_names.h +++ b/components/signin/core/browser/signin_pref_names.h
@@ -27,6 +27,7 @@ extern const char kReverseAutologinRejectedEmailList[]; extern const char kSignedInTime[]; extern const char kSigninAllowed[]; +extern const char kTokenServiceDiceCompatible[]; extern const char kTokenServiceExcludeAllSecondaryAccounts[]; extern const char kTokenServiceExcludedSecondaryAccounts[];
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn index a6a75a2..503f307 100644 --- a/components/sync/BUILD.gn +++ b/components/sync/BUILD.gn
@@ -424,6 +424,8 @@ "model/time.h", "model_impl/accumulating_metadata_change_list.cc", "model_impl/accumulating_metadata_change_list.h", + "model_impl/client_tag_based_model_type_processor.cc", + "model_impl/client_tag_based_model_type_processor.h", "model_impl/in_memory_metadata_change_list.cc", "model_impl/in_memory_metadata_change_list.h", "model_impl/model_type_store_backend.cc", @@ -434,8 +436,6 @@ "model_impl/passthrough_metadata_change_list.h", "model_impl/processor_entity_tracker.cc", "model_impl/processor_entity_tracker.h", - "model_impl/shared_model_type_processor.cc", - "model_impl/shared_model_type_processor.h", "model_impl/sync_metadata_store_change_list.cc", "model_impl/sync_metadata_store_change_list.h", "protocol/proto_enum_conversions.cc", @@ -874,11 +874,11 @@ "model/sync_error_unittest.cc", "model/sync_merge_result_unittest.cc", "model_impl/accumulating_metadata_change_list_unittest.cc", + "model_impl/client_tag_based_model_type_processor_unittest.cc", "model_impl/model_type_store_backend_unittest.cc", "model_impl/model_type_store_impl_unittest.cc", "model_impl/passthrough_metadata_change_list_unittest.cc", "model_impl/processor_entity_tracker_unittest.cc", - "model_impl/shared_model_type_processor_unittest.cc", "protocol/proto_enum_conversions_unittest.cc", "protocol/proto_value_conversions_unittest.cc", "syncable/change_record_unittest.cc",
diff --git a/components/sync/model/model_type_change_processor.cc b/components/sync/model/model_type_change_processor.cc index 9678eee8..9af3d15b 100644 --- a/components/sync/model/model_type_change_processor.cc +++ b/components/sync/model/model_type_change_processor.cc
@@ -4,7 +4,7 @@ #include "components/sync/model/model_type_change_processor.h" -#include "components/sync/model_impl/shared_model_type_processor.h" +#include "components/sync/model_impl/client_tag_based_model_type_processor.h" namespace syncer { @@ -13,7 +13,7 @@ const base::RepeatingClosure& dump_stack, ModelType type, ModelTypeSyncBridge* bridge) { - return std::make_unique<SharedModelTypeProcessor>( + return std::make_unique<ClientTagBasedModelTypeProcessor>( type, bridge, dump_stack, CommitOnlyTypes().Has(type)); }
diff --git a/components/sync/model/model_type_debug_info.cc b/components/sync/model/model_type_debug_info.cc index 9a54ecb1..a66abcf 100644 --- a/components/sync/model/model_type_debug_info.cc +++ b/components/sync/model/model_type_debug_info.cc
@@ -19,13 +19,15 @@ namespace { -SharedModelTypeProcessor* GetProcessorFromBridge(ModelTypeSyncBridge* bridge) { +ClientTagBasedModelTypeProcessor* GetProcessorFromBridge( + ModelTypeSyncBridge* bridge) { ModelTypeChangeProcessor* processor = bridge->change_processor(); if (processor == nullptr) { - LOG(WARNING) << "SharedModelTypeProcessor destroyed before debug info was " - "retrieved."; + LOG(WARNING) + << "ClientTagBasedModelTypeProcessor destroyed before debug info was " + "retrieved."; } - return static_cast<SharedModelTypeProcessor*>(processor); + return static_cast<ClientTagBasedModelTypeProcessor*>(processor); } } // namespace @@ -35,7 +37,7 @@ const base::Callback<void(const ModelType, std::unique_ptr<ListValue>)>& callback, ModelTypeSyncBridge* bridge) { - SharedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); + ClientTagBasedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); if (processor) { bridge->GetAllData(base::Bind(&ModelTypeDebugInfo::MergeDataWithMetadata, base::Unretained(processor), callback)); @@ -46,7 +48,7 @@ void ModelTypeDebugInfo::GetStatusCounters( const base::Callback<void(ModelType, const StatusCounters&)>& callback, ModelTypeSyncBridge* bridge) { - SharedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); + ClientTagBasedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); if (processor) { StatusCounters counters; counters.num_entries_and_tombstones = processor->entities_.size(); @@ -62,7 +64,7 @@ // static void ModelTypeDebugInfo::RecordMemoryUsageHistogram( ModelTypeSyncBridge* bridge) { - SharedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); + ClientTagBasedModelTypeProcessor* processor = GetProcessorFromBridge(bridge); size_t memory_usage = processor->EstimateMemoryUsage(); SyncRecordMemoryKbHistogram(kModelTypeMemoryHistogramPrefix, processor->type_, memory_usage); @@ -72,7 +74,7 @@ // static void ModelTypeDebugInfo::MergeDataWithMetadata( - SharedModelTypeProcessor* processor, + ClientTagBasedModelTypeProcessor* processor, const base::Callback<void(const ModelType, std::unique_ptr<ListValue>)>& callback, std::unique_ptr<DataBatch> batch) {
diff --git a/components/sync/model/model_type_debug_info.h b/components/sync/model/model_type_debug_info.h index e8b94a3..8600be2 100644 --- a/components/sync/model/model_type_debug_info.h +++ b/components/sync/model/model_type_debug_info.h
@@ -11,14 +11,14 @@ #include "base/values.h" #include "components/sync/base/model_type.h" #include "components/sync/model/model_type_sync_bridge.h" -#include "components/sync/model_impl/shared_model_type_processor.h" +#include "components/sync/model_impl/client_tag_based_model_type_processor.h" namespace syncer { // This class holds static functions used for extracting debug information for a // model type. They should be run on the model thread. These functions are // static so they can be posted to from the UI thread, and they live inside a -// class because it is a friend class to SharedModelTypeProcessor. +// class because it is a friend class to ClientTagBasedModelTypeProcessor. class ModelTypeDebugInfo { public: // Returns a ListValue representing all nodes for the type to |callback|. @@ -46,7 +46,7 @@ // function will merge real data from |batch| with metadata extracted from // the |processor|, then pass it all to |callback|. static void MergeDataWithMetadata( - SharedModelTypeProcessor* processor, + ClientTagBasedModelTypeProcessor* processor, const base::Callback<void(const ModelType, std::unique_ptr<base::ListValue>)>& callback, std::unique_ptr<DataBatch> batch);
diff --git a/components/sync/model/model_type_sync_bridge.cc b/components/sync/model/model_type_sync_bridge.cc index 8e72c6e..bbb3bd2 100644 --- a/components/sync/model/model_type_sync_bridge.cc +++ b/components/sync/model/model_type_sync_bridge.cc
@@ -42,13 +42,12 @@ void ModelTypeSyncBridge::DisableSync() { DCHECK(change_processor_); + const bool model_ready_to_sync = change_processor_->IsTrackingMetadata(); change_processor_->DisableSync(); change_processor_ = change_processor_factory_.Run(type_, this); - // DisableSync() should delete all metadata, so it'll be safe to tell the new - // processor that there is no metadata. DisableSync() should never be called - // while the models are loading, aka before the service has finished loading - // the initial metadata. - change_processor_->ModelReadyToSync(std::make_unique<MetadataBatch>()); + if (model_ready_to_sync) { + change_processor_->ModelReadyToSync(std::make_unique<MetadataBatch>()); + } } ModelTypeChangeProcessor* ModelTypeSyncBridge::change_processor() const {
diff --git a/components/sync/model/model_type_sync_bridge_unittest.cc b/components/sync/model/model_type_sync_bridge_unittest.cc index f5a73e4c..44ba0ff 100644 --- a/components/sync/model/model_type_sync_bridge_unittest.cc +++ b/components/sync/model/model_type_sync_bridge_unittest.cc
@@ -11,9 +11,11 @@ #include "components/sync/model/metadata_batch.h" #include "components/sync/model/stub_model_type_sync_bridge.h" #include "components/sync/protocol/model_type_state.pb.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace syncer { +namespace { // A mock MTCP that lets verify DisableSync and ModelReadyToSync were called in // the ways that we expect. @@ -25,7 +27,10 @@ void DisableSync() override { disabled_callback_.Run(); } + bool IsTrackingMetadata() override { return metadata_batch_ != nullptr; } + void ModelReadyToSync(std::unique_ptr<MetadataBatch> batch) override { + EXPECT_NE(nullptr, batch); metadata_batch_ = std::move(batch); } @@ -110,15 +115,48 @@ // DisableSync should call DisableSync on the processor and then delete it. TEST_F(ModelTypeSyncBridgeTest, DisableSync) { - EXPECT_FALSE(bridge()->processor_disable_sync_called()); + ASSERT_FALSE(bridge()->processor_disable_sync_called()); bridge()->DisableSync(); // Disabling also wipes out metadata, and the bridge should have told the new // processor about this. EXPECT_TRUE(bridge()->processor_disable_sync_called()); + EXPECT_EQ(nullptr, bridge()->change_processor()->metadata_batch()); +} +// DisableSync should propagate the model readiness (IsTrackingMetadata()). +TEST_F(ModelTypeSyncBridgeTest, PropagateModelReadyToSyncInDisableSync) { + ASSERT_EQ(nullptr, bridge()->change_processor()->metadata_batch()); + ASSERT_FALSE(bridge()->change_processor()->IsTrackingMetadata()); + + // Model is not ready to sync, so it should remain so after DisableSync(). + bridge()->DisableSync(); + EXPECT_EQ(nullptr, bridge()->change_processor()->metadata_batch()); + EXPECT_FALSE(bridge()->change_processor()->IsTrackingMetadata()); + + // Mimic the model being ready to sync. + sync_pb::ModelTypeState initial_state; + initial_state.set_initial_sync_done(true); + auto initial_batch = std::make_unique<MetadataBatch>(); + initial_batch->SetModelTypeState(initial_state); + bridge()->change_processor()->ModelReadyToSync(std::move(initial_batch)); + + ASSERT_TRUE(bridge()->change_processor()->IsTrackingMetadata()); + ASSERT_NE(nullptr, bridge()->change_processor()->metadata_batch()); + ASSERT_TRUE(bridge() + ->change_processor() + ->metadata_batch() + ->GetModelTypeState() + .initial_sync_done()); + + // Model is ready to sync, so it should remain so after DisableSync(). + // However, the metadata should have been cleared. + bridge()->DisableSync(); + EXPECT_TRUE(bridge()->change_processor()->IsTrackingMetadata()); MetadataBatch* batch = bridge()->change_processor()->metadata_batch(); - EXPECT_NE(nullptr, batch); + ASSERT_NE(nullptr, batch); + + EXPECT_FALSE(batch->GetModelTypeState().initial_sync_done()); EXPECT_EQ(sync_pb::ModelTypeState().SerializeAsString(), batch->GetModelTypeState().SerializeAsString()); EXPECT_EQ(0U, batch->TakeAllMetadata().size()); @@ -150,4 +188,5 @@ bridge()->ResolveConflict(local_data, remote_data).type()); } +} // namespace } // namespace syncer
diff --git a/components/sync/model_impl/shared_model_type_processor.cc b/components/sync/model_impl/client_tag_based_model_type_processor.cc similarity index 90% rename from components/sync/model_impl/shared_model_type_processor.cc rename to components/sync/model_impl/client_tag_based_model_type_processor.cc index 1b265ab4..30cdd08 100644 --- a/components/sync/model_impl/shared_model_type_processor.cc +++ b/components/sync/model_impl/client_tag_based_model_type_processor.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 "components/sync/model_impl/shared_model_type_processor.h" +#include "components/sync/model_impl/client_tag_based_model_type_processor.h" #include <utility> #include <vector> @@ -44,7 +44,7 @@ } } // namespace -SharedModelTypeProcessor::SharedModelTypeProcessor( +ClientTagBasedModelTypeProcessor::ClientTagBasedModelTypeProcessor( ModelType type, ModelTypeSyncBridge* bridge, const base::RepeatingClosure& dump_stack, @@ -59,11 +59,11 @@ DCHECK(bridge); } -SharedModelTypeProcessor::~SharedModelTypeProcessor() { +ClientTagBasedModelTypeProcessor::~ClientTagBasedModelTypeProcessor() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } -void SharedModelTypeProcessor::OnSyncStarting( +void ClientTagBasedModelTypeProcessor::OnSyncStarting( const ModelErrorHandler& error_handler, const StartCallback& start_callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -77,7 +77,7 @@ ConnectIfReady(); } -void SharedModelTypeProcessor::ModelReadyToSync( +void ClientTagBasedModelTypeProcessor::ModelReadyToSync( std::unique_ptr<MetadataBatch> batch) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(waiting_for_metadata_); @@ -108,8 +108,9 @@ waiting_for_pending_data_ = true; bridge_->GetData( std::move(entities_to_commit), - base::Bind(&SharedModelTypeProcessor::OnInitialPendingDataLoaded, - weak_ptr_factory_.GetWeakPtr())); + base::BindOnce( + &ClientTagBasedModelTypeProcessor::OnInitialPendingDataLoaded, + weak_ptr_factory_.GetWeakPtr())); } } else { DCHECK_EQ(0u, batch->TakeAllMetadata().size()); @@ -121,11 +122,11 @@ ConnectIfReady(); } -bool SharedModelTypeProcessor::IsModelReadyOrError() const { +bool ClientTagBasedModelTypeProcessor::IsModelReadyOrError() const { return model_error_ || (!waiting_for_metadata_ && !waiting_for_pending_data_); } -void SharedModelTypeProcessor::ConnectIfReady() { +void ClientTagBasedModelTypeProcessor::ConnectIfReady() { if (!IsModelReadyOrError() || !start_callback_) return; @@ -144,18 +145,18 @@ start_callback_.Reset(); } -bool SharedModelTypeProcessor::IsAllowingChanges() const { +bool ClientTagBasedModelTypeProcessor::IsAllowingChanges() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Changes can be handled correctly even before pending data is loaded. return !waiting_for_metadata_; } -bool SharedModelTypeProcessor::IsConnected() const { +bool ClientTagBasedModelTypeProcessor::IsConnected() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return !!worker_; } -void SharedModelTypeProcessor::DisableSync() { +void ClientTagBasedModelTypeProcessor::DisableSync() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); std::unique_ptr<MetadataChangeList> change_list = bridge_->CreateMetadataChangeList(); @@ -167,11 +168,11 @@ bridge_->ApplySyncChanges(std::move(change_list), EntityChangeList()); } -bool SharedModelTypeProcessor::IsTrackingMetadata() { +bool ClientTagBasedModelTypeProcessor::IsTrackingMetadata() { return model_type_state_.initial_sync_done(); } -void SharedModelTypeProcessor::ReportError(const ModelError& error) { +void ClientTagBasedModelTypeProcessor::ReportError(const ModelError& error) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Ignore all errors after the first. @@ -195,7 +196,7 @@ } } -void SharedModelTypeProcessor::ConnectSync( +void ClientTagBasedModelTypeProcessor::ConnectSync( std::unique_ptr<CommitQueue> worker) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DVLOG(1) << "Successfully connected " << ModelTypeToString(type_); @@ -205,7 +206,7 @@ NudgeForCommitIfNeeded(); } -void SharedModelTypeProcessor::DisconnectSync() { +void ClientTagBasedModelTypeProcessor::DisconnectSync() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsConnected()); @@ -218,9 +219,10 @@ } } -void SharedModelTypeProcessor::Put(const std::string& storage_key, - std::unique_ptr<EntityData> data, - MetadataChangeList* metadata_change_list) { +void ClientTagBasedModelTypeProcessor::Put( + const std::string& storage_key, + std::unique_ptr<EntityData> data, + MetadataChangeList* metadata_change_list) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsAllowingChanges()); DCHECK(data); @@ -253,7 +255,7 @@ NudgeForCommitIfNeeded(); } -void SharedModelTypeProcessor::Delete( +void ClientTagBasedModelTypeProcessor::Delete( const std::string& storage_key, MetadataChangeList* metadata_change_list) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -281,7 +283,7 @@ NudgeForCommitIfNeeded(); } -void SharedModelTypeProcessor::UpdateStorageKey( +void ClientTagBasedModelTypeProcessor::UpdateStorageKey( const EntityData& entity_data, const std::string& storage_key, MetadataChangeList* metadata_change_list) { @@ -299,14 +301,15 @@ metadata_change_list->UpdateMetadata(storage_key, entity->metadata()); } -void SharedModelTypeProcessor::UntrackEntity(const EntityData& entity_data) { +void ClientTagBasedModelTypeProcessor::UntrackEntity( + const EntityData& entity_data) { const std::string& client_tag_hash = entity_data.client_tag_hash; DCHECK(!client_tag_hash.empty()); DCHECK(GetEntityForTagHash(client_tag_hash)->storage_key().empty()); entities_.erase(client_tag_hash); } -void SharedModelTypeProcessor::NudgeForCommitIfNeeded() { +void ClientTagBasedModelTypeProcessor::NudgeForCommitIfNeeded() { // Don't bother sending anything if there's no one to send to. if (!IsConnected()) return; @@ -329,7 +332,7 @@ worker_->NudgeForCommit(); } -void SharedModelTypeProcessor::GetLocalChanges( +void ClientTagBasedModelTypeProcessor::GetLocalChanges( size_t max_entries, const GetLocalChangesCallback& callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -352,7 +355,7 @@ callback.Run(std::move(commit_requests)); } -void SharedModelTypeProcessor::OnCommitCompleted( +void ClientTagBasedModelTypeProcessor::OnCommitCompleted( const sync_pb::ModelTypeState& model_type_state, const CommitResponseDataList& response_list) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -412,7 +415,7 @@ } } -void SharedModelTypeProcessor::OnUpdateReceived( +void ClientTagBasedModelTypeProcessor::OnUpdateReceived( const sync_pb::ModelTypeState& model_type_state, const UpdateResponseDataList& updates) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -486,7 +489,7 @@ NudgeForCommitIfNeeded(); } -ProcessorEntityTracker* SharedModelTypeProcessor::ProcessUpdate( +ProcessorEntityTracker* ClientTagBasedModelTypeProcessor::ProcessUpdate( const UpdateResponseData& update, EntityChangeList* entity_changes) { const EntityData& data = update.entity.value(); @@ -551,7 +554,7 @@ return entity; } -ConflictResolution::Type SharedModelTypeProcessor::ResolveConflict( +ConflictResolution::Type ClientTagBasedModelTypeProcessor::ResolveConflict( const UpdateResponseData& update, ProcessorEntityTracker* entity, EntityChangeList* changes) { @@ -621,7 +624,7 @@ return resolution_type; } -void SharedModelTypeProcessor::RecommitAllForEncryption( +void ClientTagBasedModelTypeProcessor::RecommitAllForEncryption( std::unordered_set<std::string> already_updated, MetadataChangeList* metadata_changes) { ModelTypeSyncBridge::StorageKeyList entities_needing_data; @@ -646,12 +649,13 @@ if (!entities_needing_data.empty()) { bridge_->GetData( std::move(entities_needing_data), - base::Bind(&SharedModelTypeProcessor::OnDataLoadedForReEncryption, - weak_ptr_factory_.GetWeakPtr())); + base::BindOnce( + &ClientTagBasedModelTypeProcessor::OnDataLoadedForReEncryption, + weak_ptr_factory_.GetWeakPtr())); } } -void SharedModelTypeProcessor::OnInitialUpdateReceived( +void ClientTagBasedModelTypeProcessor::OnInitialUpdateReceived( const sync_pb::ModelTypeState& model_type_state, const UpdateResponseDataList& updates) { DCHECK(entities_.empty()); @@ -697,7 +701,7 @@ NudgeForCommitIfNeeded(); } -void SharedModelTypeProcessor::OnInitialPendingDataLoaded( +void ClientTagBasedModelTypeProcessor::OnInitialPendingDataLoaded( std::unique_ptr<DataBatch> data_batch) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(waiting_for_pending_data_); @@ -712,7 +716,7 @@ ConnectIfReady(); } -void SharedModelTypeProcessor::OnDataLoadedForReEncryption( +void ClientTagBasedModelTypeProcessor::OnDataLoadedForReEncryption( std::unique_ptr<DataBatch> data_batch) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!waiting_for_pending_data_); @@ -721,7 +725,7 @@ NudgeForCommitIfNeeded(); } -void SharedModelTypeProcessor::ConsumeDataBatch( +void ClientTagBasedModelTypeProcessor::ConsumeDataBatch( std::unique_ptr<DataBatch> data_batch) { while (data_batch->HasNext()) { KeyAndData data = data_batch->Next(); @@ -735,11 +739,12 @@ } } -std::string SharedModelTypeProcessor::GetHashForTag(const std::string& tag) { +std::string ClientTagBasedModelTypeProcessor::GetHashForTag( + const std::string& tag) { return GenerateSyncableHash(type_, tag); } -std::string SharedModelTypeProcessor::GetClientTagHash( +std::string ClientTagBasedModelTypeProcessor::GetClientTagHash( const std::string& storage_key, const EntityData& data) { auto iter = storage_key_to_tag_hash_.find(storage_key); @@ -748,7 +753,8 @@ : iter->second; } -ProcessorEntityTracker* SharedModelTypeProcessor::GetEntityForStorageKey( +ProcessorEntityTracker* +ClientTagBasedModelTypeProcessor::GetEntityForStorageKey( const std::string& storage_key) { auto iter = storage_key_to_tag_hash_.find(storage_key); return iter == storage_key_to_tag_hash_.end() @@ -756,13 +762,13 @@ : GetEntityForTagHash(iter->second); } -ProcessorEntityTracker* SharedModelTypeProcessor::GetEntityForTagHash( +ProcessorEntityTracker* ClientTagBasedModelTypeProcessor::GetEntityForTagHash( const std::string& tag_hash) { auto it = entities_.find(tag_hash); return it != entities_.end() ? it->second.get() : nullptr; } -ProcessorEntityTracker* SharedModelTypeProcessor::CreateEntity( +ProcessorEntityTracker* ClientTagBasedModelTypeProcessor::CreateEntity( const std::string& storage_key, const EntityData& data) { DCHECK(entities_.find(data.client_tag_hash) == entities_.end()); @@ -779,7 +785,7 @@ return entity_ptr; } -ProcessorEntityTracker* SharedModelTypeProcessor::CreateEntity( +ProcessorEntityTracker* ClientTagBasedModelTypeProcessor::CreateEntity( const EntityData& data) { // Verify the tag hash matches, may be relaxed in the future. DCHECK_EQ(data.client_tag_hash, GetHashForTag(bridge_->GetClientTag(data))); @@ -789,7 +795,7 @@ return CreateEntity(storage_key, data); } -bool SharedModelTypeProcessor::AllStorageKeysPopulated() const { +bool ClientTagBasedModelTypeProcessor::AllStorageKeysPopulated() const { for (const auto& kv : entities_) { ProcessorEntityTracker* entity = kv.second.get(); if (entity->storage_key().empty()) @@ -798,7 +804,7 @@ return true; } -size_t SharedModelTypeProcessor::EstimateMemoryUsage() const { +size_t ClientTagBasedModelTypeProcessor::EstimateMemoryUsage() const { using base::trace_event::EstimateMemoryUsage; size_t memory_usage = 0; memory_usage += EstimateMemoryUsage(model_type_state_); @@ -807,7 +813,7 @@ return memory_usage; } -void SharedModelTypeProcessor::ExpireEntriesIfNeeded( +void ClientTagBasedModelTypeProcessor::ExpireEntriesIfNeeded( const sync_pb::DataTypeProgressMarker& progress_marker) { if (!progress_marker.has_gc_directive()) return; @@ -853,7 +859,7 @@ bridge_->ApplySyncChanges(std::move(metadata_changes), EntityChangeList()); } -void SharedModelTypeProcessor::ClearMetadataForEntries( +void ClientTagBasedModelTypeProcessor::ClearMetadataForEntries( const std::vector<std::string>& storage_key_to_be_deleted, MetadataChangeList* metadata_changes) { for (const std::string& key : storage_key_to_be_deleted) { @@ -865,7 +871,7 @@ } } -void SharedModelTypeProcessor::ExpireEntriesByVersion( +void ClientTagBasedModelTypeProcessor::ExpireEntriesByVersion( int64_t version_watermark, MetadataChangeList* metadata_changes) { DCHECK(metadata_changes); @@ -882,7 +888,7 @@ ClearMetadataForEntries(storage_key_to_be_deleted, metadata_changes); } -void SharedModelTypeProcessor::ExpireEntriesByAge( +void ClientTagBasedModelTypeProcessor::ExpireEntriesByAge( int32_t age_watermark_in_days, MetadataChangeList* metadata_changes) { DCHECK(metadata_changes); @@ -902,7 +908,7 @@ ClearMetadataForEntries(storage_key_to_be_deleted, metadata_changes); } -void SharedModelTypeProcessor::ExpireEntriesByItemLimit( +void ClientTagBasedModelTypeProcessor::ExpireEntriesByItemLimit( int32_t max_number_of_items, MetadataChangeList* metadata_changes) { DCHECK(metadata_changes); @@ -931,7 +937,7 @@ ClearMetadataForEntries(storage_key_to_be_deleted, metadata_changes); } -void SharedModelTypeProcessor::RemoveEntity( +void ClientTagBasedModelTypeProcessor::RemoveEntity( ProcessorEntityTracker* entity, MetadataChangeList* metadata_change_list) { metadata_change_list->ClearMetadata(entity->storage_key());
diff --git a/components/sync/model_impl/shared_model_type_processor.h b/components/sync/model_impl/client_tag_based_model_type_processor.h similarity index 91% rename from components/sync/model_impl/shared_model_type_processor.h rename to components/sync/model_impl/client_tag_based_model_type_processor.h index 1ee6c3c..4c0a80c 100644 --- a/components/sync/model_impl/shared_model_type_processor.h +++ b/components/sync/model_impl/client_tag_based_model_type_processor.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 COMPONENTS_SYNC_MODEL_IMPL_SHARED_MODEL_TYPE_PROCESSOR_H_ -#define COMPONENTS_SYNC_MODEL_IMPL_SHARED_MODEL_TYPE_PROCESSOR_H_ +#ifndef COMPONENTS_SYNC_MODEL_IMPL_CLIENT_TAG_BASED_MODEL_TYPE_PROCESSOR_H_ +#define COMPONENTS_SYNC_MODEL_IMPL_CLIENT_TAG_BASED_MODEL_TYPE_PROCESSOR_H_ #include <map> #include <memory> @@ -34,16 +34,17 @@ // A sync component embedded on the model type's thread that tracks entity // metadata in the model store and coordinates communication between sync and -// model type threads. See //docs/sync/uss/shared_model_type_processor.md for a -// more thorough description. -class SharedModelTypeProcessor : public ModelTypeProcessor, - public ModelTypeChangeProcessor { +// model type threads. See +// //docs/sync/uss/client_tag_based_model_type_processor.md for a more thorough +// description. +class ClientTagBasedModelTypeProcessor : public ModelTypeProcessor, + public ModelTypeChangeProcessor { public: - SharedModelTypeProcessor(ModelType type, - ModelTypeSyncBridge* bridge, - const base::RepeatingClosure& dump_stack, - bool commit_only); - ~SharedModelTypeProcessor() override; + ClientTagBasedModelTypeProcessor(ModelType type, + ModelTypeSyncBridge* bridge, + const base::RepeatingClosure& dump_stack, + bool commit_only); + ~ClientTagBasedModelTypeProcessor() override; // Whether the processor is allowing changes to its model type. If this is // false, the bridge should not allow any changes to its data. @@ -84,7 +85,7 @@ private: friend class ModelTypeDebugInfo; - friend class SharedModelTypeProcessorTest; + friend class ClientTagBasedModelTypeProcessorTest; // Returns true if the model is ready or encountered an error. bool IsModelReadyOrError() const; @@ -270,11 +271,11 @@ SEQUENCE_CHECKER(sequence_checker_); // WeakPtrFactory for this processor which will be sent to sync thread. - base::WeakPtrFactory<SharedModelTypeProcessor> weak_ptr_factory_; + base::WeakPtrFactory<ClientTagBasedModelTypeProcessor> weak_ptr_factory_; - DISALLOW_COPY_AND_ASSIGN(SharedModelTypeProcessor); + DISALLOW_COPY_AND_ASSIGN(ClientTagBasedModelTypeProcessor); }; } // namespace syncer -#endif // COMPONENTS_SYNC_MODEL_IMPL_SHARED_MODEL_TYPE_PROCESSOR_H_ +#endif // COMPONENTS_SYNC_MODEL_IMPL_CLIENT_TAG_BASED_MODEL_TYPE_PROCESSOR_H_
diff --git a/components/sync/model_impl/shared_model_type_processor_unittest.cc b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc similarity index 92% rename from components/sync/model_impl/shared_model_type_processor_unittest.cc rename to components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc index 3d0f6ea..f7be613 100644 --- a/components/sync/model_impl/shared_model_type_processor_unittest.cc +++ b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.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 "components/sync/model_impl/shared_model_type_processor.h" +#include "components/sync/model_impl/client_tag_based_model_type_processor.h" #include <stddef.h> #include <stdint.h> @@ -20,8 +20,8 @@ #include "components/sync/test/engine/mock_model_type_worker.h" #include "testing/gtest/include/gtest/gtest.h" -using sync_pb::EntitySpecifics; using sync_pb::EntityMetadata; +using sync_pb::EntitySpecifics; using sync_pb::ModelTypeState; namespace syncer { @@ -58,7 +58,7 @@ std::unique_ptr<ModelTypeChangeProcessor> CreateProcessor(bool commit_only, ModelType type, ModelTypeSyncBridge* bridge) { - return std::make_unique<SharedModelTypeProcessor>( + return std::make_unique<ClientTagBasedModelTypeProcessor>( type, bridge, base::RepeatingClosure(), commit_only); } @@ -162,7 +162,7 @@ } // namespace -// Tests the various functionality of SharedModelTypeProcessor. +// Tests the various functionality of ClientTagBasedModelTypeProcessor. // // The processor sits between the bridge (implemented by this test class) and // the worker, which is represented by a MockModelTypeWorker. This test suite @@ -177,12 +177,12 @@ // storage and the correct commit requests on the worker side. // - Updates and commit responses from the worker correctly affect data and // metadata in storage on the bridge side. -class SharedModelTypeProcessorTest : public ::testing::Test { +class ClientTagBasedModelTypeProcessorTest : public ::testing::Test { public: - SharedModelTypeProcessorTest() + ClientTagBasedModelTypeProcessorTest() : bridge_(std::make_unique<TestModelTypeSyncBridge>(false)) {} - ~SharedModelTypeProcessorTest() override { CheckPostConditions(); } + ~ClientTagBasedModelTypeProcessorTest() override { CheckPostConditions(); } void InitializeToMetadataLoaded() { bridge()->SetInitialSyncDone(true); @@ -204,9 +204,10 @@ void OnSyncStarting() { type_processor()->OnSyncStarting( - base::BindRepeating(&SharedModelTypeProcessorTest::ErrorReceived, - base::Unretained(this)), - base::Bind(&SharedModelTypeProcessorTest::OnReadyToConnect, + base::BindRepeating( + &ClientTagBasedModelTypeProcessorTest::ErrorReceived, + base::Unretained(this)), + base::Bind(&ClientTagBasedModelTypeProcessorTest::OnReadyToConnect, base::Unretained(this))); } @@ -286,8 +287,9 @@ MockModelTypeWorker* worker() const { return worker_; } - SharedModelTypeProcessor* type_processor() const { - return static_cast<SharedModelTypeProcessor*>(bridge()->change_processor()); + ClientTagBasedModelTypeProcessor* type_processor() const { + return static_cast<ClientTagBasedModelTypeProcessor*>( + bridge()->change_processor()); } private: @@ -323,7 +325,7 @@ }; // Test that an initial sync handles local and remote items properly. -TEST_F(SharedModelTypeProcessorTest, InitialSync) { +TEST_F(ClientTagBasedModelTypeProcessorTest, InitialSync) { ModelReadyToSync(); OnSyncStarting(); @@ -352,7 +354,7 @@ } // Test that an initial sync filters out tombstones in the processor. -TEST_F(SharedModelTypeProcessorTest, InitialSyncWithTombstone) { +TEST_F(ClientTagBasedModelTypeProcessorTest, InitialSyncWithTombstone) { ModelReadyToSync(); OnSyncStarting(); @@ -370,7 +372,7 @@ } // Test that subsequent starts don't call MergeSyncData. -TEST_F(SharedModelTypeProcessorTest, NonInitialSync) { +TEST_F(ClientTagBasedModelTypeProcessorTest, NonInitialSync) { // This sets initial_sync_done to true. InitializeToMetadataLoaded(); @@ -388,7 +390,7 @@ } // Test that an error during the merge is propagated to the error handler. -TEST_F(SharedModelTypeProcessorTest, MergeError) { +TEST_F(ClientTagBasedModelTypeProcessorTest, MergeError) { ModelReadyToSync(); OnSyncStarting(); @@ -398,7 +400,7 @@ } // Test that errors before it's called are passed to |start_callback| correctly. -TEST_F(SharedModelTypeProcessorTest, StartErrors) { +TEST_F(ClientTagBasedModelTypeProcessorTest, StartErrors) { type_processor()->ReportError({FROM_HERE, "boom"}); ExpectError(); OnSyncStarting(); @@ -442,7 +444,7 @@ // - Optionally, a put or delete happens to the item. // // This results in 2 + 12 = 14 orderings of the events. -TEST_F(SharedModelTypeProcessorTest, LoadPendingCommit) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LoadPendingCommit) { // Data, connect. EntitySpecifics specifics1 = ResetStateWriteItem(kKey1, kValue1); InitializeToMetadataLoaded(); @@ -578,7 +580,7 @@ } // Tests cases where pending data loads synchronously. -TEST_F(SharedModelTypeProcessorTest, LoadPendingSynchronous) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LoadPendingSynchronous) { // Model, sync. EntitySpecifics specifics1 = ResetStateWriteItem(kKey1, kValue1); bridge()->ExpectSynchronousDataCallback(); @@ -606,7 +608,7 @@ // handled properly). // // This results in 1 + 4 = 5 orderings of the events. -TEST_F(SharedModelTypeProcessorTest, LoadPendingDelete) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LoadPendingDelete) { // Connect. ResetStateDeleteItem(kKey1, kValue1); InitializeToMetadataLoaded(); @@ -652,7 +654,7 @@ } // Test that loading a committed item does not queue another commit. -TEST_F(SharedModelTypeProcessorTest, LoadCommited) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LoadCommited) { InitializeToReadyState(); WriteItemAndAck(kKey1, kValue1); ResetState(true); @@ -665,7 +667,7 @@ // Creates a new item locally. // Thoroughly tests the data generated by a local item creation. -TEST_F(SharedModelTypeProcessorTest, LocalCreateItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalCreateItem) { InitializeToReadyState(); EXPECT_EQ(0U, worker()->GetNumPendingCommits()); @@ -708,7 +710,7 @@ } // Test that commit only types are deleted after commit response. -TEST_F(SharedModelTypeProcessorTest, CommitOnlySimple) { +TEST_F(ClientTagBasedModelTypeProcessorTest, CommitOnlySimple) { ResetState(false, true); InitializeToReadyState(); @@ -724,7 +726,7 @@ // Test that commit only types maintain tracking of entities while unsynced // changes exist. -TEST_F(SharedModelTypeProcessorTest, CommitOnlyUnsyncedChanges) { +TEST_F(ClientTagBasedModelTypeProcessorTest, CommitOnlyUnsyncedChanges) { ResetState(false, true); InitializeToReadyState(); @@ -753,7 +755,7 @@ // Test that an error applying metadata changes from a commit response is // propagated to the error handler. -TEST_F(SharedModelTypeProcessorTest, ErrorApplyingAck) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ErrorApplyingAck) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); bridge()->ErrorOnNextCall(); @@ -763,7 +765,7 @@ // The purpose of this test case is to test setting |client_tag_hash| and |id| // on the EntityData object as we pass it into the Put method of the processor. -TEST_F(SharedModelTypeProcessorTest, LocalUpdateItemWithOverrides) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalUpdateItemWithOverrides) { const std::string kId1 = "cid1"; const std::string kId2 = "cid2"; @@ -824,7 +826,7 @@ // Creates a new local item then modifies it. // Thoroughly tests data generated by modification of server-unknown item. -TEST_F(SharedModelTypeProcessorTest, LocalUpdateItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalUpdateItem) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); @@ -877,7 +879,7 @@ // Tests that a local update that doesn't change specifics doesn't generate a // commit request. -TEST_F(SharedModelTypeProcessorTest, LocalUpdateItemRedundant) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalUpdateItemRedundant) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); EXPECT_EQ(1U, db().metadata_count()); @@ -888,7 +890,7 @@ } // Thoroughly tests the data generated by a server item creation. -TEST_F(SharedModelTypeProcessorTest, ServerCreateItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ServerCreateItem) { InitializeToReadyState(); worker()->UpdateFromServer(kHash1, GenerateSpecifics(kKey1, kValue1)); EXPECT_EQ(1U, db().data_count()); @@ -919,7 +921,7 @@ // Test that an error applying changes from a server update is // propagated to the error handler. -TEST_F(SharedModelTypeProcessorTest, ErrorApplyingUpdate) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ErrorApplyingUpdate) { InitializeToReadyState(); bridge()->ErrorOnNextCall(); ExpectError(); @@ -927,7 +929,7 @@ } // Thoroughly tests the data generated by a server item creation. -TEST_F(SharedModelTypeProcessorTest, ServerUpdateItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ServerUpdateItem) { InitializeToReadyState(); // Local add writes data and metadata; ack writes metadata again. @@ -948,7 +950,7 @@ } // Tests locally deleting an acknowledged item. -TEST_F(SharedModelTypeProcessorTest, LocalDeleteItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalDeleteItem) { InitializeToReadyState(); WriteItemAndAck(kKey1, kValue1); EXPECT_EQ(0U, worker()->GetNumPendingCommits()); @@ -987,7 +989,7 @@ } // Tests that item created and deleted before sync cycle doesn't get committed. -TEST_F(SharedModelTypeProcessorTest, LocalDeleteItemUncommitted) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalDeleteItemUncommitted) { InitializeToMetadataLoaded(); bridge()->WriteItem(kKey1, kValue1); bridge()->DeleteItem(kKey1); @@ -998,7 +1000,7 @@ // Tests creating and deleting an item locally before receiving a commit // response, then getting the commit responses. -TEST_F(SharedModelTypeProcessorTest, LocalDeleteItemInterleaved) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalDeleteItemInterleaved) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); worker()->VerifyPendingCommits({kHash1}); @@ -1048,7 +1050,7 @@ EXPECT_EQ(0U, ProcessorEntityCount()); } -TEST_F(SharedModelTypeProcessorTest, ServerDeleteItem) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ServerDeleteItem) { InitializeToReadyState(); WriteItemAndAck(kKey1, kValue1); EXPECT_EQ(1U, ProcessorEntityCount()); @@ -1074,7 +1076,7 @@ // Deletes an item we've never seen before. // Should have no effect and not crash. -TEST_F(SharedModelTypeProcessorTest, LocalDeleteUnknown) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalDeleteUnknown) { InitializeToReadyState(); bridge()->DeleteItem(kKey1); EXPECT_EQ(0U, db().data_count()); @@ -1085,7 +1087,7 @@ // Deletes an item we've never seen before. // Should have no effect and not crash. -TEST_F(SharedModelTypeProcessorTest, ServerDeleteUnknown) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ServerDeleteUnknown) { InitializeToReadyState(); worker()->TombstoneFromServer(kHash1); EXPECT_EQ(0U, db().data_count()); @@ -1096,7 +1098,7 @@ // Tests that after committing entity fails, processor includes this entity in // consecutive commits. -TEST_F(SharedModelTypeProcessorTest, CommitFailedOnServer) { +TEST_F(ClientTagBasedModelTypeProcessorTest, CommitFailedOnServer) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); worker()->VerifyPendingCommits({kHash1}); @@ -1117,7 +1119,7 @@ } // Tests that GetLocalChanges honors max_entries parameter. -TEST_F(SharedModelTypeProcessorTest, LocalChangesPagination) { +TEST_F(ClientTagBasedModelTypeProcessorTest, LocalChangesPagination) { InitializeToMetadataLoaded(); bridge()->WriteItem(kKey1, kValue1); bridge()->WriteItem(kKey2, kValue2); @@ -1131,7 +1133,7 @@ // Creates two different sync items. // Verifies that the second has no effect on the first. -TEST_F(SharedModelTypeProcessorTest, TwoIndependentItems) { +TEST_F(ClientTagBasedModelTypeProcessorTest, TwoIndependentItems) { InitializeToReadyState(); EXPECT_EQ(0U, worker()->GetNumPendingCommits()); @@ -1162,7 +1164,7 @@ EXPECT_EQ(kUncommittedVersion, metadata2.server_version()); } -TEST_F(SharedModelTypeProcessorTest, ConflictResolutionChangesMatch) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ConflictResolutionChangesMatch) { InitializeToReadyState(); EntitySpecifics specifics = bridge()->WriteItem(kKey1, kValue1); EXPECT_EQ(1U, db().data_change_count()); @@ -1181,7 +1183,7 @@ worker()->VerifyPendingCommits({kHash1}); } -TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseLocal) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ConflictResolutionUseLocal) { InitializeToReadyState(); // WriteAndAck entity to get id from the server. WriteItemAndAck(kKey1, kValue1); @@ -1200,7 +1202,7 @@ worker()->VerifyNthPendingCommit(1, kHash1, specifics2); } -TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseRemote) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ConflictResolutionUseRemote) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); bridge()->SetConflictResolution(ConflictResolution::UseRemote()); @@ -1214,7 +1216,7 @@ worker()->VerifyPendingCommits({kHash1}); } -TEST_F(SharedModelTypeProcessorTest, ConflictResolutionUseNew) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ConflictResolutionUseNew) { InitializeToReadyState(); bridge()->WriteItem(kKey1, kValue1); bridge()->SetConflictResolution( @@ -1234,7 +1236,7 @@ // // Creates items in various states of commit and verifies they re-attempt to // commit on reconnect. -TEST_F(SharedModelTypeProcessorTest, Disconnect) { +TEST_F(ClientTagBasedModelTypeProcessorTest, Disconnect) { InitializeToReadyState(); // The first item is fully committed. @@ -1269,7 +1271,7 @@ // // Creates items in various states of commit and verifies they re-attempt to // commit on re-enable. -TEST_F(SharedModelTypeProcessorTest, Disable) { +TEST_F(ClientTagBasedModelTypeProcessorTest, Disable) { InitializeToReadyState(); // The first item is fully committed. @@ -1296,7 +1298,7 @@ } // Test re-encrypt everything when desired encryption key changes. -TEST_F(SharedModelTypeProcessorTest, ReEncryptCommitsWithNewKey) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ReEncryptCommitsWithNewKey) { InitializeToReadyState(); // Commit an item. @@ -1324,7 +1326,7 @@ // Test that an error loading pending commit data for re-encryption is // propagated to the error handler. -TEST_F(SharedModelTypeProcessorTest, ReEncryptErrorLoadingData) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ReEncryptErrorLoadingData) { InitializeToReadyState(); WriteItemAndAck(kKey1, kValue1); bridge()->ErrorOnNextCall(); @@ -1333,7 +1335,7 @@ } // Test receipt of updates with new and old keys. -TEST_F(SharedModelTypeProcessorTest, ReEncryptUpdatesWithNewKey) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ReEncryptUpdatesWithNewKey) { InitializeToReadyState(); // Receive an unencrypted update. @@ -1370,7 +1372,8 @@ } // Test that re-encrypting enqueues the right data for USE_LOCAL conflicts. -TEST_F(SharedModelTypeProcessorTest, ReEncryptConflictResolutionUseLocal) { +TEST_F(ClientTagBasedModelTypeProcessorTest, + ReEncryptConflictResolutionUseLocal) { InitializeToReadyState(); // WriteAndAck entity to get id from the server. WriteItemAndAck(kKey1, kValue1); @@ -1395,7 +1398,8 @@ } // Test that re-encrypting enqueues the right data for USE_REMOTE conflicts. -TEST_F(SharedModelTypeProcessorTest, ReEncryptConflictResolutionUseRemote) { +TEST_F(ClientTagBasedModelTypeProcessorTest, + ReEncryptConflictResolutionUseRemote) { InitializeToReadyState(); worker()->UpdateWithEncryptionKey("k1"); bridge()->WriteItem(kKey1, kValue1); @@ -1412,7 +1416,8 @@ } // Test that re-encrypting enqueues the right data for USE_NEW conflicts. -TEST_F(SharedModelTypeProcessorTest, ReEncryptConflictResolutionUseNew) { +TEST_F(ClientTagBasedModelTypeProcessorTest, + ReEncryptConflictResolutionUseNew) { InitializeToReadyState(); worker()->UpdateWithEncryptionKey("k1"); bridge()->WriteItem(kKey1, kValue1); @@ -1429,7 +1434,7 @@ EXPECT_EQ(kValue3, db().GetValue(kKey1)); } -TEST_F(SharedModelTypeProcessorTest, ReEncryptConflictWhileLoading) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ReEncryptConflictWhileLoading) { InitializeToReadyState(); // Create item and ack so its data is no longer cached. WriteItemAndAck(kKey1, kValue1); @@ -1452,7 +1457,7 @@ } // Tests that a real remote change wins over a local encryption-only change. -TEST_F(SharedModelTypeProcessorTest, IgnoreLocalEncryption) { +TEST_F(ClientTagBasedModelTypeProcessorTest, IgnoreLocalEncryption) { InitializeToReadyState(); EntitySpecifics specifics = WriteItemAndAck(kKey1, kValue1); worker()->UpdateWithEncryptionKey("k1"); @@ -1465,7 +1470,7 @@ } // Tests that a real local change wins over a remote encryption-only change. -TEST_F(SharedModelTypeProcessorTest, IgnoreRemoteEncryption) { +TEST_F(ClientTagBasedModelTypeProcessorTest, IgnoreRemoteEncryption) { InitializeToReadyState(); EntitySpecifics specifics1 = WriteItemAndAck(kKey1, kValue1); @@ -1479,7 +1484,8 @@ } // Same as above but with two commit requests before one ack. -TEST_F(SharedModelTypeProcessorTest, IgnoreRemoteEncryptionInterleaved) { +TEST_F(ClientTagBasedModelTypeProcessorTest, + IgnoreRemoteEncryptionInterleaved) { InitializeToReadyState(); // WriteAndAck entity to get id from the server. WriteItemAndAck(kKey1, kValue1); @@ -1502,7 +1508,7 @@ // and updates corresponding entity's metadata in MetadataChangeList, and // UntrackEntity will remove corresponding ProcessorEntityTracker and do not add // any entity's metadata into MetadataChangeList. -TEST_F(SharedModelTypeProcessorTest, UpdateStorageKey) { +TEST_F(ClientTagBasedModelTypeProcessorTest, UpdateStorageKey) { // Setup bridge to not support calls to GetStorageKey. This will cause // FakeModelTypeSyncBridge to call UpdateStorageKey for new entities and will // DCHECK if GetStorageKey gets called. @@ -1546,7 +1552,7 @@ // GetStorageKey(). When update from server delivers updated encryption key, all // entities should be reencrypted including new entity that just got received // from server. -TEST_F(SharedModelTypeProcessorTest, ReencryptionWithEmptyStorageKeys) { +TEST_F(ClientTagBasedModelTypeProcessorTest, ReencryptionWithEmptyStorageKeys) { bridge()->SetSupportsGetStorageKey(false); InitializeToReadyState(); @@ -1560,7 +1566,7 @@ // Tests that UntrackEntity won't propagate storage key to // ProcessorEntityTracker, and no entity's metadata are added into // MetadataChangeList. -TEST_F(SharedModelTypeProcessorTest, UntrackEntity) { +TEST_F(ClientTagBasedModelTypeProcessorTest, UntrackEntity) { // Setup bridge to not support calls to GetStorageKey. This will cause // FakeModelTypeSyncBridge to call UpdateStorageKey for new entities and will // DCHECK if GetStorageKey gets called. @@ -1581,10 +1587,10 @@ EXPECT_EQ(0, bridge()->get_storage_key_call_count()); } -// Tests that SharedModelTypeProcessor can do garbage collection by version. -// Create 2 entries, one is version 1, another is version 3. Check if sync -// will delete version 1 entry when server set expired version is 2. -TEST_F(SharedModelTypeProcessorTest, GarbageCollectionByVersion) { +// Tests that ClientTagBasedModelTypeProcessor can do garbage collection by +// version. Create 2 entries, one is version 1, another is version 3. Check if +// sync will delete version 1 entry when server set expired version is 2. +TEST_F(ClientTagBasedModelTypeProcessorTest, GarbageCollectionByVersion) { InitializeToReadyState(); // Create 2 entries, one is version 3, another is version 1. @@ -1612,10 +1618,10 @@ EXPECT_EQ(0U, worker()->GetNumPendingCommits()); } -// Tests that SharedModelTypeProcessor can do garbage collection by age. +// Tests that ClientTagBasedModelTypeProcessor can do garbage collection by age. // Create 2 entries, one is 15-days-old, another is 5-days-old. Check if sync // will delete 15-days-old entry when server set expired age is 10 days. -TEST_F(SharedModelTypeProcessorTest, GarbageCollectionByAge) { +TEST_F(ClientTagBasedModelTypeProcessorTest, GarbageCollectionByAge) { InitializeToReadyState(); // Create 2 entries, one is 15-days-old, another is 5-days-old. @@ -1646,11 +1652,11 @@ EXPECT_EQ(0U, worker()->GetNumPendingCommits()); } -// Tests that SharedModelTypeProcessor can do garbage collection by item limit. -// Create 3 entries, one is 15-days-old, one is 10-days-old, another is +// Tests that ClientTagBasedModelTypeProcessor can do garbage collection by item +// limit. Create 3 entries, one is 15-days-old, one is 10-days-old, another is // 5-days-old. Check if sync will delete 15-days-old entry when server set // limited item is 2 days. -TEST_F(SharedModelTypeProcessorTest, GarbageCollectionByItemLimit) { +TEST_F(ClientTagBasedModelTypeProcessorTest, GarbageCollectionByItemLimit) { InitializeToReadyState(); // Create 3 entries, one is 15-days-old, one is 10-days-old, another is
diff --git a/components/sync/syncable/directory_backing_store_unittest.cc b/components/sync/syncable/directory_backing_store_unittest.cc index e9ccac8..7f392d53 100644 --- a/components/sync/syncable/directory_backing_store_unittest.cc +++ b/components/sync/syncable/directory_backing_store_unittest.cc
@@ -102,12 +102,11 @@ void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { SetUpVersion92Database(connection); // Prepopulates data. - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), connection)); - ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), connection); + ASSERT_EQ(kCurrentDBVersion, dbs.GetVersion()); - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + ASSERT_FALSE(dbs.needs_column_refresh()); } private: @@ -3279,13 +3278,12 @@ ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion67To68()); - ASSERT_EQ(68, dbs->GetVersion()); - ASSERT_TRUE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion67To68()); + EXPECT_EQ(68, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { @@ -3294,35 +3292,34 @@ SetUpVersion68Database(&connection); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion68To69()); - ASSERT_EQ(69, dbs->GetVersion()); - ASSERT_TRUE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion68To69()); + EXPECT_EQ(69, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); } - ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); - ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," "is_del, is_dir, id, specifics, server_specifics FROM metas " "WHERE metahandle = 2")); ASSERT_TRUE(s.Step()); - ASSERT_EQ("Deleted Item", s.ColumnString(0)); - ASSERT_TRUE(s.ColumnBool(1)); - ASSERT_FALSE(s.ColumnBool(2)); - ASSERT_EQ("s_ID_2", s.ColumnString(3)); + EXPECT_EQ("Deleted Item", s.ColumnString(0)); + EXPECT_TRUE(s.ColumnBool(1)); + EXPECT_FALSE(s.ColumnBool(2)); + EXPECT_EQ("s_ID_2", s.ColumnString(3)); sync_pb::EntitySpecifics specifics; specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); ASSERT_TRUE(specifics.has_bookmark()); - ASSERT_EQ("http://www.google.com/", specifics.bookmark().url()); - ASSERT_EQ("AASGASGA", specifics.bookmark().favicon()); + EXPECT_EQ("http://www.google.com/", specifics.bookmark().url()); + EXPECT_EQ("AASGASGA", specifics.bookmark().favicon()); specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); ASSERT_TRUE(specifics.has_bookmark()); - ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url()); - ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon()); - ASSERT_FALSE(s.Step()); + EXPECT_EQ("http://www.google.com/2", specifics.bookmark().url()); + EXPECT_EQ("ASADGADGADG", specifics.bookmark().favicon()); + EXPECT_FALSE(s.Step()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { @@ -3335,13 +3332,12 @@ ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion69To70()); - ASSERT_EQ(70, dbs->GetVersion()); - ASSERT_TRUE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion69To70()); + EXPECT_EQ(70, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); } EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); @@ -3362,21 +3358,20 @@ ASSERT_FALSE(connection.DoesTableExist("models")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion70To71()); - ASSERT_EQ(71, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion70To71()); + EXPECT_EQ(71, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); - ASSERT_TRUE(connection.DoesTableExist("models")); - ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); - ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); - ASSERT_TRUE(connection.DoesColumnExist("models", "model_id")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended")); + EXPECT_TRUE(connection.DoesTableExist("models")); + EXPECT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); + EXPECT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); + EXPECT_TRUE(connection.DoesColumnExist("models", "model_id")); sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " "initial_sync_ended, last_download_timestamp FROM models")); @@ -3386,7 +3381,7 @@ << "Model ID is expected to be the empty BookmarkSpecifics proto."; EXPECT_TRUE(s.ColumnBool(1)); EXPECT_EQ(694, s.ColumnInt64(2)); - ASSERT_FALSE(s.Step()); + EXPECT_FALSE(s.Step()); } @@ -3398,16 +3393,15 @@ ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion71To72()); - ASSERT_EQ(72, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion71To72()); + EXPECT_EQ(72, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); + EXPECT_FALSE(connection.DoesTableExist("extended_attributes")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { @@ -3418,16 +3412,15 @@ ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion72To73()); - ASSERT_EQ(73, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion72To73()); + EXPECT_EQ(73, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); + EXPECT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { @@ -3451,29 +3444,25 @@ "autofill_profiles_added_during_migration")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion73To74()); - ASSERT_EQ(74, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion73To74()); + EXPECT_EQ(74, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_TRUE( + EXPECT_TRUE( connection.DoesColumnExist("share_info", "autofill_migration_state")); - ASSERT_TRUE( - connection.DoesColumnExist("share_info", - "bookmarks_added_during_autofill_migration")); - ASSERT_TRUE( + EXPECT_TRUE(connection.DoesColumnExist( + "share_info", "bookmarks_added_during_autofill_migration")); + EXPECT_TRUE( connection.DoesColumnExist("share_info", "autofill_migration_time")); - ASSERT_TRUE( - connection.DoesColumnExist("share_info", - "autofill_entries_added_during_migration")); + EXPECT_TRUE(connection.DoesColumnExist( + "share_info", "autofill_entries_added_during_migration")); - ASSERT_TRUE( - connection.DoesColumnExist("share_info", - "autofill_profiles_added_during_migration")); + EXPECT_TRUE(connection.DoesColumnExist( + "share_info", "autofill_profiles_added_during_migration")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { @@ -3485,17 +3474,16 @@ ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion74To75()); - ASSERT_EQ(75, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion74To75()); + EXPECT_EQ(75, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); - ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); + EXPECT_TRUE(connection.DoesColumnExist("models", "progress_marker")); + EXPECT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) { @@ -3514,12 +3502,11 @@ ASSERT_TRUE(connection.DoesColumnExist("share_info", "autofill_profiles_added_during_migration")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion75To76()); - ASSERT_EQ(76, dbs->GetVersion()); - ASSERT_TRUE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion75To76()); + EXPECT_EQ(76, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); // Cannot actual refresh columns due to version 76 not containing all // necessary columns. } @@ -3529,23 +3516,22 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion76Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); - EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), + ASSERT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS), GetMetaProtoTimes(&connection)); // Since the proto times are expected to be in a legacy format, they may not // be compatible with ProtoTimeToTime, so we don't call ExpectTimes(). - ASSERT_TRUE(dbs->MigrateVersion76To77()); - ASSERT_EQ(77, dbs->GetVersion()); + EXPECT_TRUE(dbs.MigrateVersion76To77()); + EXPECT_EQ(77, dbs.GetVersion()); EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS), GetMetaProtoTimes(&connection)); // Cannot actually load entries due to version 77 not having all required // columns. - ASSERT_FALSE(dbs->needs_column_refresh()); + EXPECT_FALSE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) { @@ -3556,16 +3542,15 @@ ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS")); { - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion77To78()); - ASSERT_EQ(78, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion77To78()); + EXPECT_EQ(78, dbs.GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + EXPECT_FALSE(dbs.needs_column_refresh()); } - ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) { @@ -3573,12 +3558,11 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion78Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion78To79()); - ASSERT_EQ(79, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion78To79()); + EXPECT_EQ(79, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) { @@ -3586,12 +3570,11 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion79Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion79To80()); - ASSERT_EQ(80, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion79To80()); + EXPECT_EQ(80, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); // Ensure the bag_of_chips has been set. Directory::MetahandlesMap handles_map; @@ -3599,8 +3582,8 @@ MetahandleSet metahandles_to_purge; Directory::KernelLoadInfo load_info; - ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, - &load_info)); + ASSERT_TRUE(dbs.Load(&handles_map, &delete_journals, &metahandles_to_purge, + &load_info)); // Check that the initial value is the serialization of an empty ChipBag. sync_pb::ChipBag chip_bag; std::string serialized_chip_bag; @@ -3619,22 +3602,21 @@ ASSERT_TRUE(s.Step()); ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1)); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion80To81()); - ASSERT_EQ(81, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion80To81()); + EXPECT_EQ(81, dbs.GetVersion()); // Test that ordinal values are preserved correctly. sql::Statement new_s(connection.GetUniqueStatement( "SELECT metahandle, server_ordinal_in_parent " "FROM metas WHERE unique_server_tag = 'google_chrome'")); ASSERT_TRUE(new_s.Step()); - ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); + EXPECT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1)); std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue(); std::string actual_ordinal; new_s.ColumnBlobAsString(1, &actual_ordinal); - ASSERT_EQ(expected_ordinal, actual_ordinal); + EXPECT_EQ(expected_ordinal, actual_ordinal); } TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) { @@ -3643,14 +3625,13 @@ SetUpVersion81Database(&connection); ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion81To82()); - ASSERT_EQ(82, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion81To82()); + EXPECT_EQ(82, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); - ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); + EXPECT_TRUE(connection.DoesColumnExist("models", "transaction_version")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) { @@ -3659,12 +3640,11 @@ SetUpVersion82Database(&connection); ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion82To83()); - ASSERT_EQ(83, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion82To83()); + EXPECT_EQ(83, dbs.GetVersion()); - ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) { @@ -3673,12 +3653,11 @@ SetUpVersion83Database(&connection); ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion83To84()); - ASSERT_EQ(84, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion83To84()); + EXPECT_EQ(84, dbs.GetVersion()); - ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); + EXPECT_TRUE(connection.DoesTableExist("deleted_metas")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) { @@ -3687,46 +3666,43 @@ SetUpVersion84Database(&connection); ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion84To85()); - ASSERT_EQ(85, dbs->GetVersion()); - ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion84To85()); + EXPECT_EQ(85, dbs.GetVersion()); + EXPECT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { sql::Connection connection; ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion85Database(&connection); - EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id")); - EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id")); - EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); - EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position")); - EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); - EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); + ASSERT_TRUE(connection.DoesColumnExist("metas", "next_id")); + ASSERT_TRUE(connection.DoesColumnExist("metas", "prev_id")); + ASSERT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); + ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_position")); + ASSERT_FALSE(connection.DoesColumnExist("metas", "server_unique_position")); + ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion85To86()); - EXPECT_EQ(86, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion85To86()); + EXPECT_EQ(86, dbs.GetVersion()); EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position")); EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position")); EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag")); - ASSERT_TRUE(dbs->needs_column_refresh()); + EXPECT_TRUE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) { sql::Connection connection; - EXPECT_TRUE(connection.OpenInMemory()); + ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion86Database(&connection); - EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); + ASSERT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - EXPECT_TRUE(dbs->MigrateVersion86To87()); - EXPECT_EQ(87, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion86To87()); + EXPECT_EQ(87, dbs.GetVersion()); EXPECT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata")); - EXPECT_TRUE(dbs->needs_column_refresh()); + EXPECT_TRUE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion87To88) { @@ -3734,11 +3710,10 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion87Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion87To88()); - ASSERT_EQ(88, dbs->GetVersion()); - ASSERT_TRUE(connection.DoesColumnExist("models", "context")); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion87To88()); + EXPECT_EQ(88, dbs.GetVersion()); + EXPECT_TRUE(connection.DoesColumnExist("models", "context")); } TEST_F(DirectoryBackingStoreTest, MigrateVersion88To89) { @@ -3748,13 +3723,12 @@ ASSERT_FALSE( connection.DoesColumnExist("metas", "server_attachment_metadata")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion88To89()); - ASSERT_EQ(89, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion88To89()); + EXPECT_EQ(89, dbs.GetVersion()); EXPECT_TRUE( connection.DoesColumnExist("metas", "server_attachment_metadata")); - EXPECT_TRUE(dbs->needs_column_refresh()); + EXPECT_TRUE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion89To90) { @@ -3766,19 +3740,18 @@ ASSERT_TRUE(connection.DoesColumnExist("share_info", "next_id")); ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion89To90()); - ASSERT_EQ(90, dbs->GetVersion()); - EXPECT_TRUE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion89To90()); + EXPECT_EQ(90, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); - ASSERT_TRUE(dbs->RefreshColumns()); - EXPECT_FALSE(dbs->needs_column_refresh()); + EXPECT_TRUE(dbs.RefreshColumns()); + EXPECT_FALSE(dbs.needs_column_refresh()); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "next_id")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); } // 91 is a cleanup with no schema change, similar to 79, so we just check that @@ -3788,12 +3761,11 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion90Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_TRUE(dbs->MigrateVersion90To91()); - ASSERT_EQ(91, dbs->GetVersion()); - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_FALSE(dbs.needs_column_refresh()); + EXPECT_TRUE(dbs.MigrateVersion90To91()); + EXPECT_EQ(91, dbs.GetVersion()); + EXPECT_FALSE(dbs.needs_column_refresh()); } TEST_F(DirectoryBackingStoreTest, MigrateVersion91To92) { @@ -3804,17 +3776,16 @@ ASSERT_TRUE( connection.DoesColumnExist("metas", "server_attachment_metadata")); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion91To92()); - ASSERT_EQ(92, dbs->GetVersion()); - EXPECT_TRUE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion91To92()); + EXPECT_EQ(92, dbs.GetVersion()); + EXPECT_TRUE(dbs.needs_column_refresh()); - ASSERT_TRUE(dbs->RefreshColumns()); - EXPECT_FALSE(dbs->needs_column_refresh()); + EXPECT_TRUE(dbs.RefreshColumns()); + EXPECT_FALSE(dbs.needs_column_refresh()); - ASSERT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); - ASSERT_FALSE( + EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); + EXPECT_FALSE( connection.DoesColumnExist("metas", "server_attachment_metadata")); } @@ -3841,12 +3812,11 @@ ASSERT_TRUE(connection.Open(GetDatabasePath())); SetUpVersion91Database(&connection); // Update this. - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_TRUE(dbs->MigrateVersion91To92()); // Update this. - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - EXPECT_EQ(92, dbs->GetVersion()); // Update this. - ASSERT_FALSE(dbs->needs_column_refresh()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + EXPECT_TRUE(dbs.MigrateVersion91To92()); // Update this. + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + EXPECT_EQ(92, dbs.GetVersion()); // Update this. + EXPECT_FALSE(dbs.needs_column_refresh()); } // Set breakpoint here. } @@ -3856,9 +3826,8 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpVersion86Database(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); - ASSERT_EQ(86, dbs->GetVersion()); + TestDirectoryBackingStore dbs(GetUsername(), &connection); + ASSERT_EQ(86, dbs.GetVersion()); // Insert row with bad position. sql::Statement s(connection.GetUniqueStatement( @@ -3873,9 +3842,9 @@ JournalIndex delete_journals; MetahandleSet metahandles_to_purge; Directory::KernelLoadInfo kernel_load_info; - ASSERT_EQ(FAILED_DATABASE_CORRUPT, - dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, - &kernel_load_info)); + EXPECT_EQ(FAILED_DATABASE_CORRUPT, + dbs.Load(&handles_map, &delete_journals, &metahandles_to_purge, + &kernel_load_info)); } TEST_F(DirectoryBackingStoreTest, DetectCorruptedRoot) { @@ -3883,16 +3852,15 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpCorruptedRootDatabase(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); Directory::MetahandlesMap handles_map; JournalIndex delete_journals; MetahandleSet metahandles_to_purge; Directory::KernelLoadInfo kernel_load_info; - ASSERT_EQ(FAILED_DATABASE_CORRUPT, - dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, - &kernel_load_info)); + EXPECT_EQ(FAILED_DATABASE_CORRUPT, + dbs.Load(&handles_map, &delete_journals, &metahandles_to_purge, + &kernel_load_info)); } TEST_P(MigrationTest, ToCurrentVersion) { @@ -3995,119 +3963,108 @@ MetahandleSet metahandles_to_purge; { - std::unique_ptr<OnDiskDirectoryBackingStore> dbs( - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); - ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, - &metahandles_to_purge, &dir_info)); + OnDiskDirectoryBackingStore dbs(GetUsername(), GetDatabasePath()); + ASSERT_EQ(OPENED, dbs.Load(&handles_map, &delete_journals, + &metahandles_to_purge, &dir_info)); if (!metahandles_to_purge.empty()) - dbs->DeleteEntries(DirectoryBackingStore::METAS_TABLE, - metahandles_to_purge); - ASSERT_FALSE(dbs->needs_column_refresh()); - ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); + dbs.DeleteEntries(DirectoryBackingStore::METAS_TABLE, + metahandles_to_purge); + EXPECT_FALSE(dbs.needs_column_refresh()); + EXPECT_EQ(kCurrentDBVersion, dbs.GetVersion()); int pageSize = 0; - ASSERT_TRUE(dbs->GetDatabasePageSize(&pageSize)); - ASSERT_EQ(kCurrentPageSizeKB, pageSize); + EXPECT_TRUE(dbs.GetDatabasePageSize(&pageSize)); + EXPECT_EQ(kCurrentPageSizeKB, pageSize); } ASSERT_TRUE(connection.Open(GetDatabasePath())); // Columns deleted in Version 67. - ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "name")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "server_name")); // Columns added in Version 68. - ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); - ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); // Columns deleted in Version 68. - ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); - ASSERT_FALSE(connection.DoesColumnExist("metas", - "server_is_bookmark_object")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); + EXPECT_FALSE( + connection.DoesColumnExist("metas", "server_is_bookmark_object")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); // Renamed a column in Version 70 - ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); - ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); - ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); // Removed extended attributes in Version 72. - ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); + EXPECT_FALSE(connection.DoesTableExist("extended_attributes")); // Column replaced in version 75. - ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); - ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); + EXPECT_TRUE(connection.DoesColumnExist("models", "progress_marker")); + EXPECT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp")); // Columns removed in version 76. - ASSERT_FALSE( + EXPECT_FALSE( connection.DoesColumnExist("share_info", "autofill_migration_state")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", - "bookmarks_added_during_autofill_migration")); - ASSERT_FALSE( - connection.DoesColumnExist("share_info", "autofill_migration_time")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", - "autofill_entries_added_during_migration")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", - "autofill_profiles_added_during_migration")); + EXPECT_FALSE(connection.DoesColumnExist( + "share_info", "bookmarks_added_during_autofill_migration")); + EXPECT_FALSE( + connection.DoesColumnExist("share_info", "autofill_migration_time")); + EXPECT_FALSE(connection.DoesColumnExist( + "share_info", "autofill_entries_added_during_migration")); + EXPECT_FALSE(connection.DoesColumnExist( + "share_info", "autofill_profiles_added_during_migration")); // Column added in version 78. - ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); // Column added in version 82. - ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); + EXPECT_TRUE(connection.DoesColumnExist("models", "transaction_version")); // Column added in version 83. - ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); + EXPECT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); // Table added in version 84. - ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); + EXPECT_TRUE(connection.DoesTableExist("deleted_metas")); // Column removed in version 85. - ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); + EXPECT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended")); // Columns removed in version 86. - ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id")); - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "next_id")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "prev_id")); + EXPECT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent")); // Column added in version 88. - ASSERT_TRUE(connection.DoesColumnExist("models", "context")); + EXPECT_TRUE(connection.DoesColumnExist("models", "context")); // Columns removed in version 90. - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id")); - ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "db_create_version")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "db_create_time")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "next_id")); + EXPECT_FALSE(connection.DoesColumnExist("share_info", "notification_state")); // Columns removed in version 92. - ASSERT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); - ASSERT_FALSE( + EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata")); + EXPECT_FALSE( connection.DoesColumnExist("metas", "server_attachment_metadata")); // Check download_progress state (v75 migration) - ASSERT_EQ(694, - dir_info.kernel_info.download_progress[BOOKMARKS] - .timestamp_token_for_migration()); - ASSERT_FALSE( - dir_info.kernel_info.download_progress[BOOKMARKS] - .has_token()); - ASSERT_EQ(32904, - dir_info.kernel_info.download_progress[BOOKMARKS] - .data_type_id()); - ASSERT_FALSE( - dir_info.kernel_info.download_progress[THEMES] - .has_timestamp_token_for_migration()); - ASSERT_TRUE( - dir_info.kernel_info.download_progress[THEMES] - .has_token()); - ASSERT_TRUE( - dir_info.kernel_info.download_progress[THEMES] - .token().empty()); - ASSERT_EQ(41210, - dir_info.kernel_info.download_progress[THEMES] - .data_type_id()); + EXPECT_EQ(694, dir_info.kernel_info.download_progress[BOOKMARKS] + .timestamp_token_for_migration()); + EXPECT_FALSE(dir_info.kernel_info.download_progress[BOOKMARKS].has_token()); + EXPECT_EQ(32904, + dir_info.kernel_info.download_progress[BOOKMARKS].data_type_id()); + EXPECT_FALSE(dir_info.kernel_info.download_progress[THEMES] + .has_timestamp_token_for_migration()); + EXPECT_TRUE(dir_info.kernel_info.download_progress[THEMES].has_token()); + EXPECT_TRUE(dir_info.kernel_info.download_progress[THEMES].token().empty()); + EXPECT_EQ(41210, + dir_info.kernel_info.download_progress[THEMES].data_type_id()); // Check metas EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS), @@ -4116,7 +4073,7 @@ Directory::MetahandlesMap::iterator it = handles_map.find(1); ASSERT_TRUE(it != handles_map.end()); - ASSERT_EQ(1, it->second->ref(META_HANDLE)); + EXPECT_EQ(1, it->second->ref(META_HANDLE)); EXPECT_TRUE(it->second->ref(ID).IsRoot()); EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); @@ -4124,14 +4081,15 @@ // Items 2, 4, and 5 were deleted. it = handles_map.find(2); - ASSERT_TRUE(it == handles_map.end()); + EXPECT_TRUE(it == handles_map.end()); it = handles_map.find(4); - ASSERT_TRUE(it == handles_map.end()); + EXPECT_TRUE(it == handles_map.end()); it = handles_map.find(5); - ASSERT_TRUE(it == handles_map.end()); + EXPECT_TRUE(it == handles_map.end()); it = handles_map.find(6); - ASSERT_EQ(6, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(6, it->second->ref(META_HANDLE)); EXPECT_TRUE(it->second->ref(IS_DIR)); EXPECT_TRUE(it->second->ref(SERVER_IS_DIR)); EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url()); @@ -4144,7 +4102,8 @@ it->second->ref(UNIQUE_BOOKMARK_TAG).length()); it = handles_map.find(7); - ASSERT_EQ(7, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(7, it->second->ref(META_HANDLE)); EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG)); EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark()); EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); @@ -4154,18 +4113,20 @@ EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); it = handles_map.find(8); - ASSERT_EQ(8, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(8, it->second->ref(META_HANDLE)); EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); - ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8"); + EXPECT_EQ(it->second->ref(ID).value(), "s_ID_8"); // Make sure we didn't mistake the bookmark root node for a real bookmark. EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); it = handles_map.find(9); - ASSERT_EQ(9, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(9, it->second->ref(META_HANDLE)); EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG)); EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); @@ -4175,7 +4136,8 @@ EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); it = handles_map.find(10); - ASSERT_EQ(10, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(10, it->second->ref(META_HANDLE)); EXPECT_FALSE(it->second->ref(IS_DEL)); EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark()); @@ -4186,14 +4148,15 @@ EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG)); EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME)); EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME)); - ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10"); + EXPECT_EQ(it->second->ref(ID).value(), "s_ID_10"); // Make sure we didn't assign positions to server-created folders, either. EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid()); EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty()); it = handles_map.find(11); - ASSERT_EQ(11, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(11, it->second->ref(META_HANDLE)); EXPECT_FALSE(it->second->ref(IS_DEL)); EXPECT_FALSE(it->second->ref(IS_DIR)); EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark()); @@ -4214,7 +4177,8 @@ it->second->ref(UNIQUE_BOOKMARK_TAG).length()); it = handles_map.find(12); - ASSERT_EQ(12, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(12, it->second->ref(META_HANDLE)); EXPECT_FALSE(it->second->ref(IS_DEL)); EXPECT_TRUE(it->second->ref(IS_DIR)); EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME)); @@ -4231,20 +4195,22 @@ it->second->ref(UNIQUE_BOOKMARK_TAG).length()); it = handles_map.find(13); - ASSERT_EQ(13, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(13, it->second->ref(META_HANDLE)); EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); EXPECT_EQ(UniquePosition::kSuffixLength, it->second->ref(UNIQUE_BOOKMARK_TAG).length()); it = handles_map.find(14); - ASSERT_EQ(14, it->second->ref(META_HANDLE)); + ASSERT_TRUE(it != handles_map.end()); + EXPECT_EQ(14, it->second->ref(META_HANDLE)); EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid()); EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid()); EXPECT_EQ(UniquePosition::kSuffixLength, it->second->ref(UNIQUE_BOOKMARK_TAG).length()); - ASSERT_EQ(static_cast<size_t>(10), handles_map.size()); + EXPECT_EQ(static_cast<size_t>(10), handles_map.size()); // Make sure that the syncable::Directory and the migration code agree on // which items should or should not have unique position values. This test @@ -4322,9 +4288,8 @@ // due to read-only file system), is not tested here. TEST_F(DirectoryBackingStoreTest, MinorCorruption) { { - std::unique_ptr<OnDiskDirectoryBackingStore> dbs( - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); + OnDiskDirectoryBackingStore dbs(GetUsername(), GetDatabasePath()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); } // Corrupt the root node. @@ -4336,20 +4301,17 @@ } { - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), - GetDatabasePath())); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + EXPECT_TRUE(dbs.DidFailFirstOpenAttempt()); } } TEST_F(DirectoryBackingStoreTest, MinorCorruptionAndUpgrade) { { - std::unique_ptr<OnDiskDirectoryBackingStore> dbs( - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath())); - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); + OnDiskDirectoryBackingStore dbs(GetUsername(), GetDatabasePath()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); } // Make the node look outdated with an invalid version. @@ -4362,16 +4324,14 @@ } { - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), - GetDatabasePath())); - dbs->SetCatastrophicErrorHandler(base::DoNothing()); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); + dbs.SetCatastrophicErrorHandler(base::DoNothing()); - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - EXPECT_TRUE(dbs->DidFailFirstOpenAttempt()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + EXPECT_TRUE(dbs.DidFailFirstOpenAttempt()); int page_size = 0; - ASSERT_TRUE(dbs->GetDatabasePageSize(&page_size)); + EXPECT_TRUE(dbs.GetDatabasePageSize(&page_size)); EXPECT_EQ(kCurrentPageSizeKB, page_size); } } @@ -4381,25 +4341,24 @@ ASSERT_TRUE(connection.OpenInMemory()); SetUpCurrentDatabaseAndCheckVersion(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); Directory::MetahandlesMap handles_map; JournalIndex delete_journals; MetahandleSet metahandles_to_purge; Directory::KernelLoadInfo kernel_load_info; - dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge, - &kernel_load_info); + dbs.Load(&handles_map, &delete_journals, &metahandles_to_purge, + &kernel_load_info); size_t initial_size = handles_map.size(); ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete."; int64_t first_to_die = handles_map.begin()->second->ref(META_HANDLE); MetahandleSet to_delete; to_delete.insert(first_to_die); - EXPECT_TRUE(dbs->DeleteEntries(to_delete)); + EXPECT_TRUE(dbs.DeleteEntries(to_delete)); handles_map.clear(); metahandles_to_purge.clear(); - dbs->LoadEntries(&handles_map, &metahandles_to_purge); + dbs.LoadEntries(&handles_map, &metahandles_to_purge); EXPECT_EQ(initial_size - 1, handles_map.size()); bool delete_failed = false; @@ -4418,11 +4377,11 @@ to_delete.insert(it->first); } - EXPECT_TRUE(dbs->DeleteEntries(to_delete)); + EXPECT_TRUE(dbs.DeleteEntries(to_delete)); handles_map.clear(); metahandles_to_purge.clear(); - dbs->LoadEntries(&handles_map, &metahandles_to_purge); + dbs.LoadEntries(&handles_map, &metahandles_to_purge); EXPECT_EQ(0U, handles_map.size()); } @@ -4441,45 +4400,43 @@ ASSERT_TRUE(connection.Open(GetDatabasePath())); SetUpCurrentDatabaseAndCheckVersion(&connection); - std::unique_ptr<TestDirectoryBackingStore> dbs( - new TestDirectoryBackingStore(GetUsername(), &connection)); + TestDirectoryBackingStore dbs(GetUsername(), &connection); Directory::MetahandlesMap handles_map; JournalIndex delete_journals; MetahandleSet metahandles_to_purge; Directory::KernelLoadInfo kernel_load_info; - DirOpenResult open_result = dbs->Load( + DirOpenResult open_result = dbs.Load( &handles_map, &delete_journals, &metahandles_to_purge, &kernel_load_info); EXPECT_EQ(open_result, OPENED); // Set up database's page size to 4096 - EXPECT_TRUE(dbs->db_->Execute("PRAGMA page_size=4096;")); - EXPECT_TRUE(dbs->Vacuum()); + EXPECT_TRUE(dbs.db_->Execute("PRAGMA page_size=4096;")); + EXPECT_TRUE(dbs.Vacuum()); // Check if update is successful. int pageSize = 0; - EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize)); + EXPECT_TRUE(dbs.GetDatabasePageSize(&pageSize)); EXPECT_NE(kCurrentPageSizeKB, pageSize); - EXPECT_TRUE(dbs->UpdatePageSizeIfNecessary()); + EXPECT_TRUE(dbs.UpdatePageSizeIfNecessary()); pageSize = 0; - EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize)); + EXPECT_TRUE(dbs.GetDatabasePageSize(&pageSize)); EXPECT_EQ(kCurrentPageSizeKB, pageSize); } // See that a catastrophic error handler remains set across instances of the // underlying sql:Connection. TEST_F(DirectoryBackingStoreTest, CatastrophicErrorHandler_KeptAcrossReset) { - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath())); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); // See that by default there is no catastrophic error handler. - ASSERT_FALSE(dbs->db_->has_error_callback()); + ASSERT_FALSE(dbs.db_->has_error_callback()); // Set one and see that it was set. - dbs->SetCatastrophicErrorHandler( + dbs.SetCatastrophicErrorHandler( base::Bind(&CatastrophicErrorHandler, nullptr)); - ASSERT_TRUE(dbs->db_->has_error_callback()); + EXPECT_TRUE(dbs.db_->has_error_callback()); // Recreate the Connection and see that the handler remains set. - dbs->ResetAndCreateConnection(); - ASSERT_TRUE(dbs->db_->has_error_callback()); + dbs.ResetAndCreateConnection(); + EXPECT_TRUE(dbs.db_->has_error_callback()); } // Verify that database corruption encountered during Load will trigger the @@ -4490,44 +4447,40 @@ const base::Closure handler = base::Bind(&CatastrophicErrorHandler, &was_called); { - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), - GetDatabasePath())); - dbs->SetCatastrophicErrorHandler(handler); - ASSERT_TRUE(dbs->db_->has_error_callback()); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); + dbs.SetCatastrophicErrorHandler(handler); + EXPECT_TRUE(dbs.db_->has_error_callback()); // Load the DB, and save one entry. - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - ASSERT_FALSE(dbs->DidFailFirstOpenAttempt()); + ASSERT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + EXPECT_FALSE(dbs.DidFailFirstOpenAttempt()); Directory::SaveChangesSnapshot snapshot; snapshot.dirty_metas.insert(CreateEntry(2, "")); - ASSERT_TRUE(dbs->SaveChanges(snapshot)); + ASSERT_TRUE(dbs.SaveChanges(snapshot)); } base::RunLoop().RunUntilIdle(); // No catastrophic errors have happened. See that it hasn't be called yet. - ASSERT_FALSE(was_called); + EXPECT_FALSE(was_called); // Corrupt the DB. Some forms of corruption (like this one) will be detected // upon loading the Sync DB. ASSERT_TRUE(sql::test::CorruptSizeInHeader(GetDatabasePath())); { - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), - GetDatabasePath())); - dbs->SetCatastrophicErrorHandler(handler); - ASSERT_TRUE(dbs->db_->has_error_callback()); - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); + dbs.SetCatastrophicErrorHandler(handler); + EXPECT_TRUE(dbs.db_->has_error_callback()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); // See that the first open failed as expected. - ASSERT_TRUE(dbs->DidFailFirstOpenAttempt()); + EXPECT_TRUE(dbs.DidFailFirstOpenAttempt()); } // At this point the handler has been posted but not executed. - ASSERT_FALSE(was_called); + EXPECT_FALSE(was_called); // Pump the message loop and see that it is executed. base::RunLoop().RunUntilIdle(); - ASSERT_TRUE(was_called); + EXPECT_TRUE(was_called); } // Verify that database corruption encountered during SaveChanges will trigger @@ -4538,28 +4491,27 @@ const base::Closure handler = base::Bind(&CatastrophicErrorHandler, &was_called); // Create a DB with many entries. - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs( - new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath())); - dbs->SetCatastrophicErrorHandler(handler); - ASSERT_TRUE(dbs->db_->has_error_callback()); - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); - ASSERT_FALSE(dbs->DidFailFirstOpenAttempt()); + OnDiskDirectoryBackingStoreForTest dbs(GetUsername(), GetDatabasePath()); + dbs.SetCatastrophicErrorHandler(handler); + EXPECT_TRUE(dbs.db_->has_error_callback()); + EXPECT_TRUE(LoadAndIgnoreReturnedData(&dbs)); + EXPECT_FALSE(dbs.DidFailFirstOpenAttempt()); Directory::SaveChangesSnapshot snapshot; const std::string suffix(400, 'o'); for (size_t i = 0; i < 100; ++i) { snapshot.dirty_metas.insert(CreateEntry(i, suffix)); } - ASSERT_TRUE(dbs->SaveChanges(snapshot)); + ASSERT_TRUE(dbs.SaveChanges(snapshot)); // Corrupt the database on disk. ASSERT_TRUE(sql::test::CorruptSizeInHeaderWithLock(GetDatabasePath())); // Attempt to save all those entries again. See that it fails (because of the // corruption). - ASSERT_FALSE(dbs->SaveChanges(snapshot)); + EXPECT_FALSE(dbs.SaveChanges(snapshot)); // At this point the handler has been posted but not executed. - ASSERT_FALSE(was_called); + EXPECT_FALSE(was_called); // Pump the message loop and see that it is executed. base::RunLoop().RunUntilIdle(); - ASSERT_TRUE(was_called); + EXPECT_TRUE(was_called); } } // namespace syncable
diff --git a/components/test/run_all_unittests.cc b/components/test/run_all_unittests.cc index fcaa81b..fca628c6 100644 --- a/components/test/run_all_unittests.cc +++ b/components/test/run_all_unittests.cc
@@ -17,5 +17,5 @@ components::CreateUnittestsCatalog()); #endif - return base::LaunchUnitTests(argc, argv, callback); + return base::LaunchUnitTests(argc, argv, std::move(callback)); }
diff --git a/components/version_ui/resources/about_version.html b/components/version_ui/resources/about_version.html index b4fcf4c..db3ff36 100644 --- a/components/version_ui/resources/about_version.html +++ b/components/version_ui/resources/about_version.html
@@ -141,9 +141,9 @@ <td class="version-wide" id="variations-cmd"></td> </tr> <if expr="is_win"> - <tr id="compiler-section"> - <td class="label">Compiler</td> - <td class="version" id="compiler">$i18n{compiler}</td> + <tr id="linker-section"> + <td class="label">Linker</td> + <td class="version" id="linker">$i18n{linker}</td> </tr> </if> </table>
diff --git a/components/version_ui/version_ui_constants.cc b/components/version_ui/version_ui_constants.cc index b11022a..8d1a9bd 100644 --- a/components/version_ui/version_ui_constants.cc +++ b/components/version_ui/version_ui_constants.cc
@@ -27,7 +27,6 @@ const char kCommandLineName[] = "command_line_name"; const char kCompany[] = "company"; #if defined(OS_WIN) -const char kCompiler[] = "compiler"; const char kUpdateCohortName[] = "update_cohort_name"; #endif const char kCopyright[] = "copyright";
diff --git a/components/version_ui/version_ui_constants.h b/components/version_ui/version_ui_constants.h index fea46c0..5d5d8a8a 100644 --- a/components/version_ui/version_ui_constants.h +++ b/components/version_ui/version_ui_constants.h
@@ -33,7 +33,6 @@ extern const char kCommandLineName[]; extern const char kCompany[]; #if defined(OS_WIN) -extern const char kCompiler[]; extern const char kUpdateCohortName[]; #endif extern const char kCopyright[];
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc index 6300f92..c47abb4 100644 --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc
@@ -1456,9 +1456,14 @@ #endif #if BUILDFLAG(ENABLE_WEBRTC) - webrtc_event_log_manager_.reset( - WebRtcEventLogManager::CreateSingletonInstance()); - webrtc_internals_.reset(WebRTCInternals::CreateSingletonInstance()); + // WebRtcEventLogManager must be instantiated before WebRTCInternals, since + // the latter uses the former. Both are instantiated once, here, then live + // forever. When Chrome shuts down, they are allowed to be leaked. This allows + // us to be confident that messages posted to the internal task queue of + // WebRtcEventLogManager with base::Unretained(this), are always OK, and that + // subobjects are similarly always alive. + WebRtcEventLogManager::CreateSingletonInstance(); + WebRTCInternals::CreateSingletonInstance(); #endif // RDH needs the IO thread to be created
diff --git a/content/browser/browser_main_loop.h b/content/browser/browser_main_loop.h index db783e76..14adc47b 100644 --- a/content/browser/browser_main_loop.h +++ b/content/browser/browser_main_loop.h
@@ -105,11 +105,6 @@ class TracingControllerImpl; struct MainFunctionParams; -#if BUILDFLAG(ENABLE_WEBRTC) -class WebRTCInternals; -class WebRtcEventLogManager; -#endif - #if defined(OS_ANDROID) class ScreenOrientationDelegate; #endif @@ -381,11 +376,6 @@ std::unique_ptr<media::DeviceMonitorMac> device_monitor_mac_; #endif -#if BUILDFLAG(ENABLE_WEBRTC) - std::unique_ptr<WebRtcEventLogManager> webrtc_event_log_manager_; - std::unique_ptr<WebRTCInternals> webrtc_internals_; -#endif - std::unique_ptr<LoaderDelegateImpl> loader_delegate_; std::unique_ptr<ResourceDispatcherHostImpl> resource_dispatcher_host_; std::unique_ptr<MediaStreamManager> media_stream_manager_;
diff --git a/content/browser/devtools/protocol/browser_handler.cc b/content/browser/devtools/protocol/browser_handler.cc index aed9964..7e03482 100644 --- a/content/browser/devtools/protocol/browser_handler.cc +++ b/content/browser/devtools/protocol/browser_handler.cc
@@ -112,7 +112,7 @@ return Response::OK(); } -Response BrowserHandler::GetCommandLine( +Response BrowserHandler::GetBrowserCommandLine( std::unique_ptr<protocol::Array<String>>* arguments) { *arguments = protocol::Array<String>::create(); base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
diff --git a/content/browser/devtools/protocol/browser_handler.h b/content/browser/devtools/protocol/browser_handler.h index 8af1d28e..b4f3e05 100644 --- a/content/browser/devtools/protocol/browser_handler.h +++ b/content/browser/devtools/protocol/browser_handler.h
@@ -34,7 +34,7 @@ const std::string& in_name, std::unique_ptr<Browser::Histogram>* out_histogram) override; - Response GetCommandLine( + Response GetBrowserCommandLine( std::unique_ptr<protocol::Array<String>>* arguments) override; private:
diff --git a/content/browser/devtools/protocol_config.json b/content/browser/devtools/protocol_config.json index 4e9d341c..f40789f 100644 --- a/content/browser/devtools/protocol_config.json +++ b/content/browser/devtools/protocol_config.json
@@ -11,7 +11,7 @@ "options": [ { "domain": "Browser", - "include": ["getVersion", "getHistograms", "getHistogram", "getCommandLine"] + "include": ["getVersion", "getHistograms", "getHistogram", "getBrowserCommandLine"] }, { "domain": "DOM",
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc index 5de5bfb..f33998c 100644 --- a/content/browser/frame_host/frame_tree_node.cc +++ b/content/browser/frame_host/frame_tree_node.cc
@@ -603,7 +603,8 @@ expected_pending_nav_entry_id = navigation_request_->navigation_handle()->pending_nav_entry_id(); } - navigator_->DiscardPendingEntryIfNeeded(expected_pending_nav_entry_id); + navigator_->DiscardPendingEntryIfNeeded(expected_pending_nav_entry_id, + false /* is_download */); } ResetNavigationRequest(false, true); }
diff --git a/content/browser/frame_host/navigation_controller_impl_browsertest.cc b/content/browser/frame_host/navigation_controller_impl_browsertest.cc index 0cb359a..7add424f 100644 --- a/content/browser/frame_host/navigation_controller_impl_browsertest.cc +++ b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
@@ -8024,4 +8024,22 @@ EXPECT_TRUE(capturer.is_same_document()); } +IN_PROC_BROWSER_TEST_F(ContentBrowserTest, HideDownloadFromUnmodifiedNewTab) { + GURL url("data:application/octet-stream,"); + + const NavigationControllerImpl& controller = + static_cast<const NavigationControllerImpl&>( + shell()->web_contents()->GetController()); + + OpenURLParams params(url, Referrer(), WindowOpenDisposition::CURRENT_TAB, + ui::PAGE_TRANSITION_LINK, true); + params.suggested_filename = std::string("foo"); + + shell()->web_contents()->OpenURL(params); + WaitForLoadStop(shell()->web_contents()); + + EXPECT_FALSE(controller.GetPendingEntry()); + EXPECT_FALSE(controller.GetVisibleEntry()); +} + } // namespace content
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc index 2b5446b5..25c58f38 100644 --- a/content/browser/frame_host/navigation_request.cc +++ b/content/browser/frame_host/navigation_request.cc
@@ -995,11 +995,15 @@ if (navigation_handle_.get()) navigation_handle_->set_net_error_code(static_cast<net::Error>(net_error)); - int expected_pending_entry_id = - navigation_handle_.get() ? navigation_handle_->pending_nav_entry_id() - : nav_entry_id_; + int expected_pending_entry_id = nav_entry_id_; + bool is_download = false; + if (navigation_handle_.get()) { + expected_pending_entry_id = navigation_handle_->pending_nav_entry_id(); + is_download = navigation_handle_->IsDownload(); + } + frame_tree_node_->navigator()->DiscardPendingEntryIfNeeded( - expected_pending_entry_id); + expected_pending_entry_id, is_download); // If the request was canceled by the user do not show an error page. if (net_error == net::ERR_ABORTED) {
diff --git a/content/browser/frame_host/navigator.h b/content/browser/frame_host/navigator.h index 771a0b9..e93b664 100644 --- a/content/browser/frame_host/navigator.h +++ b/content/browser/frame_host/navigator.h
@@ -199,7 +199,8 @@ // With sufficiently bad interleaving of IPCs, this may no longer be the // pending NavigationEntry, in which case the pending NavigationEntry will not // be discarded. - virtual void DiscardPendingEntryIfNeeded(int expected_pending_entry_id) {} + virtual void DiscardPendingEntryIfNeeded(int expected_pending_entry_id, + bool is_download) {} protected: friend class base::RefCounted<Navigator>;
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc index f48d0f2..194b79b 100644 --- a/content/browser/frame_host/navigator_impl.cc +++ b/content/browser/frame_host/navigator_impl.cc
@@ -237,11 +237,13 @@ } // Discard the pending navigation entry if needed. - int expected_pending_entry_id = - render_frame_host->GetNavigationHandle() - ? render_frame_host->GetNavigationHandle()->pending_nav_entry_id() - : 0; - DiscardPendingEntryIfNeeded(expected_pending_entry_id); + int expected_pending_entry_id = 0; + if (render_frame_host->GetNavigationHandle()) { + expected_pending_entry_id = + render_frame_host->GetNavigationHandle()->pending_nav_entry_id(); + DCHECK(!render_frame_host->GetNavigationHandle()->IsDownload()); + } + DiscardPendingEntryIfNeeded(expected_pending_entry_id, false); } void NavigatorImpl::DidFailLoadWithError( @@ -982,14 +984,15 @@ } } -void NavigatorImpl::DiscardPendingEntryIfNeeded(int expected_pending_entry_id) { +void NavigatorImpl::DiscardPendingEntryIfNeeded(int expected_pending_entry_id, + bool is_download) { // Racy conditions can cause a fail message to arrive after its corresponding // pending entry has been replaced by another navigation. If // |DiscardPendingEntry| is called in this case, then the completely valid // entry for the new navigation would be discarded. See crbug.com/513742. To // catch this case, the current pending entry is compared against the current // navigation handle's entry id, which should correspond to the failed load. - NavigationEntry* pending_entry = controller_->GetPendingEntry(); + NavigationEntryImpl* pending_entry = controller_->GetPendingEntry(); bool pending_matches_fail_msg = pending_entry && expected_pending_entry_id == pending_entry->GetUniqueID(); @@ -1010,9 +1013,13 @@ // allow the view to clear the pending entry and typed URL if the user // requests (e.g., hitting Escape with focus in the address bar). // + // Note that the pending entry does not need to be preserved for downloads, + // since the user is unlikely to try again. + // // Note: don't touch the transient entry, since an interstitial may exist. - bool should_preserve_entry = controller_->IsUnmodifiedBlankTab() || - delegate_->ShouldPreserveAbortedURLs(); + bool should_preserve_entry = (controller_->IsUnmodifiedBlankTab() || + delegate_->ShouldPreserveAbortedURLs()) && + !is_download; if (pending_entry != controller_->GetVisibleEntry() || !should_preserve_entry) { controller_->DiscardPendingEntry(true);
diff --git a/content/browser/frame_host/navigator_impl.h b/content/browser/frame_host/navigator_impl.h index a1bedd3..07a1a12 100644 --- a/content/browser/frame_host/navigator_impl.h +++ b/content/browser/frame_host/navigator_impl.h
@@ -106,7 +106,8 @@ const base::TimeTicks& renderer_before_unload_end_time) override; void CancelNavigation(FrameTreeNode* frame_tree_node, bool inform_renderer) override; - void DiscardPendingEntryIfNeeded(int expected_pending_entry_id) override; + void DiscardPendingEntryIfNeeded(int expected_pending_entry_id, + bool is_download) override; private: // Holds data used to track browser side navigation metrics.
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc index 283d3ba..7ee614e7 100644 --- a/content/browser/frame_host/render_frame_host_manager.cc +++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -508,9 +508,12 @@ // already updated its state properly, and doesn't need to be notified. if (speculative_render_frame_host_->GetNavigationHandle() && request.from_begin_navigation()) { + DCHECK(!speculative_render_frame_host_->GetNavigationHandle() + ->IsDownload()); frame_tree_node_->navigator()->DiscardPendingEntryIfNeeded( speculative_render_frame_host_->GetNavigationHandle() - ->pending_nav_entry_id()); + ->pending_nav_entry_id(), + false /* is_download */); } DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); } @@ -547,9 +550,12 @@ if (speculative_render_frame_host_ && speculative_render_frame_host_->GetNavigationHandle() && request.from_begin_navigation()) { + DCHECK(!speculative_render_frame_host_->GetNavigationHandle() + ->IsDownload()); frame_tree_node_->navigator()->DiscardPendingEntryIfNeeded( speculative_render_frame_host_->GetNavigationHandle() - ->pending_nav_entry_id()); + ->pending_nav_entry_id(), + false /* is_download */); } // If a previous speculative RenderFrameHost didn't exist or if its
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc index c0d08d1b..a3322f6b 100644 --- a/content/browser/loader/navigation_url_loader_network_service.cc +++ b/content/browser/loader/navigation_url_loader_network_service.cc
@@ -250,6 +250,8 @@ new_request->fetch_credentials_mode = network::mojom::FetchCredentialsMode::kInclude; new_request->fetch_redirect_mode = network::mojom::FetchRedirectMode::kManual; + new_request->fetch_request_context_type = + request_info->begin_params->request_context_type; return new_request; } @@ -337,7 +339,8 @@ resource_context_, url_request_context_getter), base::BindRepeating( &URLLoaderRequestController::CreateURLLoaderThrottles, - base::Unretained(this)))); + base::Unretained(this)), + url_request_context_getter)); } // The ResourceDispatcherHostImpl can be null in unit tests. @@ -480,7 +483,8 @@ default_url_loader_factory_getter_->GetNetworkFactory(), base::BindRepeating( &URLLoaderRequestController::CreateURLLoaderThrottles, - base::Unretained(this)))); + base::Unretained(this)), + url_request_context_getter)); } Restart();
diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/browser/web_package/signed_exchange_handler.cc index da36b355..d164bb5 100644 --- a/content/browser/web_package/signed_exchange_handler.cc +++ b/content/browser/web_package/signed_exchange_handler.cc
@@ -5,20 +5,28 @@ #include "content/browser/web_package/signed_exchange_handler.h" #include "base/feature_list.h" +#include "base/strings/string_number_conversions.h" #include "components/cbor/cbor_reader.h" #include "content/browser/loader/merkle_integrity_source_stream.h" #include "content/browser/web_package/signed_exchange_cert_fetcher.h" #include "content/browser/web_package/signed_exchange_consts.h" #include "content/browser/web_package/signed_exchange_header_parser.h" +#include "content/browser/web_package/signed_exchange_signature_verifier.h" #include "content/public/common/content_features.h" #include "content/public/common/shared_url_loader_factory.h" #include "content/public/common/url_loader_throttle.h" #include "mojo/public/cpp/system/string_data_pipe_producer.h" #include "net/base/io_buffer.h" +#include "net/cert/cert_status_flags.h" +#include "net/cert/cert_verifier.h" #include "net/cert/x509_certificate.h" #include "net/filter/source_stream.h" #include "net/http/http_response_headers.h" #include "net/http/http_util.h" +#include "net/ssl/ssl_config.h" +#include "net/ssl/ssl_config_service.h" +#include "net/url_request/url_request_context.h" +#include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/resource_response.h" #include "services/network/public/cpp/url_loader_completion_status.h" @@ -31,6 +39,8 @@ constexpr char kMiHeader[] = "MI"; +net::CertVerifier* g_cert_verifier_for_testing = nullptr; + cbor::CBORValue BytestringFromString(base::StringPiece in_string) { return cbor::CBORValue( std::vector<uint8_t>(in_string.begin(), in_string.end())); @@ -65,17 +75,28 @@ } // namespace +// static +void SignedExchangeHandler::SetCertVerifierForTesting( + net::CertVerifier* cert_verifier) { + g_cert_verifier_for_testing = cert_verifier; +} + SignedExchangeHandler::SignedExchangeHandler( std::unique_ptr<net::SourceStream> body, ExchangeHeadersCallback headers_callback, url::Origin request_initiator, scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter) + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter) : headers_callback_(std::move(headers_callback)), source_(std::move(body)), request_initiator_(std::move(request_initiator)), url_loader_factory_(std::move(url_loader_factory)), url_loader_throttles_getter_(std::move(url_loader_throttles_getter)), + request_context_getter_(std::move(request_context_getter)), + net_log_(net::NetLogWithSource::Make( + request_context_getter_->GetURLRequestContext()->net_log(), + net::NetLogSourceType::CERT_VERIFIER_JOB)), weak_factory_(this) { DCHECK(base::FeatureList::IsEnabled(features::kSignedHTTPExchange)); @@ -114,6 +135,8 @@ return; } + // TODO(https://crbug.com/815019): This logic can cause browser-side DoS. We + // MUST fix it before shipping. original_body_string_.append(read_buf_->data(), result); if (completed_syncly) { @@ -209,8 +232,18 @@ } base::StringPiece status_code_str = status_iter->second.GetBytestringAsString(); + int status_code; + if (!base::StringToInt(status_code_str, &status_code)) { + DVLOG(1) << "Invalid status code " << status_code_str; + return false; + } base::Optional<std::vector<SignedExchangeHeaderParser::Signature>> signatures; + // TODO(https://crbug.com/803774): Rename + // SignedExchangeSignatureVerifier::Input to SignedExchangeSignatureHeader and + // implement the following logic in SignedExchangeHeaderParser. + auto verifier_input = + std::make_unique<SignedExchangeSignatureVerifier::Input>(); std::string fake_header_str("HTTP/1.1 "); status_code_str.AppendToString(&fake_header_str); @@ -225,13 +258,18 @@ if (name == kMethodKey) continue; + // TODO(https://crbug.com/803774): Stop going through + // net::HttpResponseHeaders but just use + // SignedExchangeSignatureVerifier::Input. + // TODO(https://crbug.com/803774): Check that name and value don't contain + // special characters using IsValidHeaderName and IsValidHeaderValue. name.AppendToString(&fake_header_str); fake_header_str.append(": "); value.AppendToString(&fake_header_str); fake_header_str.append("\r\n"); - if (std::string(name) == "signature") { + if (name == "signature") signatures = SignedExchangeHeaderParser::ParseSignature(value); - } + verifier_input->response_headers[name.as_string()] = value.as_string(); } fake_header_str.append("\r\n"); response_head_.headers = base::MakeRefCounted<net::HttpResponseHeaders>( @@ -256,15 +294,26 @@ if (!signatures || signatures->empty()) return false; + verifier_input->method = request_method_; + verifier_input->url = request_url_.spec(); + verifier_input->response_code = status_code; + verifier_input->signature = (*signatures)[0]; + + // Copy |cert_url| to keep after |verifier_input| is passed to base::BindOnce. + const GURL cert_url = verifier_input->signature.cert_url; + // TODO(https://crbug.com/819467): When we will support ed25519Key, |cert_url| + // may be empty. + DCHECK(cert_url.is_valid()); + DCHECK(url_loader_factory_); DCHECK(url_loader_throttles_getter_); std::vector<std::unique_ptr<URLLoaderThrottle>> throttles = std::move(url_loader_throttles_getter_).Run(); cert_fetcher_ = SignedExchangeCertFetcher::CreateAndStart( - std::move(url_loader_factory_), std::move(throttles), - GURL((*signatures)[0].cert_url), std::move(request_initiator_), false, + std::move(url_loader_factory_), std::move(throttles), cert_url, + std::move(request_initiator_), false, base::BindOnce(&SignedExchangeHandler::OnCertReceived, - base::Unretained(this))); + base::Unretained(this), std::move(verifier_input))); return true; } @@ -276,17 +325,73 @@ } void SignedExchangeHandler::OnCertReceived( + std::unique_ptr<SignedExchangeSignatureVerifier::Input> verifier_input, scoped_refptr<net::X509Certificate> cert) { if (!cert) { DVLOG(1) << "Fetching certificate error"; RunErrorCallback(net::ERR_FAILED); return; } - // TODO(https://crbug.com/803774): Verify the certificate and generate a - // SSLInfo. + verifier_input->certificate = cert; + if (SignedExchangeSignatureVerifier::Verify(*verifier_input) != + SignedExchangeSignatureVerifier::Result::kSuccess) { + RunErrorCallback(net::ERR_FAILED); + return; + } + net::URLRequestContext* request_context = + request_context_getter_->GetURLRequestContext(); + if (!request_context) { + RunErrorCallback(net::ERR_CONTEXT_SHUT_DOWN); + return; + } + + unverified_cert_ = cert; + + net::SSLConfig config; + request_context->ssl_config_service()->GetSSLConfig(&config); + + net::CertVerifier* cert_verifier = g_cert_verifier_for_testing + ? g_cert_verifier_for_testing + : request_context->cert_verifier(); + // TODO(https://crbug.com/815024): Get the OCSP response from the + // “status_request” extension of the main-certificate, and check the lifetime + // (nextUpdate - thisUpdate) is less than 7 days. + int result = cert_verifier->Verify( + net::CertVerifier::RequestParams( + unverified_cert_, request_url_.host(), config.GetCertVerifyFlags(), + std::string() /* ocsp_response */, net::CertificateList()), + net::SSLConfigService::GetCRLSet().get(), &cert_verify_result_, + base::BindRepeating(&SignedExchangeHandler::OnCertVerifyComplete, + base::Unretained(this)), + &cert_verifier_request_, net_log_); + // TODO(https://crbug.com/803774): Avoid these recursive patterns by using + // explicit state machines (eg: DoLoop() in //net). + if (result != net::ERR_IO_PENDING) + OnCertVerifyComplete(result); +} + +void SignedExchangeHandler::OnCertVerifyComplete(int result) { + if (result != net::OK) { + DVLOG(1) << "Certificate verification error: " << result; + RunErrorCallback(static_cast<net::Error>(result)); + return; + } + + net::SSLInfo ssl_info; + ssl_info.cert = cert_verify_result_.verified_cert; + ssl_info.unverified_cert = unverified_cert_; + ssl_info.cert_status = cert_verify_result_.cert_status; + ssl_info.is_issued_by_known_root = + cert_verify_result_.is_issued_by_known_root; + ssl_info.public_key_hashes = cert_verify_result_.public_key_hashes; + ssl_info.ocsp_result = cert_verify_result_.ocsp_result; + ssl_info.is_fatal_cert_error = + net::IsCertStatusError(ssl_info.cert_status) && + !net::IsCertStatusMinorError(ssl_info.cert_status); + // TODO(https://crbug.com/815025): Verify the Certificate Transparency status. std::move(headers_callback_) .Run(net::OK, request_url_, request_method_, response_head_, - std::move(mi_stream_), base::Optional<net::SSLInfo>()); + std::move(mi_stream_), ssl_info); } } // namespace content
diff --git a/content/browser/web_package/signed_exchange_handler.h b/content/browser/web_package/signed_exchange_handler.h index 648fb01..c1fc20f 100644 --- a/content/browser/web_package/signed_exchange_handler.h +++ b/content/browser/web_package/signed_exchange_handler.h
@@ -9,18 +9,26 @@ #include "base/callback.h" #include "base/optional.h" +#include "content/browser/web_package/signed_exchange_signature_verifier.h" #include "content/common/content_export.h" #include "content/public/common/shared_url_loader_factory.h" #include "mojo/public/cpp/system/data_pipe.h" #include "net/base/completion_callback.h" +#include "net/cert/cert_verifier.h" +#include "net/cert/cert_verify_result.h" +#include "net/log/net_log_with_source.h" #include "net/ssl/ssl_info.h" #include "services/network/public/cpp/resource_response.h" #include "url/gurl.h" #include "url/origin.h" namespace net { +class CertVerifier; +class CertVerifyResult; class SourceStream; -} +class URLRequestContextGetter; +class X509Certificate; +} // namespace net namespace content { @@ -29,7 +37,7 @@ class URLLoaderThrottle; class MerkleIntegritySourceStream; -// IMPORTANT: Currenly SignedExchangeHandler doesn't implement any verifying +// IMPORTANT: Currenly SignedExchangeHandler partially implements the verifying // logic. // TODO(https://crbug.com/803774): Implement verifying logic. class CONTENT_EXPORT SignedExchangeHandler { @@ -46,6 +54,10 @@ using URLLoaderThrottlesGetter = base::RepeatingCallback< std::vector<std::unique_ptr<content::URLLoaderThrottle>>()>; + // TODO(https://crbug.com/817187): Find a more sophisticated way to use a + // MockCertVerifier in browser tests instead of using the static method. + static void SetCertVerifierForTesting(net::CertVerifier* cert_verifier); + // Once constructed |this| starts reading the |body| and parses the response // as a signed HTTP exchange. The response body of the exchange can be read // from |payload_stream| passed to |headers_callback|. |url_loader_factory| @@ -56,7 +68,8 @@ ExchangeHeadersCallback headers_callback, url::Origin request_initiator, scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter); + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter); ~SignedExchangeHandler(); protected: @@ -68,7 +81,10 @@ bool RunHeadersCallback(); void RunErrorCallback(net::Error); - void OnCertReceived(scoped_refptr<net::X509Certificate> cert); + void OnCertReceived( + std::unique_ptr<SignedExchangeSignatureVerifier::Input> verifier_input, + scoped_refptr<net::X509Certificate> cert); + void OnCertVerifyComplete(int result); // Signed exchange contents. GURL request_url_; @@ -94,6 +110,19 @@ std::unique_ptr<SignedExchangeCertFetcher> cert_fetcher_; + scoped_refptr<net::URLRequestContextGetter> request_context_getter_; + + scoped_refptr<net::X509Certificate> unverified_cert_; + + // CertVerifyResult must be freed after the Request has been destructed. + // So |cert_verify_result_| must be written before |cert_verifier_request_|. + net::CertVerifyResult cert_verify_result_; + std::unique_ptr<net::CertVerifier::Request> cert_verifier_request_; + + // TODO(https://crbug.com/767450): figure out what we should do for NetLog + // with Network Service. + net::NetLogWithSource net_log_; + base::WeakPtrFactory<SignedExchangeHandler> weak_factory_; DISALLOW_COPY_AND_ASSIGN(SignedExchangeHandler);
diff --git a/content/browser/web_package/signed_exchange_header_parser.cc b/content/browser/web_package/signed_exchange_header_parser.cc index c1e7f87..78d8d88 100644 --- a/content/browser/web_package/signed_exchange_header_parser.cc +++ b/content/browser/web_package/signed_exchange_header_parser.cc
@@ -9,6 +9,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" +#include "crypto/sha2.h" namespace content { @@ -213,12 +214,42 @@ Signature& sig = signatures.back(); sig.label = value.label; sig.sig = value.params["sig"]; + if (sig.sig.empty()) { + DVLOG(1) << "ParseSignature: 'sig' parameter is not set"; + return base::nullopt; + } sig.integrity = value.params["integrity"]; - sig.cert_url = value.params["certUrl"]; - sig.cert_sha256 = value.params["certSha256"]; - sig.ed25519_key = value.params["ed25519Key"]; - sig.validity_url = value.params["validityUrl"]; - + if (sig.integrity.empty()) { + DVLOG(1) << "ParseSignature: 'integrity' parameter is not set"; + return base::nullopt; + } + sig.cert_url = GURL(value.params["certUrl"]); + if (!sig.cert_url.is_valid()) { + // TODO(https://crbug.com/819467) : When we will support "ed25519Key", the + // params may not have "certUrl". + DVLOG(1) << "ParseSignature: 'certUrl' parameter is not a valid URL: " + << value.params["certUrl"]; + return base::nullopt; + } + const std::string cert_sha256_string = value.params["certSha256"]; + if (cert_sha256_string.size() != crypto::kSHA256Length) { + // TODO(https://crbug.com/819467) : When we will support "ed25519Key", the + // params may not have "certSha256". + DVLOG(1) << "ParseSignature: 'certSha256' parameter is not a valid " + "SHA-256 digest."; + return base::nullopt; + } + net::SHA256HashValue cert_sha256; + memcpy(&cert_sha256.data, cert_sha256_string.data(), crypto::kSHA256Length); + sig.cert_sha256 = std::move(cert_sha256); + // TODO(https://crbug.com/819467): Support ed25519key. + // sig.ed25519_key = value.params["ed25519Key"]; + sig.validity_url = GURL(value.params["validityUrl"]); + if (!sig.validity_url.is_valid()) { + DVLOG(1) << "ParseSignature: 'validityUrl' parameter is not a valid URL: " + << value.params["validityUrl"]; + return base::nullopt; + } if (!base::StringToUint64(value.params["date"], &sig.date)) { DVLOG(1) << "ParseSignature: 'date' parameter is not a number: " << sig.date; @@ -229,18 +260,6 @@ << sig.expires; return base::nullopt; } - - bool has_cert = !sig.cert_url.empty() && !sig.cert_sha256.empty(); - bool has_ed25519_key = !sig.ed25519_key.empty(); - if (sig.sig.empty() || sig.integrity.empty() || sig.validity_url.empty() || - (!has_cert && !has_ed25519_key)) { - DVLOG(1) << "ParseSignature: incomplete signature"; - return base::nullopt; - } - if (has_cert && has_ed25519_key) { - DVLOG(1) << "ParseSignature: signature has both certUrl and ed25519Key"; - return base::nullopt; - } } return signatures; }
diff --git a/content/browser/web_package/signed_exchange_header_parser.h b/content/browser/web_package/signed_exchange_header_parser.h index e2a884ceb..74a34d5 100644 --- a/content/browser/web_package/signed_exchange_header_parser.h +++ b/content/browser/web_package/signed_exchange_header_parser.h
@@ -8,10 +8,13 @@ #include <stdint.h> #include <string> #include <vector> + #include "base/macros.h" #include "base/optional.h" #include "base/strings/string_piece.h" #include "content/common/content_export.h" +#include "net/base/hash_value.h" +#include "url/gurl.h" namespace content { @@ -27,10 +30,11 @@ std::string label; std::string sig; std::string integrity; - std::string cert_url; - std::string cert_sha256; - std::string ed25519_key; - std::string validity_url; + GURL cert_url; + base::Optional<net::SHA256HashValue> cert_sha256; + // TODO(https://crbug.com/819467): Support ed25519key. + // std::string ed25519_key; + GURL validity_url; uint64_t date; uint64_t expires; };
diff --git a/content/browser/web_package/signed_exchange_header_parser_unittest.cc b/content/browser/web_package/signed_exchange_header_parser_unittest.cc index eb6e18c8..7569563 100644 --- a/content/browser/web_package/signed_exchange_header_parser_unittest.cc +++ b/content/browser/web_package/signed_exchange_header_parser_unittest.cc
@@ -55,13 +55,15 @@ " certUrl=\"https://example.com/oldcerts\";" " certSha256=*W7uB969dFW3Mb5ZefPS9Tq5ZbH5iSmOILpjv2qEArmI;" " date=1511128380; expires=1511733180," - "srisig;" - " sig=*lGZVaJJM5f2oGczFlLmBdKTDL+QADza4BgeO494ggACYJOvrof6uh5OJCcwKrk7DK+" - "LBch0jssDYPp5CLc1SDA;" + "sig2;" + " sig=*MEQCIGjZRqTRf9iKNkGFyzRMTFgwf/BrY2ZNIP/dykhUV0aYAiBTXg+8wujoT4n/W+" + "cNgb7pGqQvIUGYZ8u8HZJ5YH26Qg;" " integrity=\"mi\";" " validityUrl=\"https://example.com/resource.validity.1511128380\";" - " ed25519Key=*zsSevyFsxyZHiUluVBDd4eypdRLTqyWRVOJuuKUz+A8;" + " certUrl=\"https://example.com/newcerts\";" + " certSha256=*J/lEm9kNRODdCmINbvitpvdYKNQ+YgBj99DlYp4fEXw;" " date=1511128380; expires=1511733180"; + const uint8_t decoded_sig1[] = { 0x30, 0x45, 0x02, 0x21, 0x00, 0xd7, 0x94, 0x8d, 0xa0, 0x37, 0x74, 0x4d, 0x06, 0x58, 0x05, 0x8a, 0xe4, 0x4d, 0x16, 0x96, 0x57, 0x70, 0x32, 0x1a, @@ -69,24 +71,24 @@ 0x2c, 0x02, 0x20, 0x6b, 0xd0, 0xec, 0x54, 0xe3, 0x0c, 0xfa, 0x0e, 0x58, 0xa7, 0x01, 0x01, 0x74, 0x65, 0xb7, 0xb1, 0x2f, 0x9b, 0xbe, 0x79, 0x80, 0x24, 0x98, 0x92, 0x33, 0x08, 0x6e, 0x05, 0xda, 0xa9, 0xe5, 0x46}; - const uint8_t decoded_cert_sha256[] = { - 0x5b, 0xbb, 0x81, 0xf7, 0xaf, 0x5d, 0x15, 0x6d, 0xcc, 0x6f, 0x96, - 0x5e, 0x7c, 0xf4, 0xbd, 0x4e, 0xae, 0x59, 0x6c, 0x7e, 0x62, 0x4a, - 0x63, 0x88, 0x2e, 0x98, 0xef, 0xda, 0xa1, 0x00, 0xae, 0x62}; + const net::SHA256HashValue decoded_cert_sha256_1 = { + {0x5b, 0xbb, 0x81, 0xf7, 0xaf, 0x5d, 0x15, 0x6d, 0xcc, 0x6f, 0x96, + 0x5e, 0x7c, 0xf4, 0xbd, 0x4e, 0xae, 0x59, 0x6c, 0x7e, 0x62, 0x4a, + 0x63, 0x88, 0x2e, 0x98, 0xef, 0xda, 0xa1, 0x00, 0xae, 0x62}}; const uint8_t decoded_sig2[] = { - 0x94, 0x66, 0x55, 0x68, 0x92, 0x4c, 0xe5, 0xfd, 0xa8, 0x19, 0xcc, - 0xc5, 0x94, 0xb9, 0x81, 0x74, 0xa4, 0xc3, 0x2f, 0xe4, 0x00, 0x0f, - 0x36, 0xb8, 0x06, 0x07, 0x8e, 0xe3, 0xde, 0x20, 0x80, 0x00, 0x98, - 0x24, 0xeb, 0xeb, 0xa1, 0xfe, 0xae, 0x87, 0x93, 0x89, 0x09, 0xcc, - 0x0a, 0xae, 0x4e, 0xc3, 0x2b, 0xe2, 0xc1, 0x72, 0x1d, 0x23, 0xb2, - 0xc0, 0xd8, 0x3e, 0x9e, 0x42, 0x2d, 0xcd, 0x52, 0x0c}; - const uint8_t decoded_ed25519_key[] = { - 0xce, 0xc4, 0x9e, 0xbf, 0x21, 0x6c, 0xc7, 0x26, 0x47, 0x89, 0x49, - 0x6e, 0x54, 0x10, 0xdd, 0xe1, 0xec, 0xa9, 0x75, 0x12, 0xd3, 0xab, - 0x25, 0x91, 0x54, 0xe2, 0x6e, 0xb8, 0xa5, 0x33, 0xf8, 0x0f}; + 0x30, 0x44, 0x02, 0x20, 0x68, 0xd9, 0x46, 0xa4, 0xd1, 0x7f, 0xd8, 0x8a, + 0x36, 0x41, 0x85, 0xcb, 0x34, 0x4c, 0x4c, 0x58, 0x30, 0x7f, 0xf0, 0x6b, + 0x63, 0x66, 0x4d, 0x20, 0xff, 0xdd, 0xca, 0x48, 0x54, 0x57, 0x46, 0x98, + 0x02, 0x20, 0x53, 0x5e, 0x0f, 0xbc, 0xc2, 0xe8, 0xe8, 0x4f, 0x89, 0xff, + 0x5b, 0xe7, 0x0d, 0x81, 0xbe, 0xe9, 0x1a, 0xa4, 0x2f, 0x21, 0x41, 0x98, + 0x67, 0xcb, 0xbc, 0x1d, 0x92, 0x79, 0x60, 0x7d, 0xba, 0x42}; + const net::SHA256HashValue decoded_cert_sha256_2 = { + {0x27, 0xf9, 0x44, 0x9b, 0xd9, 0x0d, 0x44, 0xe0, 0xdd, 0x0a, 0x62, + 0x0d, 0x6e, 0xf8, 0xad, 0xa6, 0xf7, 0x58, 0x28, 0xd4, 0x3e, 0x62, + 0x00, 0x63, 0xf7, 0xd0, 0xe5, 0x62, 0x9e, 0x1f, 0x11, 0x7c}}; auto signatures = SignedExchangeHeaderParser::ParseSignature(hdr_string); - EXPECT_TRUE(signatures.has_value()); + ASSERT_TRUE(signatures.has_value()); ASSERT_EQ(signatures->size(), 2u); EXPECT_EQ(signatures->at(0).label, "sig1"); @@ -97,22 +99,19 @@ EXPECT_EQ(signatures->at(0).validity_url, "https://example.com/resource.validity.1511128380"); EXPECT_EQ(signatures->at(0).cert_url, "https://example.com/oldcerts"); - EXPECT_EQ(signatures->at(0).cert_sha256, - std::string(reinterpret_cast<const char*>(decoded_cert_sha256), - sizeof(decoded_cert_sha256))); + EXPECT_EQ(signatures->at(0).cert_sha256, decoded_cert_sha256_1); EXPECT_EQ(signatures->at(0).date, 1511128380ul); EXPECT_EQ(signatures->at(0).expires, 1511733180ul); - EXPECT_EQ(signatures->at(1).label, "srisig"); + EXPECT_EQ(signatures->at(1).label, "sig2"); EXPECT_EQ(signatures->at(1).sig, std::string(reinterpret_cast<const char*>(decoded_sig2), sizeof(decoded_sig2))); EXPECT_EQ(signatures->at(1).integrity, "mi"); EXPECT_EQ(signatures->at(1).validity_url, "https://example.com/resource.validity.1511128380"); - EXPECT_EQ(signatures->at(1).ed25519_key, - std::string(reinterpret_cast<const char*>(decoded_ed25519_key), - sizeof(decoded_ed25519_key))); + EXPECT_EQ(signatures->at(1).cert_url, "https://example.com/newcerts"); + EXPECT_EQ(signatures->at(1).cert_sha256, decoded_cert_sha256_2); EXPECT_EQ(signatures->at(1).date, 1511128380ul); EXPECT_EQ(signatures->at(1).expires, 1511733180ul); } @@ -131,21 +130,6 @@ EXPECT_FALSE(signatures.has_value()); } -TEST_F(SignedExchangeHeaderParserTest, HasBothCertAndEd25519Key) { - const char hdr_string[] = - "sig1;" - " sig=*MEUCIQDXlI2gN3RNBlgFiuRNFpZXcDIaUpX6HIEwcZEc0cZYLAIga9DsVOMM+" - "g5YpwEBdGW3sS+bvnmAJJiSMwhuBdqp5UY;" - " integrity=\"mi\";" - " validityUrl=\"https://example.com/resource.validity.1511128380\";" - " certUrl=\"https://example.com/oldcerts\";" - " certSha256=*W7uB969dFW3Mb5ZefPS9Tq5ZbH5iSmOILpjv2qEArmI;" - " ed25519Key=*zsSevyFsxyZHiUluVBDd4eypdRLTqyWRVOJuuKUz+A8;" - " date=1511128380; expires=1511733180"; - auto signatures = SignedExchangeHeaderParser::ParseSignature(hdr_string); - EXPECT_FALSE(signatures.has_value()); -} - TEST_F(SignedExchangeHeaderParserTest, DuplicatedParam) { const char hdr_string[] = "sig1;" @@ -161,4 +145,46 @@ EXPECT_FALSE(signatures.has_value()); } +TEST_F(SignedExchangeHeaderParserTest, InvalidCertURL) { + const char hdr_string[] = + "sig1;" + " sig=*MEUCIQDXlI2gN3RNBlgFiuRNFpZXcDIaUpX6HIEwcZEc0cZYLAIga9DsVOMM+" + "g5YpwEBdGW3sS+bvnmAJJiSMwhuBdqp5UY;" + " integrity=\"mi\";" + " validityUrl=\"https://example.com/resource.validity.1511128380\";" + " certUrl=\"https:://example.com/oldcerts\";" + " certSha256=*W7uB969dFW3Mb5ZefPS9Tq5ZbH5iSmOILpjv2qEArmI;" + " date=1511128380; expires=1511733180"; + auto signatures = SignedExchangeHeaderParser::ParseSignature(hdr_string); + EXPECT_FALSE(signatures.has_value()); +} + +TEST_F(SignedExchangeHeaderParserTest, InvalidValidityUrl) { + const char hdr_string[] = + "sig1;" + " sig=*MEUCIQDXlI2gN3RNBlgFiuRNFpZXcDIaUpX6HIEwcZEc0cZYLAIga9DsVOMM+" + "g5YpwEBdGW3sS+bvnmAJJiSMwhuBdqp5UY;" + " integrity=\"mi\";" + " validityUrl=\"https:://example.com/resource.validity.1511128380\";" + " certUrl=\"https://example.com/oldcerts\";" + " certSha256=*W7uB969dFW3Mb5ZefPS9Tq5ZbH5iSmOILpjv2qEArmI;" + " date=1511128380; expires=1511733180"; + auto signatures = SignedExchangeHeaderParser::ParseSignature(hdr_string); + EXPECT_FALSE(signatures.has_value()); +} + +TEST_F(SignedExchangeHeaderParserTest, InvalidCertSHA256) { + const char hdr_string[] = + "sig1;" + " sig=*MEUCIQDXlI2gN3RNBlgFiuRNFpZXcDIaUpX6HIEwcZEc0cZYLAIga9DsVOMM+" + "g5YpwEBdGW3sS+bvnmAJJiSMwhuBdqp5UY;" + " integrity=\"mi\";" + " validityUrl=\"https://example.com/resource.validity.1511128380\";" + " certUrl=\"https://example.com/oldcerts\";" + " certSha256=*W7uB969dFW3Mb5ZefPS9;" + " date=1511128380; expires=1511733180"; + auto signatures = SignedExchangeHeaderParser::ParseSignature(hdr_string); + EXPECT_FALSE(signatures.has_value()); +} + } // namespace content
diff --git a/content/browser/web_package/signed_exchange_signature_verifier.cc b/content/browser/web_package/signed_exchange_signature_verifier.cc index 64254bc..4967cee 100644 --- a/content/browser/web_package/signed_exchange_signature_verifier.cc +++ b/content/browser/web_package/signed_exchange_signature_verifier.cc
@@ -116,15 +116,19 @@ cbor::CBORValue::MapValue map; // 11.4.1. "If certSha256 is set: The text string "certSha256" to the byte // string value of certSha256." [spec text] - if (!input.signature.cert_sha256.empty()) { - map.insert_or_assign(cbor::CBORValue(kCertSha256Key), - cbor::CBORValue(input.signature.cert_sha256, - cbor::CBORValue::Type::BYTE_STRING)); + if (input.signature.cert_sha256.has_value()) { + map.insert_or_assign( + cbor::CBORValue(kCertSha256Key), + cbor::CBORValue( + base::StringPiece(reinterpret_cast<const char*>( + input.signature.cert_sha256->data), + sizeof(input.signature.cert_sha256->data)), + cbor::CBORValue::Type::BYTE_STRING)); } // 11.4.2. "The text string "validityUrl" to the byte string value of // validityUrl." [spec text] map.insert_or_assign(cbor::CBORValue(kValidityUrlKey), - cbor::CBORValue(input.signature.validity_url, + cbor::CBORValue(input.signature.validity_url.spec(), cbor::CBORValue::Type::BYTE_STRING)); // 11.4.3. "The text string "date" to the integer value of date." [spec text] if (!base::IsValueInRangeForNumericType<int64_t>(input.signature.date)) @@ -214,14 +218,30 @@ SignedExchangeSignatureVerifier::Input::~Input() = default; -bool SignedExchangeSignatureVerifier::Verify(const Input& input) { - // TODO(crbug.com/803774): Verify input.signature.certSha256 against - // input.certificate. +SignedExchangeSignatureVerifier::Result SignedExchangeSignatureVerifier::Verify( + const Input& input) { + if (!input.certificate) { + DVLOG(1) << "No certificate set."; + return Result::kErrNoCertificate; + } + + if (!input.signature.cert_sha256.has_value()) { + DVLOG(1) << "No certSha256 set."; + return Result::kErrNoCertificateSHA256; + } + + // The main-certificate is the first certificate in certificate-chain. + if (*input.signature.cert_sha256 != + net::X509Certificate::CalculateFingerprint256( + input.certificate->cert_buffer())) { + DVLOG(1) << "certSha256 mismatch."; + return Result::kErrCertificateSHA256Mismatch; + } auto message = GenerateSignedMessage(input); if (!message) { DVLOG(1) << "Failed to reconstruct signed message."; - return false; + return Result::kErrInvalidSignatureFormat; } const std::string& sig = input.signature.sig; @@ -230,18 +250,18 @@ sig.size()), *message, input.certificate)) { DVLOG(1) << "Failed to verify signature \"sig\"."; - return false; + return Result::kErrSignatureVerificationFailed; } if (!base::EqualsCaseInsensitiveASCII(input.signature.integrity, "mi")) { DVLOG(1) << "The current implemention only supports \"mi\" integrity scheme."; - return false; + return Result::kErrInvalidSignatureIntegrity; } // TODO(crbug.com/803774): Verify input.signature.{date,expires}. - return true; + return Result::kSuccess; } base::Optional<std::vector<uint8_t>>
diff --git a/content/browser/web_package/signed_exchange_signature_verifier.h b/content/browser/web_package/signed_exchange_signature_verifier.h index d30dde0..e16fa838 100644 --- a/content/browser/web_package/signed_exchange_signature_verifier.h +++ b/content/browser/web_package/signed_exchange_signature_verifier.h
@@ -44,7 +44,17 @@ scoped_refptr<net::X509Certificate> certificate; }; - static bool Verify(const Input& input); + enum class Result { + kSuccess, + kErrNoCertificate, + kErrNoCertificateSHA256, + kErrCertificateSHA256Mismatch, + kErrInvalidSignatureFormat, + kErrSignatureVerificationFailed, + kErrInvalidSignatureIntegrity + }; + + static Result Verify(const Input& input); static base::Optional<std::vector<uint8_t>> EncodeCanonicalExchangeHeaders( const Input& input);
diff --git a/content/browser/web_package/signed_exchange_signature_verifier_unittest.cc b/content/browser/web_package/signed_exchange_signature_verifier_unittest.cc index 17ade678..54af4fe 100644 --- a/content/browser/web_package/signed_exchange_signature_verifier_unittest.cc +++ b/content/browser/web_package/signed_exchange_signature_verifier_unittest.cc
@@ -128,15 +128,26 @@ input.signature = (*signature)[0]; input.certificate = certlist[0]; - EXPECT_TRUE(SignedExchangeSignatureVerifier::Verify(input)); + EXPECT_EQ(SignedExchangeSignatureVerifier::Result::kSuccess, + SignedExchangeSignatureVerifier::Verify(input)); SignedExchangeSignatureVerifier::Input corrupted_input(input); corrupted_input.url = "https://example.com/bad.html"; - EXPECT_FALSE(SignedExchangeSignatureVerifier::Verify(corrupted_input)); + EXPECT_EQ( + SignedExchangeSignatureVerifier::Result::kErrSignatureVerificationFailed, + SignedExchangeSignatureVerifier::Verify(corrupted_input)); SignedExchangeSignatureVerifier::Input badsig_input(input); badsig_input.signature.sig[0]++; - EXPECT_FALSE(SignedExchangeSignatureVerifier::Verify(badsig_input)); + EXPECT_EQ( + SignedExchangeSignatureVerifier::Result::kErrSignatureVerificationFailed, + SignedExchangeSignatureVerifier::Verify(badsig_input)); + + SignedExchangeSignatureVerifier::Input badsigsha256_input(input); + badsigsha256_input.signature.cert_sha256->data[0]++; + EXPECT_EQ( + SignedExchangeSignatureVerifier::Result::kErrCertificateSHA256Mismatch, + SignedExchangeSignatureVerifier::Verify(badsigsha256_input)); } } // namespace
diff --git a/content/browser/web_package/signed_exchange_url_loader_factory_for_non_network_service.h b/content/browser/web_package/signed_exchange_url_loader_factory_for_non_network_service.h index 8ae02c93..5de19e5a 100644 --- a/content/browser/web_package/signed_exchange_url_loader_factory_for_non_network_service.h +++ b/content/browser/web_package/signed_exchange_url_loader_factory_for_non_network_service.h
@@ -14,7 +14,6 @@ namespace content { -class URLRequestContextGetter; class ResourceContext; // A URLLoaderFactory used for fetching certificate of signed HTTP exchange
diff --git a/content/browser/web_package/web_package_loader.cc b/content/browser/web_package/web_package_loader.cc index d055039..17bfb72ff 100644 --- a/content/browser/web_package/web_package_loader.cc +++ b/content/browser/web_package/web_package_loader.cc
@@ -15,6 +15,7 @@ #include "content/public/common/shared_url_loader_factory.h" #include "net/cert/cert_status_flags.h" #include "net/http/http_util.h" +#include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/url_loader_completion_status.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" @@ -79,7 +80,8 @@ url::Origin request_initiator, uint32_t url_loader_options, scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter) + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter) : original_response_timing_info_( std::make_unique<ResponseTimingInfo>(original_response)), forwarding_client_(std::move(forwarding_client)), @@ -88,6 +90,7 @@ url_loader_options_(url_loader_options), url_loader_factory_(std::move(url_loader_factory)), url_loader_throttles_getter_(std::move(url_loader_throttles_getter)), + request_context_getter_(std::move(request_context_getter)), weak_factory_(this) { DCHECK(base::FeatureList::IsEnabled(features::kSignedHTTPExchange)); url_loader_.Bind(std::move(endpoints->url_loader)); @@ -171,7 +174,8 @@ base::BindOnce(&WebPackageLoader::OnHTTPExchangeFound, weak_factory_.GetWeakPtr()), std::move(request_initiator_), std::move(url_loader_factory_), - std::move(url_loader_throttles_getter_)); + std::move(url_loader_throttles_getter_), + std::move(request_context_getter_)); } void WebPackageLoader::OnComplete(
diff --git a/content/browser/web_package/web_package_loader.h b/content/browser/web_package/web_package_loader.h index 80fbddf9..2ebf52d5 100644 --- a/content/browser/web_package/web_package_loader.h +++ b/content/browser/web_package/web_package_loader.h
@@ -17,6 +17,7 @@ namespace net { class SourceStream; +class URLRequestContextGetter; } // namespace net namespace content { @@ -38,13 +39,15 @@ using URLLoaderThrottlesGetter = base::RepeatingCallback< std::vector<std::unique_ptr<content::URLLoaderThrottle>>()>; - WebPackageLoader(const network::ResourceResponseHead& original_response, - network::mojom::URLLoaderClientPtr forwarding_client, - network::mojom::URLLoaderClientEndpointsPtr endpoints, - url::Origin request_initiator, - uint32_t url_loader_options, - scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter); + WebPackageLoader( + const network::ResourceResponseHead& original_response, + network::mojom::URLLoaderClientPtr forwarding_client, + network::mojom::URLLoaderClientEndpointsPtr endpoints, + url::Origin request_initiator, + uint32_t url_loader_options, + scoped_refptr<SharedURLLoaderFactory> url_loader_factory, + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter); ~WebPackageLoader() override; // network::mojom::URLLoaderClient implementation @@ -123,6 +126,7 @@ const uint32_t url_loader_options_; scoped_refptr<SharedURLLoaderFactory> url_loader_factory_; URLLoaderThrottlesGetter url_loader_throttles_getter_; + scoped_refptr<net::URLRequestContextGetter> request_context_getter_; base::Optional<net::SSLInfo> ssl_info_;
diff --git a/content/browser/web_package/web_package_prefetch_handler.cc b/content/browser/web_package/web_package_prefetch_handler.cc index 0827f95..fea0efb 100644 --- a/content/browser/web_package/web_package_prefetch_handler.cc +++ b/content/browser/web_package/web_package_prefetch_handler.cc
@@ -56,7 +56,8 @@ web_package_loader_ = std::make_unique<WebPackageLoader>( response, std::move(client), std::move(endpoints), std::move(request_initiator), network::mojom::kURLLoadOptionNone, - std::move(url_loader_factory), loader_throttles_getter); + std::move(url_loader_factory), loader_throttles_getter, + request_context_getter); } WebPackagePrefetchHandler::~WebPackagePrefetchHandler() = default;
diff --git a/content/browser/web_package/web_package_request_handler.cc b/content/browser/web_package/web_package_request_handler.cc index 91a5860..a8a62be 100644 --- a/content/browser/web_package/web_package_request_handler.cc +++ b/content/browser/web_package/web_package_request_handler.cc
@@ -14,6 +14,7 @@ #include "content/public/common/shared_url_loader_factory.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "net/http/http_response_headers.h" +#include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/resource_response.h" #include "services/network/public/mojom/url_loader.mojom.h" @@ -30,11 +31,13 @@ url::Origin request_initiator, uint32_t url_loader_options, scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter) + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter) : request_initiator_(std::move(request_initiator)), url_loader_options_(url_loader_options), url_loader_factory_(url_loader_factory), url_loader_throttles_getter_(std::move(url_loader_throttles_getter)), + request_context_getter_(std::move(request_context_getter)), weak_factory_(this) { DCHECK(base::FeatureList::IsEnabled(features::kSignedHTTPExchange)); } @@ -79,7 +82,8 @@ web_package_loader_ = std::make_unique<WebPackageLoader>( response, std::move(client), url_loader->Unbind(), std::move(request_initiator_), url_loader_options_, - std::move(url_loader_factory_), std::move(url_loader_throttles_getter_)); + std::move(url_loader_factory_), std::move(url_loader_throttles_getter_), + std::move(request_context_getter_)); return true; }
diff --git a/content/browser/web_package/web_package_request_handler.h b/content/browser/web_package/web_package_request_handler.h index dda5c7e..e64841d 100644 --- a/content/browser/web_package/web_package_request_handler.h +++ b/content/browser/web_package/web_package_request_handler.h
@@ -10,6 +10,10 @@ #include "content/public/common/resource_type.h" #include "url/origin.h" +namespace net { +class URLRequestContextGetter; +} // namespace net + namespace content { class SharedURLLoaderFactory; @@ -27,7 +31,8 @@ url::Origin request_initiator, uint32_t url_loader_options, scoped_refptr<SharedURLLoaderFactory> url_loader_factory, - URLLoaderThrottlesGetter url_loader_throttles_getter); + URLLoaderThrottlesGetter url_loader_throttles_getter, + scoped_refptr<net::URLRequestContextGetter> request_context_getter); ~WebPackageRequestHandler() override; // URLLoaderRequestHandler implementation @@ -53,6 +58,7 @@ const uint32_t url_loader_options_; scoped_refptr<SharedURLLoaderFactory> url_loader_factory_; URLLoaderThrottlesGetter url_loader_throttles_getter_; + scoped_refptr<net::URLRequestContextGetter> request_context_getter_; base::WeakPtrFactory<WebPackageRequestHandler> weak_factory_;
diff --git a/content/browser/web_package/web_package_request_handler_browsertest.cc b/content/browser/web_package/web_package_request_handler_browsertest.cc index ff5805c05..f3dd933 100644 --- a/content/browser/web_package/web_package_request_handler_browsertest.cc +++ b/content/browser/web_package/web_package_request_handler_browsertest.cc
@@ -7,9 +7,11 @@ #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" #include "base/threading/thread_restrictions.h" +#include "content/browser/web_package/signed_exchange_handler.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/navigation_handle.h" +#include "content/public/browser/ssl_status.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/common/content_features.h" @@ -20,6 +22,9 @@ #include "content/public/test/test_navigation_throttle.h" #include "content/public/test/url_loader_interceptor.h" #include "content/shell/browser/shell.h" +#include "net/cert/cert_verify_result.h" +#include "net/cert/mock_cert_verifier.h" +#include "net/test/cert_test_util.h" #include "net/test/test_data_directory.h" #include "net/test/url_request/url_request_mock_http_job.h" #include "net/url_request/url_request_filter.h" @@ -64,10 +69,12 @@ : public ContentBrowserTest, public testing::WithParamInterface<bool> { public: - WebPackageRequestHandlerBrowserTest() = default; + WebPackageRequestHandlerBrowserTest() + : mock_cert_verifier_(std::make_unique<net::MockCertVerifier>()){}; ~WebPackageRequestHandlerBrowserTest() = default; void SetUp() override { + SignedExchangeHandler::SetCertVerifierForTesting(mock_cert_verifier_.get()); if (is_network_service_enabled()) { feature_list_.InitWithFeatures( {features::kSignedHTTPExchange, network::features::kNetworkService}, @@ -78,9 +85,20 @@ ContentBrowserTest::SetUp(); } - void TearDownOnMainThread() override { interceptor_.reset(); } + void TearDownOnMainThread() override { + interceptor_.reset(); + SignedExchangeHandler::SetCertVerifierForTesting(nullptr); + } protected: + static scoped_refptr<net::X509Certificate> LoadCertificate( + const std::string& cert_file) { + base::ScopedAllowBlockingForTesting allow_io; + return net::CreateCertificateChainFromFile( + net::GetTestCertsDirectory(), cert_file, + net::X509Certificate::FORMAT_PEM_CERT_SEQUENCE); + } + void InstallUrlInterceptor(const GURL& url, const std::string& data_path) { if (base::FeatureList::IsEnabled(network::features::kNetworkService)) { if (!interceptor_) { @@ -97,6 +115,8 @@ } } + std::unique_ptr<net::MockCertVerifier> mock_cert_verifier_; + private: static std::string ReadFile(const std::string& data_path) { base::ScopedAllowBlockingForTesting allow_io; @@ -153,6 +173,16 @@ GURL("https://cert.example.org/cert.msg"), "content/test/data/htxg/wildcard_example.org.public.pem.msg"); + // Make the MockCertVerifier treat the certificate "wildcard.pem" as valid for + // "*.example.org". + scoped_refptr<net::X509Certificate> original_cert = + LoadCertificate("wildcard.pem"); + net::CertVerifyResult dummy_result; + dummy_result.verified_cert = original_cert; + dummy_result.cert_status = net::OK; + mock_cert_verifier_->AddResultForCertAndHost(original_cert, "*.example.org", + dummy_result, net::OK); + embedded_test_server()->ServeFilesFromSourceDirectory("content/test/data"); ASSERT_TRUE(embedded_test_server()->Start()); GURL url = embedded_test_server()->GetURL("/htxg/test.example.org_test.htxg"); @@ -160,6 +190,23 @@ TitleWatcher title_watcher(shell()->web_contents(), title); NavigateToURL(shell(), url); EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); + + NavigationEntry* entry = + shell()->web_contents()->GetController().GetVisibleEntry(); + EXPECT_TRUE(entry->GetSSL().initialized); + EXPECT_FALSE(!!(entry->GetSSL().content_status & + SSLStatus::DISPLAYED_INSECURE_CONTENT)); + ASSERT_TRUE(entry->GetSSL().certificate); + + // "wildcard_example.org.public.pem.msg" is generated from "wildcard.pem". So + // the SHA256 of the certificates must match. + const net::SHA256HashValue fingerprint = + net::X509Certificate::CalculateFingerprint256( + entry->GetSSL().certificate->cert_buffer()); + const net::SHA256HashValue original_fingerprint = + net::X509Certificate::CalculateFingerprint256( + original_cert->cert_buffer()); + EXPECT_EQ(original_fingerprint, fingerprint); } IN_PROC_BROWSER_TEST_P(WebPackageRequestHandlerBrowserTest, CertNotFound) { @@ -178,6 +225,60 @@ EXPECT_EQ(content::PAGE_TYPE_ERROR, entry->GetPageType()); } +IN_PROC_BROWSER_TEST_P(WebPackageRequestHandlerBrowserTest, + CertSha256Mismatch) { + // The certificate is for "127.0.0.1". And the SHA 256 hash of the certificate + // is different from the certSha256 of the signature in the htxg file. So the + // certification verification must fail. + InstallUrlInterceptor(GURL("https://cert.example.org/cert.msg"), + "content/test/data/htxg/127.0.0.1.public.pem.msg"); + + // Set the default result of MockCertVerifier to OK, to check that the + // verification of SignedExchange must fail even if the certificate is valid. + mock_cert_verifier_->set_default_result(net::OK); + + embedded_test_server()->ServeFilesFromSourceDirectory("content/test/data"); + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url = embedded_test_server()->GetURL("/htxg/test.example.org_test.htxg"); + + NavigationFailureObserver failure_observer(shell()->web_contents()); + NavigateToURL(shell(), url); + EXPECT_TRUE(failure_observer.did_fail()); + NavigationEntry* entry = + shell()->web_contents()->GetController().GetVisibleEntry(); + EXPECT_EQ(content::PAGE_TYPE_ERROR, entry->GetPageType()); +} + +IN_PROC_BROWSER_TEST_P(WebPackageRequestHandlerBrowserTest, VerifyCertFailure) { + // The certificate is for "*.example.com". But the request URL of the htxg + // file is "https://test.example.com/test/". So the certification verification + // must fail. + InstallUrlInterceptor( + GURL("https://cert.example.org/cert.msg"), + "content/test/data/htxg/wildcard_example.org.public.pem.msg"); + + // Make the MockCertVerifier treat the certificate "wildcard.pem" as valid for + // "*.example.org". + scoped_refptr<net::X509Certificate> original_cert = + LoadCertificate("wildcard.pem"); + net::CertVerifyResult dummy_result; + dummy_result.verified_cert = original_cert; + dummy_result.cert_status = net::OK; + mock_cert_verifier_->AddResultForCertAndHost(original_cert, "*.example.org", + dummy_result, net::OK); + + embedded_test_server()->ServeFilesFromSourceDirectory("content/test/data"); + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url = embedded_test_server()->GetURL( + "/htxg/test.example.com_invalid_test.htxg"); + NavigationFailureObserver failure_observer(shell()->web_contents()); + NavigateToURL(shell(), url); + EXPECT_TRUE(failure_observer.did_fail()); + NavigationEntry* entry = + shell()->web_contents()->GetController().GetVisibleEntry(); + EXPECT_EQ(content::PAGE_TYPE_ERROR, entry->GetPageType()); +} + INSTANTIATE_TEST_CASE_P(WebPackageRequestHandlerBrowserTest, WebPackageRequestHandlerBrowserTest, testing::Bool());
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index 37cdca7..e0f2b82e 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn
@@ -45,8 +45,6 @@ "child_process_sandbox_support_impl_linux.h", "child_thread_impl.cc", "child_thread_impl.h", - "content_child_helpers.cc", - "content_child_helpers.h", "dwrite_font_proxy/dwrite_font_proxy_init_impl_win.cc", "dwrite_font_proxy/dwrite_font_proxy_init_impl_win.h", "dwrite_font_proxy/dwrite_font_proxy_win.cc",
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc index d96f505..af7c45f 100644 --- a/content/child/blink_platform_impl.cc +++ b/content/child/blink_platform_impl.cc
@@ -40,7 +40,6 @@ #include "content/app/resources/grit/content_resources.h" #include "content/app/strings/grit/content_strings.h" #include "content/child/child_thread_impl.h" -#include "content/child/content_child_helpers.h" #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" #include "content/public/common/service_manager_connection.h" @@ -744,10 +743,6 @@ return false; } -size_t BlinkPlatformImpl::ActualMemoryUsageMB() { - return GetMemoryUsageKB() >> 10; -} - size_t BlinkPlatformImpl::NumberOfProcessors() { return static_cast<size_t>(base::SysInfo::NumberOfProcessors()); }
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h index 24be824..f220e2d 100644 --- a/content/child/blink_platform_impl.h +++ b/content/child/blink_platform_impl.h
@@ -71,7 +71,6 @@ const blink::WebSecurityOrigin& origin) override; bool DatabaseSetFileSize(const blink::WebString& vfs_file_name, long long size) override; - size_t ActualMemoryUsageMB() override; size_t NumberOfProcessors() override; size_t MaxDecodedImageBytes() override;
diff --git a/content/child/content_child_helpers.cc b/content/child/content_child_helpers.cc deleted file mode 100644 index 7ddeb4d1..0000000 --- a/content/child/content_child_helpers.cc +++ /dev/null
@@ -1,65 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/child/content_child_helpers.h" - -#include <stdint.h> - -#include <memory> - -#include "base/logging.h" -#include "base/process/process_metrics.h" -#include "build/build_config.h" -#include "v8/include/v8.h" - -#if defined(OS_LINUX) -#include <malloc.h> -#endif - -namespace content { - -// TODO(primiano): get rid of this file together with --memory-metrics. -// This function is both misplaced and misnamed. If useful, this should -// be moved to base/process/process_metrics.h. Regardless the name, -// though, this provides only a partial and misleading value. -// Unfortunately some telemetry benchmark rely on it and these need to -// be refactored before getting rid of this. See crbug.com/581365 . -#if defined(OS_LINUX) || defined(OS_ANDROID) -size_t GetMemoryUsageKB() { - struct mallinfo minfo = mallinfo(); - uint64_t mem_usage = -#if defined(USE_TCMALLOC) - minfo.uordblks -#else - (minfo.hblkhd + minfo.arena) -#endif - >> 10; - - v8::HeapStatistics stat; - // TODO(svenpanne) The call below doesn't take web workers into account, this - // has to be done manually by iterating over all Isolates involved. - v8::Isolate* isolate = v8::Isolate::GetCurrent(); - if (isolate) - isolate->GetHeapStatistics(&stat); - return mem_usage + (static_cast<uint64_t>(stat.total_heap_size()) >> 10); -} -#elif defined(OS_MACOSX) -size_t GetMemoryUsageKB() { - std::unique_ptr<base::ProcessMetrics> process_metrics( - // The default port provider is sufficient to get data for the current - // process. - base::ProcessMetrics::CreateProcessMetrics( - base::GetCurrentProcessHandle(), NULL)); - return process_metrics->GetWorkingSetSize() >> 10; -} -#else -size_t GetMemoryUsageKB() { - std::unique_ptr<base::ProcessMetrics> process_metrics( - base::ProcessMetrics::CreateProcessMetrics( - base::GetCurrentProcessHandle())); - return process_metrics->GetPagefileUsage() >> 10; -} -#endif - -} // namespace content
diff --git a/content/child/content_child_helpers.h b/content/child/content_child_helpers.h deleted file mode 100644 index 33dc4ab9..0000000 --- a/content/child/content_child_helpers.h +++ /dev/null
@@ -1,20 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_CHILD_CONTENT_CHILD_HELPERS_H_ -#define CONTENT_CHILD_CONTENT_CHILD_HELPERS_H_ - -#include <stddef.h> - -namespace content { - -// Returns an estimate of the memory usage of the renderer process. Different -// platforms implement this function differently, and count in different -// allocations. Results are not comparable across platforms. The estimate is -// computed inside the sandbox and thus its not always accurate. -size_t GetMemoryUsageKB(); - -} // content - -#endif // CONTENT_CHILD_CONTENT_CHILD_HELPERS_H_
diff --git a/content/public/android/java/src/org/chromium/content/browser/MotionEventSynthesizer.java b/content/public/android/java/src/org/chromium/content/browser/MotionEventSynthesizer.java index 66155042..d2970a6d 100644 --- a/content/public/android/java/src/org/chromium/content/browser/MotionEventSynthesizer.java +++ b/content/public/android/java/src/org/chromium/content/browser/MotionEventSynthesizer.java
@@ -35,8 +35,9 @@ * @param x X coordinate of the point. * @param x Y coordinate of the point. * @param id Id property of the point. + * @param toolType ToolType property of the point. */ - public void setPointer(int index, int x, int y, int id) { + public void setPointer(int index, int x, int y, int id, int toolType) { assert (0 <= index && index < MAX_NUM_POINTERS); PointerCoords coords = new PointerCoords(); @@ -47,10 +48,23 @@ PointerProperties properties = new PointerProperties(); properties.id = id; + properties.toolType = toolType; mPointerProperties[index] = properties; } /** + * Sets the coordinate of the point at which a touch event takes place. + * + * @param index Index of the point when there are multiple points. + * @param x X coordinate of the point. + * @param x Y coordinate of the point. + * @param id Id property of the point. + */ + public void setPointer(int index, int x, int y, int id) { + setPointer(index, x, y, id, MotionEvent.TOOL_TYPE_UNKNOWN); + } + + /** * Sets the scroll delta against the origin point of a touch event. * * @param x X coordinate of the point.
diff --git a/content/public/common/manifest.h b/content/public/common/manifest.h index 6ff768c2..cb35e768 100644 --- a/content/public/common/manifest.h +++ b/content/public/common/manifest.h
@@ -66,8 +66,8 @@ ~ShareTarget(); // The URL template that contains placeholders to be replaced with shared - // data. Null if the parsing failed. - base::NullableString16 url_template; + // data. Empty if the parsing failed. + GURL url_template; }; // Structure representing a related application.
diff --git a/content/public/common/manifest_struct_traits.cc b/content/public/common/manifest_struct_traits.cc index e67c4eb3..e76c375 100644 --- a/content/public/common/manifest_struct_traits.cc +++ b/content/public/common/manifest_struct_traits.cc
@@ -147,11 +147,7 @@ content::Manifest::ShareTarget>:: Read(blink::mojom::ManifestShareTargetDataView data, content::Manifest::ShareTarget* out) { - TruncatedString16 string; - if (!data.ReadUrlTemplate(&string)) - return false; - out->url_template = base::NullableString16(std::move(string.string)); - return true; + return data.ReadUrlTemplate(&out->url_template); } } // namespace mojo
diff --git a/content/public/common/manifest_struct_traits.h b/content/public/common/manifest_struct_traits.h index 1c195d6..3124d0f 100644 --- a/content/public/common/manifest_struct_traits.h +++ b/content/public/common/manifest_struct_traits.h
@@ -142,9 +142,8 @@ template <> struct StructTraits<blink::mojom::ManifestShareTargetDataView, content::Manifest::ShareTarget> { - static base::Optional<base::StringPiece16> url_template( - const content::Manifest::ShareTarget& m) { - return internal::TruncateNullableString16(m.url_template); + static const GURL& url_template(const content::Manifest::ShareTarget& m) { + return m.url_template; } static bool Read(blink::mojom::ManifestShareTargetDataView data, content::Manifest::ShareTarget* out);
diff --git a/content/public/test/navigation_simulator.cc b/content/public/test/navigation_simulator.cc index 61c0368..298d64b0 100644 --- a/content/public/test/navigation_simulator.cc +++ b/content/public/test/navigation_simulator.cc
@@ -71,6 +71,8 @@ base::Closure on_will_process_response_; }; +int64_t g_unique_identifier = 0; + } // namespace // static @@ -427,8 +429,8 @@ // Simulate Blink assigning an item and document sequence number to the // navigation. - params.item_sequence_number = base::Time::Now().ToDoubleT() * 1000000; - params.document_sequence_number = params.item_sequence_number + 1; + params.item_sequence_number = ++g_unique_identifier; + params.document_sequence_number = ++g_unique_identifier; params.page_state = PageState::CreateForTestingWithSequenceNumbers( navigation_url_, params.item_sequence_number, @@ -525,8 +527,8 @@ // Simulate Blink assigning an item and document sequence number to the // navigation. - params.item_sequence_number = base::Time::Now().ToDoubleT() * 1000000; - params.document_sequence_number = params.item_sequence_number + 1; + params.item_sequence_number = ++g_unique_identifier; + params.document_sequence_number = ++g_unique_identifier; params.page_state = PageState::CreateForTestingWithSequenceNumbers( navigation_url_, params.item_sequence_number,
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc index b14c6a1c..d4ca2562 100644 --- a/content/renderer/input/main_thread_event_queue.cc +++ b/content/renderer/input/main_thread_event_queue.cc
@@ -97,13 +97,6 @@ bool IsWebInputEvent() const override { return true; } void Dispatch(MainThreadEventQueue* queue) override { - // Report the coalesced count only for continuous events; otherwise - // the zero value would be dominated by non-continuous events. - if (IsContinuousEvent()) { - UMA_HISTOGRAM_COUNTS_1000("Event.MainThreadEventQueue.CoalescedCount", - coalescedCount()); - } - HandledEventCallback callback = base::BindOnce(&QueuedWebInputEvent::HandledEvent, base::Unretained(this), base::RetainedRef(queue));
diff --git a/content/renderer/input/main_thread_event_queue_unittest.cc b/content/renderer/input/main_thread_event_queue_unittest.cc index aa33593c..073342f 100644 --- a/content/renderer/input/main_thread_event_queue_unittest.cc +++ b/content/renderer/input/main_thread_event_queue_unittest.cc
@@ -13,7 +13,6 @@ #include "base/metrics/field_trial.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" -#include "base/test/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_simple_task_runner.h" #include "build/build_config.h" @@ -44,9 +43,6 @@ // Simulate a 16ms frame signal. const base::TimeDelta kFrameInterval = base::TimeDelta::FromMilliseconds(16); -const char* kCoalescedCountHistogram = - "Event.MainThreadEventQueue.CoalescedCount"; - } // namespace class HandledTask { @@ -251,8 +247,6 @@ }; TEST_F(MainThreadEventQueueTest, NonBlockingWheel) { - base::HistogramTester histogram_tester; - WebMouseWheelEvent kEvents[4] = { SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 0, false), SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false), @@ -346,13 +340,9 @@ WebInputEvent::DispatchType::kListenersNonBlockingPassive; EXPECT_EQ(coalesced_event, *coalesced_wheel_event1); } - - histogram_tester.ExpectUniqueSample(kCoalescedCountHistogram, 1, 2); } TEST_F(MainThreadEventQueueTest, NonBlockingTouch) { - base::HistogramTester histogram_tester; - EXPECT_CALL(renderer_scheduler_, DidHandleInputEventOnMainThread(testing::_, testing::_)) .Times(3); @@ -446,13 +436,9 @@ WebInputEvent::DispatchType::kListenersNonBlockingPassive; EXPECT_EQ(coalesced_event, *coalesced_touch_event1); } - - histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 0, 1); - histogram_tester.ExpectBucketCount(kCoalescedCountHistogram, 1, 1); } TEST_F(MainThreadEventQueueTest, BlockingTouch) { - base::HistogramTester histogram_tester; SyntheticWebTouchEvent kEvents[4]; kEvents[0].PressPoint(10, 10); kEvents[1].PressPoint(10, 10); @@ -503,7 +489,6 @@ EXPECT_THAT(GetAndResetCallbackResults(), testing::Each(ReceivedCallback( CallbackReceivedState::kCalledWhileHandlingEvent, false))); - histogram_tester.ExpectUniqueSample(kCoalescedCountHistogram, 2, 2); } TEST_F(MainThreadEventQueueTest, InterleavedEvents) {
diff --git a/content/renderer/manifest/manifest_parser.cc b/content/renderer/manifest/manifest_parser.cc index faf66e6..bc4583e 100644 --- a/content/renderer/manifest/manifest_parser.cc +++ b/content/renderer/manifest/manifest_parser.cc
@@ -347,9 +347,10 @@ return icons; } -base::NullableString16 ManifestParser::ParseShareTargetURLTemplate( +GURL ManifestParser::ParseShareTargetURLTemplate( const base::DictionaryValue& share_target) { - return ParseString(share_target, "url_template", Trim); + return ParseURL(share_target, "url_template", manifest_url_, + ParseURLOriginRestrictions::kSameOriginOnly); } base::Optional<Manifest::ShareTarget> ManifestParser::ParseShareTarget( @@ -362,9 +363,8 @@ dictionary.GetDictionary("share_target", &share_target_dict); share_target.url_template = ParseShareTargetURLTemplate(*share_target_dict); - if (share_target.url_template.is_null()) { + if (share_target.url_template.is_empty()) return base::nullopt; - } return base::Optional<Manifest::ShareTarget>(share_target); }
diff --git a/content/renderer/manifest/manifest_parser.h b/content/renderer/manifest/manifest_parser.h index 30972b9..87fa1e2f 100644 --- a/content/renderer/manifest/manifest_parser.h +++ b/content/renderer/manifest/manifest_parser.h
@@ -158,10 +158,8 @@ // Parses the 'url_template' field of a Share Target, as defined in: // https://github.com/WICG/web-share-target/blob/master/docs/interface.md - // Returns the parsed string if any, or a null string if the field was not - // present, or didn't contain a string. - base::NullableString16 ParseShareTargetURLTemplate( - const base::DictionaryValue& share_target); + // Returns the parsed GURL if any, or an empty GURL if the parsing failed. + GURL ParseShareTargetURLTemplate(const base::DictionaryValue& share_target); // Parses the 'share_target' field of a Manifest, as defined in: // https://github.com/WICG/web-share-target/blob/master/docs/interface.md @@ -178,7 +176,7 @@ // Parses the 'url' field of a related application, as defined in: // https://w3c.github.io/manifest/#dfn-steps-for-processing-the-url-member-of-an-application - // Returns the paresed GURL if any, an empty GURL if the parsing failed. + // Returns the parsed GURL if any, an empty GURL if the parsing failed. GURL ParseRelatedApplicationURL(const base::DictionaryValue& application); // Parses the 'id' field of a related application, as defined in:
diff --git a/content/renderer/manifest/manifest_parser_unittest.cc b/content/renderer/manifest/manifest_parser_unittest.cc index df2da1014..be5a78a 100644 --- a/content/renderer/manifest/manifest_parser_unittest.cc +++ b/content/renderer/manifest/manifest_parser_unittest.cc
@@ -1005,13 +1005,17 @@ } TEST_F(ManifestParserTest, ShareTargetUrlTemplateParseRules) { + GURL manifest_url = GURL("https://foo.com/manifest.json"); + GURL document_url = GURL("https://foo.com/index.html"); + // Contains share_target and url_template, but url_template is empty. { - Manifest manifest = - ParseManifest("{ \"share_target\": { \"url_template\": \"\" } }"); + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": { \"url_template\": \"\" } }", manifest_url, + document_url); ASSERT_TRUE(manifest.share_target.has_value()); - EXPECT_TRUE(base::EqualsASCII( - manifest.share_target.value().url_template.string(), "")); + EXPECT_EQ(manifest.share_target.value().url_template.spec(), + manifest_url.spec()); EXPECT_FALSE(manifest.IsEmpty()); EXPECT_EQ(0u, GetErrorCount()); } @@ -1019,7 +1023,8 @@ // Don't parse if property isn't a string. { Manifest manifest = - ParseManifest("{ \"share_target\": { \"url_template\": {} } }"); + ParseManifestWithURLs("{ \"share_target\": { \"url_template\": {} } }", + manifest_url, document_url); EXPECT_FALSE(manifest.share_target.has_value()); EXPECT_TRUE(manifest.IsEmpty()); EXPECT_EQ(1u, GetErrorCount()); @@ -1030,7 +1035,8 @@ // Don't parse if property isn't a string. { Manifest manifest = - ParseManifest("{ \"share_target\": { \"url_template\": 42 } }"); + ParseManifestWithURLs("{ \"share_target\": { \"url_template\": 42 } }", + manifest_url, document_url); EXPECT_FALSE(manifest.share_target.has_value()); EXPECT_TRUE(manifest.IsEmpty()); EXPECT_EQ(1u, GetErrorCount()); @@ -1038,15 +1044,41 @@ errors()[0]); } + // Don't parse if property isn't a valid URL. + { + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": { \"url_template\": \"https://foo.com:a\" } " + "}", + manifest_url, document_url); + EXPECT_FALSE(manifest.share_target.has_value()); + EXPECT_TRUE(manifest.IsEmpty()); + EXPECT_EQ(1u, GetErrorCount()); + EXPECT_EQ("property 'url_template' ignored, URL is invalid.", errors()[0]); + } + + // Fail parsing if url_template is at a different origin than the Web + // Manifest. + { + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": { \"url_template\": \"https://foo2.com/\" } }", + manifest_url, document_url); + EXPECT_FALSE(manifest.share_target.has_value()); + EXPECT_TRUE(manifest.IsEmpty()); + EXPECT_EQ(1u, GetErrorCount()); + EXPECT_EQ( + "property 'url_template' ignored, should be same origin as document.", + errors()[0]); + } + // Smoke test: Contains share_target and url_template, and url_template is // valid template. { - Manifest manifest = ParseManifest( - "{ \"share_target\": {\"url_template\": \"share/?title={title}\" } }"); + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": {\"url_template\": \"share/?title={title}\" } }", + manifest_url, document_url); ASSERT_TRUE(manifest.share_target.has_value()); - EXPECT_TRUE( - base::EqualsASCII(manifest.share_target.value().url_template.string(), - "share/?title={title}")); + EXPECT_EQ(manifest.share_target.value().url_template.spec(), + "https://foo.com/share/?title={title}"); EXPECT_FALSE(manifest.IsEmpty()); EXPECT_EQ(0u, GetErrorCount()); } @@ -1054,12 +1086,41 @@ // Smoke test: Contains share_target and url_template, and url_template is // invalid template. { - Manifest manifest = ParseManifest( - "{ \"share_target\": {\"url_template\": \"share/?title={title\" } }"); + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": {\"url_template\": \"share/?title={title\" } }", + manifest_url, document_url); ASSERT_TRUE(manifest.share_target.has_value()); - EXPECT_TRUE( - base::EqualsASCII(manifest.share_target.value().url_template.string(), - "share/?title={title")); + EXPECT_EQ(manifest.share_target.value().url_template.spec(), + "https://foo.com/share/?title={title"); + EXPECT_FALSE(manifest.IsEmpty()); + EXPECT_EQ(0u, GetErrorCount()); + } + + // Smoke test: Contains share_target and url_template, and url_template has + // '{' and '}' in path, query and fragment. Only '{' and '}' in path should be + // escaped. + { + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": {\"url_template\": " + "\"share/a{text}/?title={title}#{frag}\" } }", + manifest_url, document_url); + ASSERT_TRUE(manifest.share_target.has_value()); + EXPECT_EQ(manifest.share_target.value().url_template.spec(), + "https://foo.com/share/a%7Btext%7D/?title={title}#{frag}"); + EXPECT_FALSE(manifest.IsEmpty()); + EXPECT_EQ(0u, GetErrorCount()); + } + + // Smoke test: Contains share_target and url_template. url_template is + // valid template and is absolute. + { + Manifest manifest = ParseManifestWithURLs( + "{ \"share_target\": { \"url_template\": \"https://foo.com/#{text}\" } " + "}", + manifest_url, document_url); + ASSERT_TRUE(manifest.share_target.has_value()); + EXPECT_EQ(manifest.share_target.value().url_template.spec(), + "https://foo.com/#{text}"); EXPECT_FALSE(manifest.IsEmpty()); EXPECT_EQ(0u, GetErrorCount()); }
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 262c94f6..0acda0a8 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -1384,6 +1384,8 @@ RenderMediaClient::Initialize(); + idle_timer_.SetTaskRunner(GetRendererScheduler()->DefaultTaskRunner()); + if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { ScheduleIdleHandler(kLongIdleHandlerDelayMs); } else {
diff --git a/content/shell/browser/shell.cc b/content/shell/browser/shell.cc index 20c1331..ef47bd27 100644 --- a/content/shell/browser/shell.cc +++ b/content/shell/browser/shell.cc
@@ -392,6 +392,7 @@ load_url_params.is_renderer_initiated = params.is_renderer_initiated; load_url_params.should_replace_current_entry = params.should_replace_current_entry; + load_url_params.suggested_filename = params.suggested_filename; if (params.uses_post) { load_url_params.load_type = NavigationController::LOAD_TYPE_HTTP_POST;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 7198af3..449b78c 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -460,6 +460,7 @@ "//content:sandbox_helper_win", "//third_party/iaccessible2", ] + libs = [ "oleacc.lib" ] } if (is_android) { @@ -993,8 +994,6 @@ "//third_party/isimpledom", ] - libs = [ "oleacc.lib" ] - if (symbol_level != 0) { data += [ "$root_out_dir/content_browsertests.exe.pdb" ] }
diff --git a/content/test/data/htxg/127.0.0.1.public.pem.msg b/content/test/data/htxg/127.0.0.1.public.pem.msg new file mode 100644 index 0000000..ae612984b --- /dev/null +++ b/content/test/data/htxg/127.0.0.1.public.pem.msg Binary files differ
diff --git a/content/test/data/htxg/README b/content/test/data/htxg/README index 5d1bc49..50a64c3 100644 --- a/content/test/data/htxg/README +++ b/content/test/data/htxg/README
@@ -21,10 +21,18 @@ ../../../../net/data/ssl/certificates/wildcard.pem \ > /tmp/wildcard_example.org.public.pem -# Generate the certificate message file. +# Generate the certificate message file of "*.example.org". gen-certurl \ /tmp/wildcard_example.org.public.pem > wildcard_example.org.public.pem.msg +# Get the public key of "127.0.0.1". +sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \ + ../../../../net/data/ssl/certificates/ok_cert.pem \ + > /tmp/127.0.0.1.public.pem + +# Generate the certificate message file of"127.0.0.1". +gen-certurl /tmp/127.0.0.1.public.pem > 127.0.0.1.public.pem.msg + # Generate the signed exchange file. gen-signedexchange \ -uri https://test.example.org/test/ \ @@ -35,4 +43,16 @@ -validityUrl https://cert.example.org/resource.validity.msg \ -privateKey /tmp/wildcard_example.org.private.pem \ -o test.example.org_test.htxg \ - -miRecordSize=100 + -miRecordSize 100 + +# Generate the signed exchange file with invalid URL. +gen-signedexchange \ + -uri https://test.example.com/test/ \ + -status 200 \ + -content test.html \ + -certificate /tmp/wildcard_example.org.public.pem \ + -certUrl https://cert.example.org/cert.msg \ + -validityUrl https://cert.example.org/resource.validity.msg \ + -privateKey /tmp/wildcard_example.org.private.pem \ + -o test.example.com_invalid_test.htxg \ + -miRecordSize 100
diff --git a/content/test/data/htxg/test.example.com_invalid_test.htxg b/content/test/data/htxg/test.example.com_invalid_test.htxg new file mode 100644 index 0000000..da10e45 --- /dev/null +++ b/content/test/data/htxg/test.example.com_invalid_test.htxg Binary files differ
diff --git a/content/test/data/htxg/test.example.com_invalid_test.htxg.mock-http-headers b/content/test/data/htxg/test.example.com_invalid_test.htxg.mock-http-headers new file mode 100644 index 0000000..acfdd18 --- /dev/null +++ b/content/test/data/htxg/test.example.com_invalid_test.htxg.mock-http-headers
@@ -0,0 +1,2 @@ +HTTP/1.1 200 OK +Content-Type: application/http-exchange+cbor
diff --git a/content/test/gpu/generate_buildbot_json.py b/content/test/gpu/generate_buildbot_json.py index 21e5aa8..4425d98 100755 --- a/content/test/gpu/generate_buildbot_json.py +++ b/content/test/gpu/generate_buildbot_json.py
@@ -1260,45 +1260,47 @@ ], }, - 'angle_deqp_gles2_vulkan_tests': { - 'tester_configs': [ - { - 'predicate': Predicates.DEQP, - 'swarming_dimension_sets': [ - # NVIDIA Win 10 - { - 'gpu': NVIDIA_QUADRO_P400_ALL_DRIVERS, - 'os': WIN10_NVIDIA_QUADRO_P400_STABLE_OS, - }, - # AMD Win 7 - { - 'gpu': '1002:6613', - 'os': 'Windows-2008ServerR2-SP1' - }, - # NVIDIA Linux Quadro P400 - { - 'gpu': LINUX_QUADRO_P400_STABLE_DRIVER, - 'os': 'Ubuntu' - }, - ], - }, - ], - 'disabled_tester_configs': [ - { - 'names': [ - 'Linux FYI Ozone (Intel)', - ], - }, - ], - 'desktop_swarming': { - 'shards': 4, - }, - 'test': 'angle_deqp_gles2_tests', - 'args': [ - '--test-launcher-batch-limit=400', - '--deqp-egl-display-type=angle-vulkan' - ] - }, + # Temporarily disabled while we roll Vulkan. + # TODO(jmadill): Re-enable after roll. http://anglebug.com/2393 + # 'angle_deqp_gles2_vulkan_tests': { + # 'tester_configs': [ + # { + # 'predicate': Predicates.DEQP, + # 'swarming_dimension_sets': [ + # # NVIDIA Win 10 + # { + # 'gpu': NVIDIA_QUADRO_P400_ALL_DRIVERS, + # 'os': WIN10_NVIDIA_QUADRO_P400_STABLE_OS, + # }, + # # AMD Win 7 + # { + # 'gpu': '1002:6613', + # 'os': 'Windows-2008ServerR2-SP1' + # }, + # # NVIDIA Linux Quadro P400 + # { + # 'gpu': LINUX_QUADRO_P400_STABLE_DRIVER, + # 'os': 'Ubuntu' + # }, + # ], + # }, + # ], + # 'disabled_tester_configs': [ + # { + # 'names': [ + # 'Linux FYI Ozone (Intel)', + # ], + # }, + # ], + # 'desktop_swarming': { + # 'shards': 4, + # }, + # 'test': 'angle_deqp_gles2_tests', + # 'args': [ + # '--test-launcher-batch-limit=400', + # '--deqp-egl-display-type=angle-vulkan' + # ] + # }, 'angle_deqp_gles3_gles_tests': { 'tester_configs': [
diff --git a/content/test/proxy_service_mojo_unittest.cc b/content/test/proxy_service_mojo_unittest.cc index 96c2cd3d..137cea2 100644 --- a/content/test/proxy_service_mojo_unittest.cc +++ b/content/test/proxy_service_mojo_unittest.cc
@@ -130,13 +130,13 @@ void SetUp() override { mock_host_resolver_.rules()->AddRule("example.com", "1.2.3.4"); - fetcher_ = new net::MockProxyScriptFetcher; + fetcher_ = new net::MockPacFileFetcher; proxy_resolution_service_ = network::CreateProxyServiceUsingMojoFactory( test_mojo_proxy_resolver_factory_.CreateFactoryInterface(), std::make_unique<net::ProxyConfigServiceFixed>( net::ProxyConfig::CreateFromCustomPacURL(GURL(kPacUrl))), base::WrapUnique(fetcher_), - std::make_unique<net::DoNothingDhcpProxyScriptFetcher>(), + std::make_unique<net::DoNothingDhcpPacFileFetcher>(), &mock_host_resolver_, &net_log_, &network_delegate_); } @@ -145,7 +145,7 @@ TestNetworkDelegate network_delegate_; LoggingMockHostResolver mock_host_resolver_; // Owned by |proxy_resolution_service_|. - net::MockProxyScriptFetcher* fetcher_; + net::MockPacFileFetcher* fetcher_; net::TestNetLog net_log_; std::unique_ptr<net::ProxyResolutionService> proxy_resolution_service_; }; @@ -160,7 +160,7 @@ &info, callback.callback(), nullptr, nullptr, net::NetLogWithSource())); - // Proxy script fetcher should have a fetch triggered by the first + // PAC file fetcher should have a fetch triggered by the first // |ResolveProxy()| request. EXPECT_TRUE(fetcher_->has_pending_request()); EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); @@ -182,7 +182,7 @@ &info, callback.callback(), nullptr, nullptr, test_net_log.bound())); - // Proxy script fetcher should have a fetch triggered by the first + // PAC file fetcher should have a fetch triggered by the first // |ResolveProxy()| request. EXPECT_TRUE(fetcher_->has_pending_request()); EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); @@ -215,7 +215,7 @@ &info, callback.callback(), nullptr, nullptr, test_net_log.bound())); - // Proxy script fetcher should have a fetch triggered by the first + // PAC file fetcher should have a fetch triggered by the first // |ResolveProxy()| request. EXPECT_TRUE(fetcher_->has_pending_request()); EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); @@ -245,7 +245,7 @@ &info, callback.callback(), nullptr, nullptr, net::NetLogWithSource())); - // Proxy script fetcher should have a fetch triggered by the first + // PAC file fetcher should have a fetch triggered by the first // |ResolveProxy()| request. EXPECT_TRUE(fetcher_->has_pending_request()); EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url());
diff --git a/device/BUILD.gn b/device/BUILD.gn index 21af1e0..12bb8643 100644 --- a/device/BUILD.gn +++ b/device/BUILD.gn
@@ -66,6 +66,7 @@ "bluetooth/uribeacon/uri_encoder_unittest.cc", "fido/ctap_request_unittest.cc", "fido/ctap_response_unittest.cc", + "fido/fake_u2f_discovery_unittest.cc", "fido/fido_hid_message_unittest.cc", "fido/u2f_apdu_unittest.cc", "fido/u2f_ble_connection_unittest.cc", @@ -93,6 +94,7 @@ "//device/bluetooth/uribeacon", "//device/fido", "//device/fido:mocks", + "//device/fido:test_support", "//device/gamepad", "//device/gamepad:test_helpers", "//device/gamepad/public/cpp:shared_with_blink",
diff --git a/device/fido/BUILD.gn b/device/fido/BUILD.gn index 7018448..464db35 100644 --- a/device/fido/BUILD.gn +++ b/device/fido/BUILD.gn
@@ -127,8 +127,8 @@ "mock_u2f_ble_connection.h", "mock_u2f_device.cc", "mock_u2f_device.h", - "mock_u2f_discovery.cc", - "mock_u2f_discovery.h", + "mock_u2f_discovery_observer.cc", + "mock_u2f_discovery_observer.h", ] deps = [ @@ -214,19 +214,24 @@ source_set("test_support") { testonly = true + sources = [ + "fake_u2f_discovery.cc", + "fake_u2f_discovery.h", + ] + deps = [ + "//base", + "//device/fido", + "//mojo/public/cpp/bindings", + "//services/device/public/mojom", + "//testing/gmock", + "//testing/gtest", + ] - # Android doesn't compile. - # Linux, requires udev. + # Android doesn't compile. Linux requires udev. if (!is_linux_without_udev && !is_android) { - sources = [ + sources += [ "fake_hid_impl_for_testing.cc", "fake_hid_impl_for_testing.h", ] - deps = [ - "//base", - "//mojo/public/cpp/bindings", - "//services/device/public/mojom", - "//testing/gmock", - ] } }
diff --git a/device/fido/fake_u2f_discovery.cc b/device/fido/fake_u2f_discovery.cc new file mode 100644 index 0000000..5c445871 --- /dev/null +++ b/device/fido/fake_u2f_discovery.cc
@@ -0,0 +1,138 @@ +// 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 "device/fido/fake_u2f_discovery.h" + +#include <utility> + +#include "base/logging.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace device { +namespace test { + +// FakeU2fDiscovery ---------------------------------------------------------- + +FakeU2fDiscovery::FakeU2fDiscovery(U2fTransportProtocol transport) + : transport_(transport), + start_called_callback_(wait_for_start_loop_.QuitClosure()), + stop_called_callback_(wait_for_stop_loop_.QuitClosure()) {} +FakeU2fDiscovery::~FakeU2fDiscovery() = default; + +void FakeU2fDiscovery::WaitForCallToStart() { + wait_for_start_loop_.Run(); + ASSERT_FALSE(start_called_callback_); +} + +void FakeU2fDiscovery::WaitForCallToStop() { + wait_for_stop_loop_.Run(); + ASSERT_FALSE(stop_called_callback_); +} + +void FakeU2fDiscovery::SimulateStarted(bool success) { + ASSERT_FALSE(is_running_); + is_running_ = success; + NotifyDiscoveryStarted(success); +} + +void FakeU2fDiscovery::SimulateStopped(bool success) { + ASSERT_TRUE(is_running_); + is_running_ = !success; + NotifyDiscoveryStopped(success); +} + +void FakeU2fDiscovery::WaitForCallToStartAndSimulateSuccess() { + WaitForCallToStart(); + SimulateStarted(true /* success */); +} + +void FakeU2fDiscovery::WaitForCallToStopAndSimulateSuccess() { + WaitForCallToStop(); + SimulateStopped(true /* success */); +} + +U2fTransportProtocol FakeU2fDiscovery::GetTransportProtocol() const { + return transport_; +} + +void FakeU2fDiscovery::Start() { + if (is_running_) + return; + + ASSERT_TRUE(start_called_callback_) << "Start called twice."; + std::move(start_called_callback_).Run(); +} + +void FakeU2fDiscovery::Stop() { + if (!is_running_) + return; + + ASSERT_TRUE(stop_called_callback_) << "Stop called twice."; + std::move(stop_called_callback_).Run(); +} + +// ScopedFakeU2fDiscoveryFactory --------------------------------------------- + +ScopedFakeU2fDiscoveryFactory::ScopedFakeU2fDiscoveryFactory() { + DCHECK(!g_current_factory) << "Nested fake factories not yet supported."; + g_current_factory = this; + + original_factory_func_ = + std::exchange(U2fDiscovery::g_factory_func_, &CreateFakeU2fDiscovery); +} + +ScopedFakeU2fDiscoveryFactory::~ScopedFakeU2fDiscoveryFactory() { + g_current_factory = nullptr; + U2fDiscovery::g_factory_func_ = original_factory_func_; +} + +FakeU2fDiscovery* ScopedFakeU2fDiscoveryFactory::ForgeNextHidDiscovery() { + return static_cast<FakeU2fDiscovery*>( + SetNextHidDiscovery(std::make_unique<FakeU2fDiscovery>( + U2fTransportProtocol::kUsbHumanInterfaceDevice))); +} + +FakeU2fDiscovery* ScopedFakeU2fDiscoveryFactory::ForgeNextBleDiscovery() { + return static_cast<FakeU2fDiscovery*>( + SetNextBleDiscovery(std::make_unique<FakeU2fDiscovery>( + U2fTransportProtocol::kBluetoothLowEnergy))); +} + +U2fDiscovery* ScopedFakeU2fDiscoveryFactory::SetNextHidDiscovery( + std::unique_ptr<U2fDiscovery> replacement) { + DCHECK_EQ(replacement->GetTransportProtocol(), + U2fTransportProtocol::kUsbHumanInterfaceDevice); + next_hid_discovery_ = std::move(replacement); + return next_hid_discovery_.get(); +} + +U2fDiscovery* ScopedFakeU2fDiscoveryFactory::SetNextBleDiscovery( + std::unique_ptr<U2fDiscovery> replacement) { + DCHECK_EQ(replacement->GetTransportProtocol(), + U2fTransportProtocol::kBluetoothLowEnergy); + next_ble_discovery_ = std::move(replacement); + return next_ble_discovery_.get(); +} + +// static +std::unique_ptr<U2fDiscovery> +ScopedFakeU2fDiscoveryFactory::CreateFakeU2fDiscovery( + U2fTransportProtocol transport, + ::service_manager::Connector* connector) { + switch (transport) { + case U2fTransportProtocol::kBluetoothLowEnergy: + return std::move(g_current_factory->next_ble_discovery_); + case U2fTransportProtocol::kUsbHumanInterfaceDevice: + return std::move(g_current_factory->next_hid_discovery_); + } + NOTREACHED(); + return nullptr; +} + +// static +ScopedFakeU2fDiscoveryFactory* + ScopedFakeU2fDiscoveryFactory::g_current_factory = nullptr; + +} // namespace test +} // namespace device
diff --git a/device/fido/fake_u2f_discovery.h b/device/fido/fake_u2f_discovery.h new file mode 100644 index 0000000..c506c869 --- /dev/null +++ b/device/fido/fake_u2f_discovery.h
@@ -0,0 +1,108 @@ +// 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 DEVICE_FIDO_FAKE_U2F_DISCOVERY_H_ +#define DEVICE_FIDO_FAKE_U2F_DISCOVERY_H_ + +#include <memory> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/run_loop.h" +#include "device/fido/u2f_discovery.h" +#include "device/fido/u2f_transport_protocol.h" + +namespace service_manager { +class Connector; +} + +namespace device { +namespace test { + +// Fake U2F discovery simulating the behavior of the production implementations, +// and can be used to feed U2fRequests with fake/mock U2F devices. +class FakeU2fDiscovery : public U2fDiscovery, + public base::SupportsWeakPtr<FakeU2fDiscovery> { + public: + explicit FakeU2fDiscovery(U2fTransportProtocol transport); + ~FakeU2fDiscovery() override; + + // Blocks until start/stop is requested. + void WaitForCallToStart(); + void WaitForCallToStop(); + + // Simulates the discovery actually starting/stopping. + void SimulateStarted(bool success); + void SimulateStopped(bool success); + + // Combines WaitForCallToStart/Stop + SimulateStarted/Stopped(true). + void WaitForCallToStartAndSimulateSuccess(); + void WaitForCallToStopAndSimulateSuccess(); + + bool is_start_requested() const { return !start_called_callback_; } + bool is_stop_requested() const { return !stop_called_callback_; } + bool is_running() const { return is_running_; } + + // Tests are to directly call Add/RemoveDevice to simulate adding/removing + // devices. Observers are automatically notified. + using U2fDiscovery::AddDevice; + using U2fDiscovery::RemoveDevice; + + // U2fDiscovery: + U2fTransportProtocol GetTransportProtocol() const override; + void Start() override; + void Stop() override; + + private: + U2fTransportProtocol transport_; + + bool is_running_ = false; + + base::RunLoop wait_for_start_loop_; + base::RunLoop wait_for_stop_loop_; + + base::OnceClosure start_called_callback_; + base::OnceClosure stop_called_callback_; + + DISALLOW_COPY_AND_ASSIGN(FakeU2fDiscovery); +}; + +// Hijacks the U2fDiscovery::Create() factory method to return user-defined +// U2fDiscovery instances while this instance is in scope. +class ScopedFakeU2fDiscoveryFactory { + public: + ScopedFakeU2fDiscoveryFactory(); + ~ScopedFakeU2fDiscoveryFactory(); + + // Constructs a fake BLE/HID discovery to be returned from the next call to + // U2fDiscovery::Create. Returns a raw pointer to the fake so that tests can + // set it up according to taste. + FakeU2fDiscovery* ForgeNextBleDiscovery(); + FakeU2fDiscovery* ForgeNextHidDiscovery(); + + // Same as above, but the test can supply whatever custom |discovery| instance + // that it wants to be returned from the next call to U2fDiscovery::Create. + U2fDiscovery* SetNextHidDiscovery(std::unique_ptr<U2fDiscovery> discovery); + U2fDiscovery* SetNextBleDiscovery(std::unique_ptr<U2fDiscovery> discovery); + + private: + static std::unique_ptr<U2fDiscovery> CreateFakeU2fDiscovery( + U2fTransportProtocol transport, + ::service_manager::Connector* connector); + + static ScopedFakeU2fDiscoveryFactory* g_current_factory; + + U2fDiscovery::FactoryFuncPtr original_factory_func_; + + std::unique_ptr<U2fDiscovery> next_hid_discovery_; + std::unique_ptr<U2fDiscovery> next_ble_discovery_; + + DISALLOW_COPY_AND_ASSIGN(ScopedFakeU2fDiscoveryFactory); +}; + +} // namespace test +} // namespace device + +#endif // DEVICE_FIDO_FAKE_U2F_DISCOVERY_H_
diff --git a/device/fido/fake_u2f_discovery_unittest.cc b/device/fido/fake_u2f_discovery_unittest.cc new file mode 100644 index 0000000..da2629539 --- /dev/null +++ b/device/fido/fake_u2f_discovery_unittest.cc
@@ -0,0 +1,235 @@ +// 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 "device/fido/fake_u2f_discovery.h" + +#include "base/macros.h" +#include "base/test/bind_test_util.h" +#include "base/test/scoped_task_environment.h" +#include "base/threading/thread_task_runner_handle.h" +#include "build/build_config.h" +#include "device/fido/mock_u2f_device.h" +#include "device/fido/mock_u2f_discovery_observer.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace device { +namespace test { + +class FakeU2fDiscoveryTest : public ::testing::Test { + public: + FakeU2fDiscoveryTest() = default; + ~FakeU2fDiscoveryTest() override = default; + + protected: + base::test::ScopedTaskEnvironment scoped_task_environment_; + + private: + DISALLOW_COPY_AND_ASSIGN(FakeU2fDiscoveryTest); +}; + +using ScopedFakeU2fDiscoveryFactoryTest = FakeU2fDiscoveryTest; + +TEST_F(FakeU2fDiscoveryTest, Transport) { + FakeU2fDiscovery discovery_ble(U2fTransportProtocol::kBluetoothLowEnergy); + EXPECT_EQ(U2fTransportProtocol::kBluetoothLowEnergy, + discovery_ble.GetTransportProtocol()); + + FakeU2fDiscovery discovery_hid( + U2fTransportProtocol::kUsbHumanInterfaceDevice); + EXPECT_EQ(U2fTransportProtocol::kUsbHumanInterfaceDevice, + discovery_hid.GetTransportProtocol()); +} + +TEST_F(FakeU2fDiscoveryTest, InitialState) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_FALSE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); +} + +TEST_F(FakeU2fDiscoveryTest, StartStopDiscovery) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + MockU2fDiscoveryObserver observer; + discovery.AddObserver(&observer); + + discovery.Start(); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); + + EXPECT_CALL(observer, DiscoveryStarted(&discovery, true)); + discovery.WaitForCallToStartAndSimulateSuccess(); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); + + discovery.Stop(); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_TRUE(discovery.is_stop_requested()); + + EXPECT_CALL(observer, DiscoveryStopped(&discovery, true)); + discovery.WaitForCallToStopAndSimulateSuccess(); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_TRUE(discovery.is_stop_requested()); +} + +TEST_F(FakeU2fDiscoveryTest, WaitThenStartStopDiscovery) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + MockU2fDiscoveryObserver observer; + discovery.AddObserver(&observer); + + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindLambdaForTesting([&]() { discovery.Start(); })); + + discovery.WaitForCallToStart(); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); + + EXPECT_CALL(observer, DiscoveryStarted(&discovery, true)); + discovery.SimulateStarted(true); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); + + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindLambdaForTesting([&]() { discovery.Stop(); })); + + discovery.WaitForCallToStop(); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_TRUE(discovery.is_stop_requested()); + + EXPECT_CALL(observer, DiscoveryStopped(&discovery, true)); + discovery.SimulateStopped(true); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_TRUE(discovery.is_stop_requested()); +} + +// Starting discovery and failing: instance stays in "not running" state +TEST_F(FakeU2fDiscoveryTest, StartFail) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + MockU2fDiscoveryObserver observer; + discovery.AddObserver(&observer); + + discovery.Start(); + + EXPECT_CALL(observer, DiscoveryStarted(&discovery, false)); + discovery.SimulateStarted(false); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_FALSE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); +} + +// Stopping discovery and failing: instance stays in a "running" state. +TEST_F(FakeU2fDiscoveryTest, StopFail) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + MockU2fDiscoveryObserver observer; + discovery.AddObserver(&observer); + + discovery.Start(); + + EXPECT_CALL(observer, DiscoveryStarted(&discovery, true)); + discovery.SimulateStarted(true); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_FALSE(discovery.is_stop_requested()); + + discovery.Stop(); + + EXPECT_CALL(observer, DiscoveryStopped(&discovery, false)); + discovery.SimulateStopped(false); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + ASSERT_TRUE(discovery.is_running()); + ASSERT_TRUE(discovery.is_start_requested()); + ASSERT_TRUE(discovery.is_stop_requested()); +} + +// Adding device is possible both before and after discovery actually starts. +TEST_F(FakeU2fDiscoveryTest, AddDevice) { + FakeU2fDiscovery discovery(U2fTransportProtocol::kBluetoothLowEnergy); + + MockU2fDiscoveryObserver observer; + discovery.AddObserver(&observer); + + discovery.Start(); + + auto device0 = std::make_unique<MockU2fDevice>(); + EXPECT_CALL(*device0, GetId()).WillOnce(::testing::Return("device0")); + EXPECT_CALL(observer, DeviceAdded(&discovery, ::testing::_)); + discovery.AddDevice(std::move(device0)); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + EXPECT_CALL(observer, DiscoveryStarted(&discovery, true)); + discovery.SimulateStarted(true); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + auto device1 = std::make_unique<MockU2fDevice>(); + EXPECT_CALL(*device1, GetId()).WillOnce(::testing::Return("device1")); + EXPECT_CALL(observer, DeviceAdded(&discovery, ::testing::_)); + discovery.AddDevice(std::move(device1)); + ::testing::Mock::VerifyAndClearExpectations(&observer); +} + +#if !defined(OS_ANDROID) +TEST_F(ScopedFakeU2fDiscoveryFactoryTest, + OverridesUsbFactoryFunctionWhileInScope) { + ScopedFakeU2fDiscoveryFactory factory; + auto* injected_fake_discovery = factory.ForgeNextHidDiscovery(); + ASSERT_EQ(U2fTransportProtocol::kUsbHumanInterfaceDevice, + injected_fake_discovery->GetTransportProtocol()); + auto produced_discovery = U2fDiscovery::Create( + U2fTransportProtocol::kUsbHumanInterfaceDevice, nullptr); + EXPECT_TRUE(produced_discovery); + EXPECT_EQ(injected_fake_discovery, produced_discovery.get()); +} +#endif + +TEST_F(ScopedFakeU2fDiscoveryFactoryTest, + OverridesBleFactoryFunctionWhileInScope) { + ScopedFakeU2fDiscoveryFactory factory; + + auto* injected_fake_discovery_1 = factory.ForgeNextBleDiscovery(); + ASSERT_EQ(U2fTransportProtocol::kBluetoothLowEnergy, + injected_fake_discovery_1->GetTransportProtocol()); + auto produced_discovery_1 = + U2fDiscovery::Create(U2fTransportProtocol::kBluetoothLowEnergy, nullptr); + EXPECT_EQ(injected_fake_discovery_1, produced_discovery_1.get()); + + auto* injected_fake_discovery_2 = factory.ForgeNextBleDiscovery(); + ASSERT_EQ(U2fTransportProtocol::kBluetoothLowEnergy, + injected_fake_discovery_2->GetTransportProtocol()); + auto produced_discovery_2 = + U2fDiscovery::Create(U2fTransportProtocol::kBluetoothLowEnergy, nullptr); + EXPECT_EQ(injected_fake_discovery_2, produced_discovery_2.get()); +} + +} // namespace test +} // namespace device
diff --git a/device/fido/mock_u2f_discovery.cc b/device/fido/mock_u2f_discovery.cc deleted file mode 100644 index a2ad6ecd..0000000 --- a/device/fido/mock_u2f_discovery.cc +++ /dev/null
@@ -1,61 +0,0 @@ -// 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. - -#include "device/fido/mock_u2f_discovery.h" - -#include <utility> - -#include "base/threading/thread_task_runner_handle.h" - -namespace device { - -MockU2fDiscoveryObserver::MockU2fDiscoveryObserver() = default; - -MockU2fDiscoveryObserver::~MockU2fDiscoveryObserver() = default; - -MockU2fDiscovery::MockU2fDiscovery() = default; - -MockU2fDiscovery::~MockU2fDiscovery() = default; - -bool MockU2fDiscovery::AddDevice(std::unique_ptr<U2fDevice> device) { - return U2fDiscovery::AddDevice(std::move(device)); -} - -bool MockU2fDiscovery::RemoveDevice(base::StringPiece device_id) { - return U2fDiscovery::RemoveDevice(device_id); -} - -void MockU2fDiscovery::AddDeviceWithoutNotification( - std::unique_ptr<U2fDevice> device) { - std::string device_id = device->GetId(); - devices_.emplace(std::move(device_id), std::move(device)); -} - -base::ObserverList<U2fDiscovery::Observer>& MockU2fDiscovery::GetObservers() { - return observers_; -} - -void MockU2fDiscovery::StartSuccess() { - NotifyDiscoveryStarted(true); -} - -void MockU2fDiscovery::StartFailure() { - NotifyDiscoveryStarted(false); -} - -// static -void MockU2fDiscovery::StartSuccessAsync() { - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::BindOnce(&MockU2fDiscovery::StartSuccess, base::Unretained(this))); -} - -// static -void MockU2fDiscovery::StartFailureAsync() { - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::BindOnce(&MockU2fDiscovery::StartFailure, base::Unretained(this))); -} - -} // namespace device
diff --git a/device/fido/mock_u2f_discovery.h b/device/fido/mock_u2f_discovery.h deleted file mode 100644 index 6e12e89..0000000 --- a/device/fido/mock_u2f_discovery.h +++ /dev/null
@@ -1,56 +0,0 @@ -// 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. - -#ifndef DEVICE_FIDO_MOCK_U2F_DISCOVERY_H_ -#define DEVICE_FIDO_MOCK_U2F_DISCOVERY_H_ - -#include <memory> -#include <string> - -#include "device/fido/mock_u2f_device.h" -#include "device/fido/u2f_device.h" -#include "device/fido/u2f_discovery.h" -#include "testing/gmock/include/gmock/gmock.h" - -namespace device { - -class MockU2fDiscoveryObserver : public U2fDiscovery::Observer { - public: - MockU2fDiscoveryObserver(); - ~MockU2fDiscoveryObserver() override; - - MOCK_METHOD2(DiscoveryStarted, void(U2fDiscovery*, bool)); - MOCK_METHOD2(DiscoveryStopped, void(U2fDiscovery*, bool)); - MOCK_METHOD2(DeviceAdded, void(U2fDiscovery*, U2fDevice*)); - MOCK_METHOD2(DeviceRemoved, void(U2fDiscovery*, U2fDevice*)); -}; - -class MockU2fDiscovery : public U2fDiscovery { - public: - MockU2fDiscovery(); - ~MockU2fDiscovery() override; - - MOCK_METHOD0(Start, void()); - MOCK_METHOD0(Stop, void()); - - bool AddDevice(std::unique_ptr<U2fDevice> device) override; - bool RemoveDevice(base::StringPiece device_id) override; - - // AddDeviceWithoutNotification adds |device| to the list of devices, but - // doesn't notify observers. This can be used before |StartSuccess| to mock - // devices that are discovered as soon as the discovery is started. - void AddDeviceWithoutNotification(std::unique_ptr<U2fDevice> device); - - base::ObserverList<Observer>& GetObservers(); - - void StartSuccess(); - void StartFailure(); - - void StartSuccessAsync(); - void StartFailureAsync(); -}; - -} // namespace device - -#endif // DEVICE_FIDO_MOCK_U2F_DISCOVERY_H_
diff --git a/device/fido/mock_u2f_discovery_observer.cc b/device/fido/mock_u2f_discovery_observer.cc new file mode 100644 index 0000000..f73f63b --- /dev/null +++ b/device/fido/mock_u2f_discovery_observer.cc
@@ -0,0 +1,12 @@ +// 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. + +#include "device/fido/mock_u2f_discovery_observer.h" + +namespace device { + +MockU2fDiscoveryObserver::MockU2fDiscoveryObserver() = default; +MockU2fDiscoveryObserver::~MockU2fDiscoveryObserver() = default; + +} // namespace device
diff --git a/device/fido/mock_u2f_discovery_observer.h b/device/fido/mock_u2f_discovery_observer.h new file mode 100644 index 0000000..2b9bfa1 --- /dev/null +++ b/device/fido/mock_u2f_discovery_observer.h
@@ -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. + +#ifndef DEVICE_FIDO_MOCK_U2F_DISCOVERY_OBSERVER_H_ +#define DEVICE_FIDO_MOCK_U2F_DISCOVERY_OBSERVER_H_ + +#include "device/fido/u2f_discovery.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace device { + +class U2fDevice; + +class MockU2fDiscoveryObserver : public U2fDiscovery::Observer { + public: + MockU2fDiscoveryObserver(); + ~MockU2fDiscoveryObserver() override; + + MOCK_METHOD2(DiscoveryStarted, void(U2fDiscovery*, bool)); + MOCK_METHOD2(DiscoveryStopped, void(U2fDiscovery*, bool)); + MOCK_METHOD2(DeviceAdded, void(U2fDiscovery*, U2fDevice*)); + MOCK_METHOD2(DeviceRemoved, void(U2fDiscovery*, U2fDevice*)); +}; + +} // namespace device + +#endif // DEVICE_FIDO_MOCK_U2F_DISCOVERY_OBSERVER_H_
diff --git a/device/fido/u2f_ble_discovery.cc b/device/fido/u2f_ble_discovery.cc index 37356eaf..4196ea7f 100644 --- a/device/fido/u2f_ble_discovery.cc +++ b/device/fido/u2f_ble_discovery.cc
@@ -33,6 +33,10 @@ OnStopped(true); } +U2fTransportProtocol U2fBleDiscovery::GetTransportProtocol() const { + return U2fTransportProtocol::kBluetoothLowEnergy; +} + void U2fBleDiscovery::Start() { auto& factory = BluetoothAdapterFactory::Get(); factory.GetAdapter(
diff --git a/device/fido/u2f_ble_discovery.h b/device/fido/u2f_ble_discovery.h index e1f4f20..35b5340 100644 --- a/device/fido/u2f_ble_discovery.h +++ b/device/fido/u2f_ble_discovery.h
@@ -24,6 +24,7 @@ ~U2fBleDiscovery() override; // U2fDiscovery: + U2fTransportProtocol GetTransportProtocol() const override; void Start() override; void Stop() override;
diff --git a/device/fido/u2f_ble_discovery_unittest.cc b/device/fido/u2f_ble_discovery_unittest.cc index a3b5a14..9566fbb 100644 --- a/device/fido/u2f_ble_discovery_unittest.cc +++ b/device/fido/u2f_ble_discovery_unittest.cc
@@ -10,7 +10,7 @@ #include "base/run_loop.h" #include "build/build_config.h" #include "device/bluetooth/test/bluetooth_test.h" -#include "device/fido/mock_u2f_discovery.h" +#include "device/fido/mock_u2f_discovery_observer.h" #include "device/fido/u2f_ble_device.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/device/fido/u2f_discovery.cc b/device/fido/u2f_discovery.cc index e1af0da..84f4874 100644 --- a/device/fido/u2f_discovery.cc +++ b/device/fido/u2f_discovery.cc
@@ -6,12 +6,57 @@ #include <utility> +#include "base/logging.h" +#include "build/build_config.h" +#include "device/fido/u2f_ble_discovery.h" #include "device/fido/u2f_device.h" +// HID is not supported on Android. +#if !defined(OS_ANDROID) +#include "device/fido/u2f_hid_discovery.h" +#endif // !defined(OS_ANDROID) + namespace device { -U2fDiscovery::U2fDiscovery() = default; +namespace { +std::unique_ptr<U2fDiscovery> CreateU2fDiscoveryImpl( + U2fTransportProtocol transport, + service_manager::Connector* connector) { + std::unique_ptr<U2fDiscovery> discovery; + switch (transport) { + case U2fTransportProtocol::kUsbHumanInterfaceDevice: +#if !defined(OS_ANDROID) + DCHECK(connector); + discovery = std::make_unique<U2fHidDiscovery>(connector); +#else + NOTREACHED() << "USB HID not supported on Android."; +#endif // !defined(OS_ANDROID) + break; + case U2fTransportProtocol::kBluetoothLowEnergy: + discovery = std::make_unique<U2fBleDiscovery>(); + break; + } + + DCHECK(discovery); + DCHECK_EQ(discovery->GetTransportProtocol(), transport); + return discovery; +} + +} // namespace + +// static +U2fDiscovery::FactoryFuncPtr U2fDiscovery::g_factory_func_ = + &CreateU2fDiscoveryImpl; + +// static +std::unique_ptr<U2fDiscovery> U2fDiscovery::Create( + U2fTransportProtocol transport, + service_manager::Connector* connector) { + return (*g_factory_func_)(transport, connector); +} + +U2fDiscovery::U2fDiscovery() = default; U2fDiscovery::~U2fDiscovery() = default; void U2fDiscovery::AddObserver(Observer* observer) {
diff --git a/device/fido/u2f_discovery.h b/device/fido/u2f_discovery.h index 0078b0f..8b4dc10c 100644 --- a/device/fido/u2f_discovery.h +++ b/device/fido/u2f_discovery.h
@@ -15,11 +15,20 @@ #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/strings/string_piece.h" +#include "device/fido/u2f_transport_protocol.h" + +namespace service_manager { +class Connector; +} namespace device { class U2fDevice; +namespace test { +class ScopedFakeU2fDiscoveryFactory; +} + class U2fDiscovery { public: class Observer { @@ -31,9 +40,18 @@ virtual void DeviceRemoved(U2fDiscovery* discovery, U2fDevice* device) = 0; }; - U2fDiscovery(); + // Factory function to construct an instance that discovers authenticators on + // the given |transport| protocol. + // + // U2fTransportProtocol::kUsbHumanInterfaceDevice requires specifying a valid + // |connector| on Desktop, and is not valid on Android. + static std::unique_ptr<U2fDiscovery> Create( + U2fTransportProtocol transport, + ::service_manager::Connector* connector); + virtual ~U2fDiscovery(); + virtual U2fTransportProtocol GetTransportProtocol() const = 0; virtual void Start() = 0; virtual void Stop() = 0; @@ -52,6 +70,8 @@ const U2fDevice* GetDevice(base::StringPiece device_id) const; protected: + U2fDiscovery(); + virtual bool AddDevice(std::unique_ptr<U2fDevice> device); virtual bool RemoveDevice(base::StringPiece device_id); @@ -59,6 +79,12 @@ base::ObserverList<Observer> observers_; private: + friend class test::ScopedFakeU2fDiscoveryFactory; + + // Factory function can be overridden by tests to construct fakes. + using FactoryFuncPtr = decltype(&Create); + static FactoryFuncPtr g_factory_func_; + DISALLOW_COPY_AND_ASSIGN(U2fDiscovery); };
diff --git a/device/fido/u2f_discovery_unittest.cc b/device/fido/u2f_discovery_unittest.cc index 6fdf6d1..be5d820 100644 --- a/device/fido/u2f_discovery_unittest.cc +++ b/device/fido/u2f_discovery_unittest.cc
@@ -6,30 +6,58 @@ #include <utility> -#include "device/fido/mock_u2f_discovery.h" +#include "base/macros.h" +#include "device/fido/mock_u2f_device.h" +#include "device/fido/mock_u2f_discovery_observer.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace device { +namespace { + using ::testing::_; using ::testing::Return; using ::testing::UnorderedElementsAre; +// A minimal implementation of U2FDiscovery that is no longer abstract. +class ConcreteU2fDiscovery : public U2fDiscovery { + public: + ConcreteU2fDiscovery() = default; + ~ConcreteU2fDiscovery() override = default; + + using U2fDiscovery::AddDevice; + using U2fDiscovery::RemoveDevice; + + const base::ObserverList<Observer>& observers() const { return observers_; } + + protected: + U2fTransportProtocol GetTransportProtocol() const override { + return U2fTransportProtocol::kUsbHumanInterfaceDevice; + } + void Start() override {} + void Stop() override {} + + private: + DISALLOW_COPY_AND_ASSIGN(ConcreteU2fDiscovery); +}; + +} // namespace + TEST(U2fDiscoveryTest, TestAddAndRemoveObserver) { - MockU2fDiscovery discovery; + ConcreteU2fDiscovery discovery; MockU2fDiscoveryObserver observer; - EXPECT_FALSE(discovery.GetObservers().HasObserver(&observer)); + EXPECT_FALSE(discovery.observers().HasObserver(&observer)); discovery.AddObserver(&observer); - EXPECT_TRUE(discovery.GetObservers().HasObserver(&observer)); + EXPECT_TRUE(discovery.observers().HasObserver(&observer)); discovery.RemoveObserver(&observer); - EXPECT_FALSE(discovery.GetObservers().HasObserver(&observer)); + EXPECT_FALSE(discovery.observers().HasObserver(&observer)); } TEST(U2fDiscoveryTest, TestNotifications) { - MockU2fDiscovery discovery; + ConcreteU2fDiscovery discovery; MockU2fDiscoveryObserver observer; discovery.AddObserver(&observer); @@ -54,7 +82,7 @@ } TEST(U2fDiscoveryTest, TestAddRemoveDevices) { - MockU2fDiscovery discovery; + ConcreteU2fDiscovery discovery; MockU2fDiscoveryObserver observer; discovery.AddObserver(&observer);
diff --git a/device/fido/u2f_hid_discovery.cc b/device/fido/u2f_hid_discovery.cc index 6cb053504..f91c103 100644 --- a/device/fido/u2f_hid_discovery.cc +++ b/device/fido/u2f_hid_discovery.cc
@@ -13,7 +13,7 @@ namespace device { -U2fHidDiscovery::U2fHidDiscovery(service_manager::Connector* connector) +U2fHidDiscovery::U2fHidDiscovery(::service_manager::Connector* connector) : connector_(connector), binding_(this), weak_factory_(this) { // TODO(piperc@): Give this constant a name. filter_.SetUsagePage(0xf1d0); @@ -21,6 +21,10 @@ U2fHidDiscovery::~U2fHidDiscovery() = default; +U2fTransportProtocol U2fHidDiscovery::GetTransportProtocol() const { + return U2fTransportProtocol::kUsbHumanInterfaceDevice; +} + void U2fHidDiscovery::Start() { DCHECK(connector_); connector_->BindInterface(device::mojom::kServiceName,
diff --git a/device/fido/u2f_hid_discovery.h b/device/fido/u2f_hid_discovery.h index a665063..e092089b 100644 --- a/device/fido/u2f_hid_discovery.h +++ b/device/fido/u2f_hid_discovery.h
@@ -27,10 +27,11 @@ class U2fHidDiscovery : public U2fDiscovery, device::mojom::HidManagerClient { public: - explicit U2fHidDiscovery(service_manager::Connector* connector); + explicit U2fHidDiscovery(::service_manager::Connector* connector); ~U2fHidDiscovery() override; // U2fDiscovery: + U2fTransportProtocol GetTransportProtocol() const override; void Start() override; void Stop() override;
diff --git a/device/fido/u2f_hid_discovery_unittest.cc b/device/fido/u2f_hid_discovery_unittest.cc index d0e3896e..fbe51cb 100644 --- a/device/fido/u2f_hid_discovery_unittest.cc +++ b/device/fido/u2f_hid_discovery_unittest.cc
@@ -9,7 +9,7 @@ #include "base/test/scoped_task_environment.h" #include "device/fido/fake_hid_impl_for_testing.h" -#include "device/fido/mock_u2f_discovery.h" +#include "device/fido/mock_u2f_discovery_observer.h" #include "device/fido/u2f_hid_device.h" #include "services/device/public/mojom/constants.mojom.h" #include "services/device/public/mojom/hid.mojom.h"
diff --git a/device/fido/u2f_register.cc b/device/fido/u2f_register.cc index 396cac7..f9ae943 100644 --- a/device/fido/u2f_register.cc +++ b/device/fido/u2f_register.cc
@@ -15,14 +15,14 @@ // static std::unique_ptr<U2fRequest> U2fRegister::TryRegistration( service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, bool individual_attestation_ok, RegisterResponseCallback completion_callback) { std::unique_ptr<U2fRequest> request = std::make_unique<U2fRegister>( - connector, protocols, std::move(registered_keys), + connector, transports, std::move(registered_keys), std::move(challenge_digest), std::move(application_parameter), individual_attestation_ok, std::move(completion_callback)); request->Start(); @@ -30,14 +30,14 @@ } U2fRegister::U2fRegister(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, bool individual_attestation_ok, RegisterResponseCallback completion_callback) : U2fRequest(connector, - protocols, + transports, std::move(application_parameter), std::move(challenge_digest), std::move(registered_keys)),
diff --git a/device/fido/u2f_register.h b/device/fido/u2f_register.h index 6062730..934c61c 100644 --- a/device/fido/u2f_register.h +++ b/device/fido/u2f_register.h
@@ -31,7 +31,7 @@ static std::unique_ptr<U2fRequest> TryRegistration( service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, @@ -39,7 +39,7 @@ RegisterResponseCallback completion_callback); U2fRegister(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter,
diff --git a/device/fido/u2f_register_unittest.cc b/device/fido/u2f_register_unittest.cc index 2d182a8f..29f1fab 100644 --- a/device/fido/u2f_register_unittest.cc +++ b/device/fido/u2f_register_unittest.cc
@@ -14,9 +14,9 @@ #include "device/fido/attested_credential_data.h" #include "device/fido/authenticator_data.h" #include "device/fido/ec_public_key.h" +#include "device/fido/fake_u2f_discovery.h" #include "device/fido/fido_attestation_statement.h" #include "device/fido/mock_u2f_device.h" -#include "device/fido/mock_u2f_discovery.h" #include "device/fido/register_response_data.h" #include "device/fido/u2f_parsing_utils.h" #include "device/fido/u2f_response_test_data.h" @@ -285,29 +285,6 @@ return test_authenticator_object; } -// Convenience functions for setting a mock discovery. -MockU2fDiscovery* SetMockDiscovery( - U2fRequest* request, - std::unique_ptr<MockU2fDiscovery> discovery) { - auto* raw_discovery = discovery.get(); - std::vector<std::unique_ptr<U2fDiscovery>> discoveries; - discoveries.push_back(std::move(discovery)); - request->SetDiscoveriesForTesting(std::move(discoveries)); - return raw_discovery; -} - -} // namespace - -class U2fRegisterTest : public ::testing::Test { - public: - U2fRegisterTest() - : scoped_task_environment_( - base::test::ScopedTaskEnvironment::MainThreadType::UI) {} - - protected: - base::test::ScopedTaskEnvironment scoped_task_environment_; -}; - class TestRegisterCallback { public: TestRegisterCallback() @@ -318,12 +295,11 @@ void ReceivedCallback(U2fReturnCode status_code, base::Optional<RegisterResponseData> response_data) { response_ = std::make_pair(status_code, std::move(response_data)); - closure_.Run(); + run_loop_.Quit(); } const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& WaitForCallback() { - closure_ = run_loop_.QuitClosure(); run_loop_.Run(); return response_; } @@ -334,55 +310,88 @@ private: std::pair<U2fReturnCode, base::Optional<RegisterResponseData>> response_; - base::Closure closure_; U2fRegister::RegisterResponseCallback callback_; base::RunLoop run_loop_; }; -TEST_F(U2fRegisterTest, TestCreateU2fRegisterCommand) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> registration_keys; - TestRegisterCallback cb; +} // namespace +class U2fRegisterTest : public ::testing::Test { + public: + void ForgeNextHidDiscovery() { + discovery_ = scoped_fake_discovery_factory_.ForgeNextHidDiscovery(); + } + + std::unique_ptr<U2fRegister> CreateRegisterRequest() { + return CreateRegisterRequestWithRegisteredKeys( + std::vector<std::vector<uint8_t>>()); + } + + // Creates a U2F register request with `none` attestation, and the given + // previously |registered_keys|. + std::unique_ptr<U2fRegister> CreateRegisterRequestWithRegisteredKeys( + std::vector<std::vector<uint8_t>> registered_keys) { + ForgeNextHidDiscovery(); + return std::make_unique<U2fRegister>( + nullptr /* connector */, + base::flat_set<U2fTransportProtocol>( + {U2fTransportProtocol::kUsbHumanInterfaceDevice}), + registered_keys, std::vector<uint8_t>(32), std::vector<uint8_t>(32), + kNoIndividualAttestation, register_callback_.callback()); + } + + test::FakeU2fDiscovery* discovery() const { return discovery_; } + TestRegisterCallback& register_callback() { return register_callback_; } + + protected: + base::test::ScopedTaskEnvironment scoped_task_environment_; + + test::ScopedFakeU2fDiscoveryFactory scoped_fake_discovery_factory_; + test::FakeU2fDiscovery* discovery_; + TestRegisterCallback register_callback_; +}; + +TEST_F(U2fRegisterTest, TestCreateU2fRegisterCommand) { constexpr uint8_t kRegisterApduCommandWithoutAttestation[] = { 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01}; + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, + }; + + constexpr uint8_t kRegisterApduCommandWithAttestation[] = { + // CLA, INS, P1, P2 APDU instructions + 0x00, 0x01, 0x83, 0x00, + // Data length in 3 bytes in big endian order + 0x00, 0x00, 0x40, + // Application parameter + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, + // Challenge parameter + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, + }; U2fRegister register_request( - nullptr, protocols, registration_keys, + nullptr /* connector */, {} /* transports */, + std::vector<std::vector<uint8_t>>() /* registered_keys */, std::vector<uint8_t>(std::begin(kChallengeDigest), std::end(kChallengeDigest)), std::vector<uint8_t>(std::begin(kAppIdDigest), std::end(kAppIdDigest)), - kNoIndividualAttestation, cb.callback()); + kNoIndividualAttestation, register_callback().callback()); const auto register_command_without_individual_attestation = register_request.GetU2fRegisterApduCommand(kNoIndividualAttestation); + ASSERT_TRUE(register_command_without_individual_attestation); EXPECT_THAT( register_command_without_individual_attestation->GetEncodedCommand(), ::testing::ElementsAreArray(kRegisterApduCommandWithoutAttestation)); - constexpr uint8_t kRegisterApduCommandWithAttestation[] = { - // clang-format off - 0x00, 0x01, 0x83, 0x00, // CLA, INS, P1, P2 APDU instructions - 0x00, 0x00, 0x40, // Data length in 3 bytes in big endian order - // Application parameter - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, - // Challenge parameter - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01 - // clang-format on - }; - const auto register_command_with_individual_attestation = register_request.GetU2fRegisterApduCommand(kIndividualAttestation); @@ -392,20 +401,9 @@ } TEST_F(U2fRegisterTest, TestRegisterSuccess) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> registration_keys; - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, registration_keys, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequest(); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -413,29 +411,17 @@ .WillOnce(::testing::Invoke(MockU2fDevice::NoErrorRegister)); EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response)->raw_id()); } TEST_F(U2fRegisterTest, TestDelayedSuccess) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> registration_keys; - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, registration_keys, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequest(); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -446,28 +432,15 @@ EXPECT_CALL(*device, TryWinkRef(_)) .Times(2) .WillRepeatedly(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response)->raw_id()); } TEST_F(U2fRegisterTest, TestMultipleDevices) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> registration_keys; - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, registration_keys, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequest(); request->Start(); auto device0 = std::make_unique<MockU2fDevice>(); @@ -477,7 +450,7 @@ // One wink per device. EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device0)); + discovery()->AddDevice(std::move(device0)); // Second device will have a successful touch. auto device1 = std::make_unique<MockU2fDevice>(); @@ -487,10 +460,10 @@ // One wink per device. EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device1)); + discovery()->AddDevice(std::move(device1)); + discovery()->WaitForCallToStartAndSimulateSuccess(); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response).value().raw_id()); @@ -500,24 +473,12 @@ // is received with three unknown key handles. We expect that three check only // sign-in calls be processed before registration. TEST_F(U2fRegisterTest, TestSingleDeviceRegistrationWithExclusionList) { - base::flat_set<U2fTransportProtocol> protocols; // Simulate three unknown key handles. - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xB); - handles.emplace_back(32, 0xC); - handles.emplace_back(32, 0xD); - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequestWithRegisteredKeys( + {std::vector<uint8_t>(32, 0x0B), std::vector<uint8_t>(32, 0x0C), + std::vector<uint8_t>(32, 0x0D)}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -538,10 +499,9 @@ EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response)->raw_id()); } @@ -550,23 +510,10 @@ // received with three unknown key handles. We assume that user will proceed the // registration with second device, "device1". TEST_F(U2fRegisterTest, TestMultipleDeviceRegistrationWithExclusionList) { - base::flat_set<U2fTransportProtocol> protocols; // Simulate three unknown key handles. - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xB); - handles.emplace_back(32, 0xC); - handles.emplace_back(32, 0xD); - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequestWithRegisteredKeys( + {std::vector<uint8_t>(32, 0x0B), std::vector<uint8_t>(32, 0x0C), + std::vector<uint8_t>(32, 0x0D)}); request->Start(); auto device0 = std::make_unique<MockU2fDevice>(); @@ -585,7 +532,7 @@ EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device0)); + discovery()->AddDevice(std::move(device0)); auto device1 = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device1, GetId()).WillRepeatedly(::testing::Return("device1")); @@ -602,10 +549,10 @@ EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device1)); + discovery()->AddDevice(std::move(device1)); + discovery()->WaitForCallToStartAndSimulateSuccess(); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response)->raw_id()); } @@ -616,25 +563,12 @@ // after duplicate key handle is found, the process is expected to terminate // after calling bogus registration which checks for user presence. TEST_F(U2fRegisterTest, TestSingleDeviceRegistrationWithDuplicateHandle) { - base::flat_set<U2fTransportProtocol> protocols; // Simulate three unknown key handles followed by a duplicate key. - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xB); - handles.emplace_back(32, 0xC); - handles.emplace_back(32, 0xD); - handles.emplace_back(32, 0xA); - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequestWithRegisteredKeys( + {std::vector<uint8_t>(32, 0x0B), std::vector<uint8_t>(32, 0x0C), + std::vector<uint8_t>(32, 0x0D), std::vector<uint8_t>(32, 0x0A)}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -655,10 +589,9 @@ // invoked once. EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::CONDITIONS_NOT_SATISFIED, std::get<0>(response)); EXPECT_EQ(base::nullopt, std::get<1>(response)); } @@ -667,24 +600,10 @@ // a key handle provided in exclude list. We assume that duplicate key is the // fourth key handle provided in the exclude list. TEST_F(U2fRegisterTest, TestMultipleDeviceRegistrationWithDuplicateHandle) { - base::flat_set<U2fTransportProtocol> protocols; // Simulate three unknown key handles followed by a duplicate key. - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xB); - handles.emplace_back(32, 0xC); - handles.emplace_back(32, 0xD); - handles.emplace_back(32, 0xA); - TestRegisterCallback cb; - - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), kNoIndividualAttestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateRegisterRequestWithRegisteredKeys( + {std::vector<uint8_t>(32, 0x0B), std::vector<uint8_t>(32, 0x0C), + std::vector<uint8_t>(32, 0x0D), std::vector<uint8_t>(32, 0x0A)}); request->Start(); auto device0 = std::make_unique<MockU2fDevice>(); @@ -701,7 +620,7 @@ .WillOnce(::testing::Invoke(MockU2fDevice::WrongData)); EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device0)); + discovery()->AddDevice(std::move(device0)); auto device1 = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device1, GetId()).WillRepeatedly(::testing::Return("device1")); @@ -720,10 +639,10 @@ .WillOnce(::testing::Invoke(MockU2fDevice::NoErrorRegister)); EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device1)); + discovery()->AddDevice(std::move(device1)); + discovery()->WaitForCallToStartAndSimulateSuccess(); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = register_callback().WaitForCallback(); EXPECT_EQ(U2fReturnCode::CONDITIONS_NOT_SATISFIED, std::get<0>(response)); EXPECT_EQ(base::nullopt, std::get<1>(response)); } @@ -838,20 +757,18 @@ for (const auto& individual_attestation : {false, true}) { SCOPED_TRACE(individual_attestation); - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> registration_keys; + ForgeNextHidDiscovery(); TestRegisterCallback cb; - auto request = std::make_unique<U2fRegister>( - nullptr, protocols, registration_keys, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), individual_attestation, cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + nullptr /* connector */, + base::flat_set<U2fTransportProtocol>( + {U2fTransportProtocol::kUsbHumanInterfaceDevice}) /* transports */, + std::vector<std::vector<uint8_t>>() /* registration_keys */, + std::vector<uint8_t>(32) /* challenge_digest */, + std::vector<uint8_t>(32) /* application_parameter */, + individual_attestation, cb.callback()); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -861,10 +778,9 @@ .WillOnce(::testing::Invoke(MockU2fDevice::NoErrorRegister)); EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - const std::pair<U2fReturnCode, base::Optional<RegisterResponseData>>& - response = cb.WaitForCallback(); + const auto& response = cb.WaitForCallback(); EXPECT_EQ(U2fReturnCode::SUCCESS, std::get<0>(response)); EXPECT_EQ(GetTestCredentialRawIdBytes(), std::get<1>(response)->raw_id()); }
diff --git a/device/fido/u2f_request.cc b/device/fido/u2f_request.cc index f939009..ed6357c5 100644 --- a/device/fido/u2f_request.cc +++ b/device/fido/u2f_request.cc
@@ -13,18 +13,12 @@ #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "device/fido/u2f_apdu_command.h" -#include "device/fido/u2f_ble_discovery.h" #include "services/service_manager/public/cpp/connector.h" -// HID is not supported on Android. -#if !defined(OS_ANDROID) -#include "device/fido/u2f_hid_discovery.h" -#endif // !defined(OS_ANDROID) - namespace device { U2fRequest::U2fRequest(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<uint8_t> application_parameter, std::vector<uint8_t> challenge_digest, std::vector<std::vector<uint8_t>> registered_keys) @@ -33,20 +27,8 @@ challenge_digest_(challenge_digest), registered_keys_(registered_keys), weak_factory_(this) { - for (const auto protocol : protocols) { - std::unique_ptr<U2fDiscovery> discovery; - switch (protocol) { - case U2fTransportProtocol::kUsbHumanInterfaceDevice: -#if !defined(OS_ANDROID) - DCHECK(connector); - discovery = std::make_unique<U2fHidDiscovery>(connector); -#endif // !defined(OS_ANDROID) - break; - case U2fTransportProtocol::kBluetoothLowEnergy: - discovery = std::make_unique<U2fBleDiscovery>(); - break; - } - + for (const auto transport : transports) { + auto discovery = U2fDiscovery::Create(transport, connector); discovery->AddObserver(this); discoveries_.push_back(std::move(discovery)); } @@ -65,13 +47,6 @@ } } -void U2fRequest::SetDiscoveriesForTesting( - std::vector<std::unique_ptr<U2fDiscovery>> discoveries) { - discoveries_ = std::move(discoveries); - for (auto& discovery : discoveries_) - discovery->AddObserver(this); -} - // static const std::vector<uint8_t>& U2fRequest::GetBogusApplicationParameter() { static const std::vector<uint8_t> kBogusAppParam(32, 0x41);
diff --git a/device/fido/u2f_request.h b/device/fido/u2f_request.h index cf49e9b1..6a7c4d5d 100644 --- a/device/fido/u2f_request.h +++ b/device/fido/u2f_request.h
@@ -20,7 +20,7 @@ namespace service_manager { class Connector; -}; // namespace service_manager +} namespace device { @@ -31,7 +31,7 @@ // TODO(https://crbug.com/769631): Remove the dependency on Connector once U2F // is servicified. U2fRequest(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<uint8_t> application_parameter, std::vector<uint8_t> challenge_digest, std::vector<std::vector<uint8_t>> registered_keys); @@ -39,11 +39,6 @@ void Start(); - // Enables the overriding of discoveries for testing. Useful for fakes such as - // MockU2fDiscovery. - void SetDiscoveriesForTesting( - std::vector<std::unique_ptr<U2fDiscovery>> discoveries); - // Returns bogus application parameter and challenge to be used to verify user // presence. static const std::vector<uint8_t>& GetBogusApplicationParameter();
diff --git a/device/fido/u2f_request_unittest.cc b/device/fido/u2f_request_unittest.cc index 8d85e3f..d24eb4c 100644 --- a/device/fido/u2f_request_unittest.cc +++ b/device/fido/u2f_request_unittest.cc
@@ -7,8 +7,8 @@ #include <utility> #include "base/test/scoped_task_environment.h" +#include "device/fido/fake_u2f_discovery.h" #include "device/fido/mock_u2f_device.h" -#include "device/fido/mock_u2f_discovery.h" #include "device/fido/u2f_request.h" #include "testing/gtest/include/gtest/gtest.h" @@ -20,9 +20,10 @@ class FakeU2fRequest : public U2fRequest { public: - explicit FakeU2fRequest() + explicit FakeU2fRequest( + const base::flat_set<U2fTransportProtocol>& transports) : U2fRequest(nullptr /* connector */, - base::flat_set<U2fTransportProtocol>(), + transports, std::vector<uint8_t>(), std::vector<uint8_t>(), std::vector<std::vector<uint8_t>>()) {} @@ -33,46 +34,35 @@ } }; -// Convenience functions for setting one and two mock discoveries, respectively. -MockU2fDiscovery* SetMockDiscovery( - U2fRequest* request, - std::unique_ptr<MockU2fDiscovery> discovery) { - auto* raw_discovery = discovery.get(); - std::vector<std::unique_ptr<U2fDiscovery>> discoveries; - discoveries.push_back(std::move(discovery)); - request->SetDiscoveriesForTesting(std::move(discoveries)); - return raw_discovery; -} - -std::pair<MockU2fDiscovery*, MockU2fDiscovery*> SetMockDiscoveries( - U2fRequest* request, - std::unique_ptr<MockU2fDiscovery> discovery_1, - std::unique_ptr<MockU2fDiscovery> discovery_2) { - auto* raw_discovery_1 = discovery_1.get(); - auto* raw_discovery_2 = discovery_2.get(); - std::vector<std::unique_ptr<U2fDiscovery>> discoveries; - discoveries.push_back(std::move(discovery_1)); - discoveries.push_back(std::move(discovery_2)); - request->SetDiscoveriesForTesting(std::move(discoveries)); - return {raw_discovery_1, raw_discovery_2}; -} - } // namespace class U2fRequestTest : public ::testing::Test { protected: + base::test::ScopedTaskEnvironment& scoped_task_environment() { + return scoped_task_environment_; + } + + test::ScopedFakeU2fDiscoveryFactory& discovery_factory() { + return discovery_factory_; + } + + private: base::test::ScopedTaskEnvironment scoped_task_environment_{ base::test::ScopedTaskEnvironment::MainThreadType::MOCK_TIME}; + test::ScopedFakeU2fDiscoveryFactory discovery_factory_; }; TEST_F(U2fRequestTest, TestIterateDevice) { - FakeU2fRequest request; - auto* discovery = - SetMockDiscovery(&request, std::make_unique<MockU2fDiscovery>()); + auto* discovery = discovery_factory().ForgeNextHidDiscovery(); + + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice}); + request.Start(); + auto device0 = std::make_unique<MockU2fDevice>(); auto device1 = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device0, GetId()).WillRepeatedly(::testing::Return("device0")); EXPECT_CALL(*device1, GetId()).WillRepeatedly(::testing::Return("device1")); + // Add two U2F devices discovery->AddDevice(std::move(device0)); discovery->AddDevice(std::move(device1)); @@ -99,7 +89,7 @@ // device will be tried again. Check for the expected behavior here. auto* mock_device = static_cast<MockU2fDevice*>(request.devices_.front()); EXPECT_CALL(*mock_device, TryWinkRef(_)); - scoped_task_environment_.FastForwardUntilNoTasksRemain(); + scoped_task_environment().FastForwardUntilNoTasksRemain(); EXPECT_EQ(mock_device, request.current_device_); EXPECT_EQ(static_cast<size_t>(1), request.devices_.size()); @@ -107,13 +97,13 @@ } TEST_F(U2fRequestTest, TestBasicMachine) { - FakeU2fRequest request; - auto* discovery = - SetMockDiscovery(&request, std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce(::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccess)); + auto* discovery = discovery_factory().ForgeNextHidDiscovery(); + + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice}); request.Start(); + ASSERT_NO_FATAL_FAILURE(discovery->WaitForCallToStartAndSimulateSuccess()); + // Add one U2F device auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()); @@ -125,38 +115,33 @@ } TEST_F(U2fRequestTest, TestAlreadyPresentDevice) { - auto discovery = std::make_unique<MockU2fDiscovery>(); + auto* discovery = discovery_factory().ForgeNextHidDiscovery(); + + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice}); + request.Start(); + auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); discovery->AddDevice(std::move(device)); - FakeU2fRequest request; - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery.get(), &MockU2fDiscovery::StartSuccess)); - SetMockDiscovery(&request, std::move(discovery)); - request.Start(); + ASSERT_NO_FATAL_FAILURE(discovery->WaitForCallToStartAndSimulateSuccess()); EXPECT_NE(nullptr, request.current_device_); } TEST_F(U2fRequestTest, TestMultipleDiscoveries) { + auto* discovery_1 = discovery_factory().ForgeNextHidDiscovery(); + auto* discovery_2 = discovery_factory().ForgeNextBleDiscovery(); + // Create a fake request with two different discoveries that both start up // successfully. - FakeU2fRequest request; - MockU2fDiscovery* discoveries[2]; - std::tie(discoveries[0], discoveries[1]) = - SetMockDiscoveries(&request, std::make_unique<MockU2fDiscovery>(), - std::make_unique<MockU2fDiscovery>()); - - EXPECT_CALL(*discoveries[0], Start()) - .WillOnce( - ::testing::Invoke(discoveries[0], &MockU2fDiscovery::StartSuccess)); - EXPECT_CALL(*discoveries[1], Start()) - .WillOnce( - ::testing::Invoke(discoveries[1], &MockU2fDiscovery::StartSuccess)); + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice, + U2fTransportProtocol::kBluetoothLowEnergy}); request.Start(); + ASSERT_NO_FATAL_FAILURE(discovery_1->WaitForCallToStartAndSimulateSuccess()); + ASSERT_NO_FATAL_FAILURE(discovery_2->WaitForCallToStartAndSimulateSuccess()); + // Let each discovery find a device. auto device_1 = std::make_unique<MockU2fDevice>(); auto device_2 = std::make_unique<MockU2fDevice>(); @@ -164,8 +149,8 @@ EXPECT_CALL(*device_2, GetId()).WillRepeatedly(::testing::Return("device_2")); auto* device_1_ptr = device_1.get(); auto* device_2_ptr = device_2.get(); - discoveries[0]->AddDevice(std::move(device_1)); - discoveries[1]->AddDevice(std::move(device_2)); + discovery_1->AddDevice(std::move(device_1)); + discovery_2->AddDevice(std::move(device_2)); // Iterate through the devices and make sure they are considered in the same // order as they were added. @@ -182,37 +167,29 @@ auto device_3 = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device_3, GetId()).WillRepeatedly(::testing::Return("device_3")); auto* device_3_ptr = device_3.get(); - discoveries[0]->AddDevice(std::move(device_3)); + discovery_1->AddDevice(std::move(device_3)); // Exhaust the timeout and remove the first two devices, making sure the just // added one is the only device considered. - scoped_task_environment_.FastForwardUntilNoTasksRemain(); - discoveries[1]->RemoveDevice("device_2"); - discoveries[0]->RemoveDevice("device_1"); + scoped_task_environment().FastForwardUntilNoTasksRemain(); + discovery_2->RemoveDevice("device_2"); + discovery_1->RemoveDevice("device_1"); EXPECT_EQ(device_3_ptr, request.current_device_); // Finally remove the last remaining device. - discoveries[0]->RemoveDevice("device_3"); + discovery_1->RemoveDevice("device_3"); EXPECT_EQ(nullptr, request.current_device_); } TEST_F(U2fRequestTest, TestSlowDiscovery) { + auto* fast_discovery = discovery_factory().ForgeNextHidDiscovery(); + auto* slow_discovery = discovery_factory().ForgeNextBleDiscovery(); + // Create a fake request with two different discoveries that start at // different times. - FakeU2fRequest request; - MockU2fDiscovery* fast_discovery; - MockU2fDiscovery* slow_discovery; - std::tie(fast_discovery, slow_discovery) = - SetMockDiscoveries(&request, std::make_unique<MockU2fDiscovery>(), - std::make_unique<MockU2fDiscovery>()); + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice, + U2fTransportProtocol::kBluetoothLowEnergy}); - EXPECT_CALL(*fast_discovery, Start()) - .WillOnce( - ::testing::Invoke(fast_discovery, &MockU2fDiscovery::StartSuccess)); - // slow_discovery does not succeed immediately. - EXPECT_CALL(*slow_discovery, Start()); - - // Let each discovery find a device. auto fast_device = std::make_unique<MockU2fDevice>(); auto slow_device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*fast_device, GetId()) @@ -233,16 +210,20 @@ ::testing::Invoke(MockU2fDevice::WinkDoNothing))); auto* fast_device_ptr = fast_device.get(); auto* slow_device_ptr = slow_device.get(); - fast_discovery->AddDeviceWithoutNotification(std::move(fast_device)); EXPECT_EQ(nullptr, request.current_device_); request.state_ = U2fRequest::State::INIT; // The discoveries will be started and |fast_discovery| will succeed // immediately with a device already found. - EXPECT_FALSE(fast_winked); request.Start(); + EXPECT_FALSE(fast_winked); + + ASSERT_NO_FATAL_FAILURE(fast_discovery->WaitForCallToStart()); + fast_discovery->AddDevice(std::move(fast_device)); + ASSERT_NO_FATAL_FAILURE(fast_discovery->SimulateStarted(true /* success */)); + EXPECT_TRUE(fast_winked); EXPECT_EQ(fast_device_ptr, request.current_device_); EXPECT_EQ(U2fRequest::State::BUSY, request.state_); @@ -255,9 +236,11 @@ // All devices have been tried and have been re-enqueued to try again in the // future. Now |slow_discovery| starts: - - slow_discovery->AddDeviceWithoutNotification(std::move(slow_device)); - slow_discovery->StartSuccess(); + ASSERT_TRUE(slow_discovery->is_start_requested()); + ASSERT_FALSE(slow_discovery->is_running()); + ASSERT_NO_FATAL_FAILURE(slow_discovery->WaitForCallToStart()); + slow_discovery->AddDevice(std::move(slow_device)); + ASSERT_NO_FATAL_FAILURE(slow_discovery->SimulateStarted(true /* success */)); // |fast_device| is already enqueued and will be retried immediately. EXPECT_EQ(fast_device_ptr, request.current_device_); @@ -279,49 +262,46 @@ } TEST_F(U2fRequestTest, TestMultipleDiscoveriesWithFailures) { + // Create a fake request with two different discoveries that both start up + // unsuccessfully. { - // Create a fake request with two different discoveries that both start up - // unsuccessfully. - FakeU2fRequest request; - MockU2fDiscovery* discoveries[2]; - std::tie(discoveries[0], discoveries[1]) = - SetMockDiscoveries(&request, std::make_unique<MockU2fDiscovery>(), - std::make_unique<MockU2fDiscovery>()); + auto* discovery_1 = discovery_factory().ForgeNextHidDiscovery(); + auto* discovery_2 = discovery_factory().ForgeNextBleDiscovery(); - EXPECT_CALL(*discoveries[0], Start()) - .WillOnce( - ::testing::Invoke(discoveries[0], &MockU2fDiscovery::StartFailure)); - EXPECT_CALL(*discoveries[1], Start()) - .WillOnce( - ::testing::Invoke(discoveries[1], &MockU2fDiscovery::StartFailure)); + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice, + U2fTransportProtocol::kBluetoothLowEnergy}); request.Start(); + + ASSERT_NO_FATAL_FAILURE(discovery_1->WaitForCallToStart()); + ASSERT_NO_FATAL_FAILURE(discovery_1->SimulateStarted(false /* success */)); + ASSERT_NO_FATAL_FAILURE(discovery_2->WaitForCallToStart()); + ASSERT_NO_FATAL_FAILURE(discovery_2->SimulateStarted(false /* success */)); + EXPECT_EQ(U2fRequest::State::OFF, request.state_); } + // Create a fake request with two different discoveries, where only one starts + // up successfully. { - // Create a fake request with two different discoveries, where only one - // starts up successfully. - FakeU2fRequest request; - MockU2fDiscovery* discoveries[2]; - std::tie(discoveries[0], discoveries[1]) = - SetMockDiscoveries(&request, std::make_unique<MockU2fDiscovery>(), - std::make_unique<MockU2fDiscovery>()); + auto* discovery_1 = discovery_factory().ForgeNextHidDiscovery(); + auto* discovery_2 = discovery_factory().ForgeNextBleDiscovery(); - EXPECT_CALL(*discoveries[0], Start()) - .WillOnce( - ::testing::Invoke(discoveries[0], &MockU2fDiscovery::StartSuccess)); - EXPECT_CALL(*discoveries[1], Start()) - .WillOnce( - ::testing::Invoke(discoveries[1], &MockU2fDiscovery::StartFailure)); + FakeU2fRequest request({U2fTransportProtocol::kUsbHumanInterfaceDevice, + U2fTransportProtocol::kBluetoothLowEnergy}); + request.Start(); + + ASSERT_NO_FATAL_FAILURE(discovery_1->WaitForCallToStart()); + ASSERT_NO_FATAL_FAILURE(discovery_1->SimulateStarted(false /* success */)); + ASSERT_NO_FATAL_FAILURE(discovery_2->WaitForCallToStart()); + ASSERT_NO_FATAL_FAILURE(discovery_2->SimulateStarted(true /* success */)); auto device0 = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device0, GetId()) .WillRepeatedly(::testing::Return("device_0")); EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discoveries[0]->AddDevice(std::move(device0)); + discovery_2->AddDevice(std::move(device0)); - request.Start(); EXPECT_EQ(U2fRequest::State::BUSY, request.state_); // Simulate an action that sets the request state to idle. @@ -335,7 +315,7 @@ .WillRepeatedly(::testing::Return("device_1")); EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discoveries[0]->AddDevice(std::move(device1)); + discovery_2->AddDevice(std::move(device1)); request.Transition(); EXPECT_EQ(U2fRequest::State::BUSY, request.state_);
diff --git a/device/fido/u2f_sign.cc b/device/fido/u2f_sign.cc index 4ddd8077..1f9c07b 100644 --- a/device/fido/u2f_sign.cc +++ b/device/fido/u2f_sign.cc
@@ -13,14 +13,14 @@ // static std::unique_ptr<U2fRequest> U2fSign::TrySign( service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, base::Optional<std::vector<uint8_t>> alt_application_parameter, SignResponseCallback completion_callback) { std::unique_ptr<U2fRequest> request = std::make_unique<U2fSign>( - connector, protocols, registered_keys, challenge_digest, + connector, transports, registered_keys, challenge_digest, application_parameter, std::move(alt_application_parameter), std::move(completion_callback)); request->Start(); @@ -29,14 +29,14 @@ } U2fSign::U2fSign(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, base::Optional<std::vector<uint8_t>> alt_application_parameter, SignResponseCallback completion_callback) : U2fRequest(connector, - protocols, + transports, std::move(application_parameter), std::move(challenge_digest), std::move(registered_keys)),
diff --git a/device/fido/u2f_sign.h b/device/fido/u2f_sign.h index 0327a33d..183e86b 100644 --- a/device/fido/u2f_sign.h +++ b/device/fido/u2f_sign.h
@@ -29,7 +29,7 @@ static std::unique_ptr<U2fRequest> TrySign( service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter, @@ -37,7 +37,7 @@ SignResponseCallback completion_callback); U2fSign(service_manager::Connector* connector, - const base::flat_set<U2fTransportProtocol>& protocols, + const base::flat_set<U2fTransportProtocol>& transports, std::vector<std::vector<uint8_t>> registered_keys, std::vector<uint8_t> challenge_digest, std::vector<uint8_t> application_parameter,
diff --git a/device/fido/u2f_sign_unittest.cc b/device/fido/u2f_sign_unittest.cc index cf8a4d0..f212e2b 100644 --- a/device/fido/u2f_sign_unittest.cc +++ b/device/fido/u2f_sign_unittest.cc
@@ -9,8 +9,8 @@ #include "base/run_loop.h" #include "base/test/scoped_task_environment.h" #include "device/fido/authenticator_data.h" +#include "device/fido/fake_u2f_discovery.h" #include "device/fido/mock_u2f_device.h" -#include "device/fido/mock_u2f_discovery.h" #include "device/fido/sign_response_data.h" #include "device/fido/u2f_response_test_data.h" #include "testing/gmock/include/gmock/gmock.h" @@ -99,29 +99,6 @@ test_data::kTestU2fSignResponse + length); } -// Convenience functions for setting a mock discovery. -MockU2fDiscovery* SetMockDiscovery( - U2fRequest* request, - std::unique_ptr<MockU2fDiscovery> discovery) { - auto* raw_discovery = discovery.get(); - std::vector<std::unique_ptr<U2fDiscovery>> discoveries; - discoveries.push_back(std::move(discovery)); - request->SetDiscoveriesForTesting(std::move(discoveries)); - return raw_discovery; -} - -} // namespace - -class U2fSignTest : public ::testing::Test { - public: - U2fSignTest() - : scoped_task_environment_( - base::test::ScopedTaskEnvironment::MainThreadType::UI) {} - - protected: - base::test::ScopedTaskEnvironment scoped_task_environment_; -}; - class TestSignCallback { public: TestSignCallback() @@ -132,11 +109,10 @@ void ReceivedCallback(U2fReturnCode status_code, base::Optional<SignResponseData> response_data) { response_ = std::make_pair(status_code, std::move(response_data)); - closure_.Run(); + run_loop_.Quit(); } void WaitForCallback() { - closure_ = run_loop_.QuitClosure(); run_loop_.Run(); } @@ -150,18 +126,48 @@ private: std::pair<U2fReturnCode, base::Optional<SignResponseData>> response_; - base::Closure closure_; U2fSign::SignResponseCallback callback_; base::RunLoop run_loop_; }; -TEST_F(U2fSignTest, TestCreateSignApduCommand) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.push_back( - std::vector<uint8_t>(std::begin(kKeyHandle), std::end(kKeyHandle))); - TestSignCallback cb; +} // namespace +class U2fSignTest : public ::testing::Test { + public: + U2fSignTest() + : scoped_task_environment_( + base::test::ScopedTaskEnvironment::MainThreadType::UI) {} + + void ForgeNextHidDiscovery() { + discovery_ = scoped_fake_discovery_factory_.ForgeNextHidDiscovery(); + } + + std::unique_ptr<U2fSign> CreateSignRequest() { + return CreateSignRequestWithKeys(std::vector<std::vector<uint8_t>>()); + } + + std::unique_ptr<U2fSign> CreateSignRequestWithKeys( + std::vector<std::vector<uint8_t>> registered_keys) { + ForgeNextHidDiscovery(); + return std::make_unique<U2fSign>( + nullptr /* connector */, + base::flat_set<U2fTransportProtocol>( + {U2fTransportProtocol::kUsbHumanInterfaceDevice}), + registered_keys, std::vector<uint8_t>(32), std::vector<uint8_t>(32), + base::nullopt, sign_callback_.callback()); + } + + test::FakeU2fDiscovery* discovery() const { return discovery_; } + TestSignCallback& sign_callback() { return sign_callback_; } + + protected: + base::test::ScopedTaskEnvironment scoped_task_environment_; + test::ScopedFakeU2fDiscoveryFactory scoped_fake_discovery_factory_; + test::FakeU2fDiscovery* discovery_; + TestSignCallback sign_callback_; +}; + +TEST_F(U2fSignTest, TestCreateSignApduCommand) { constexpr uint8_t kSignApduEncoded[] = { // clang-format off 0x00, 0x02, 0x03, 0x00, // CLA, INS, P1, P2 APDU instruction parameters @@ -184,16 +190,6 @@ // clang-format on }; - U2fSign u2f_sign(nullptr, protocols, handles, - std::vector<uint8_t>(std::begin(kChallengeDigest), - std::end(kChallengeDigest)), - std::vector<uint8_t>(std::begin(kAppId), std::end(kAppId)), - base::nullopt, cb.callback()); - const auto encoded_sign = u2f_sign.GetU2fSignApduCommand(handles[0]); - ASSERT_TRUE(encoded_sign); - EXPECT_THAT(encoded_sign->GetEncodedCommand(), - ::testing::ElementsAreArray(kSignApduEncoded)); - constexpr uint8_t kSignApduEncodedCheckOnly[] = { // clang-format off 0x00, 0x02, 0x07, 0x00, // CLA, INS, P1, P2 APDU instruction parameters @@ -216,29 +212,32 @@ // clang-format on }; + const std::vector<uint8_t> key_handle(std::begin(kKeyHandle), + std::end(kKeyHandle)); + U2fSign u2f_sign(nullptr /* connector */, {} /* transports */, + {key_handle} /* registered_keys */, + std::vector<uint8_t>(std::begin(kChallengeDigest), + std::end(kChallengeDigest)), + std::vector<uint8_t>(std::begin(kAppId), std::end(kAppId)), + base::nullopt, sign_callback().callback()); + + const auto encoded_sign = u2f_sign.GetU2fSignApduCommand(key_handle); + ASSERT_TRUE(encoded_sign); + EXPECT_THAT(encoded_sign->GetEncodedCommand(), + ::testing::ElementsAreArray(kSignApduEncoded)); + const auto encoded_sign_check_only = - u2f_sign.GetU2fSignApduCommand(handles[0], true); + u2f_sign.GetU2fSignApduCommand(key_handle, true); ASSERT_TRUE(encoded_sign_check_only); EXPECT_THAT(encoded_sign_check_only->GetEncodedCommand(), ::testing::ElementsAreArray(kSignApduEncodedCheckOnly)); } TEST_F(U2fSignTest, TestSignSuccess) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + const std::vector<uint8_t> signing_key_handle(32, 0x0A); + auto request = CreateSignRequestWithKeys({signing_key_handle}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -246,34 +245,24 @@ .WillOnce(::testing::Invoke(MockU2fDevice::NoErrorSign)); EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::SUCCESS, cb.GetReturnCode()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::SUCCESS, sign_callback().GetReturnCode()); // Correct key was sent so a sign response is expected. - EXPECT_EQ(GetTestAssertionSignature(), cb.GetResponseData()->signature()); + EXPECT_EQ(GetTestAssertionSignature(), + sign_callback().GetResponseData()->signature()); // Verify that we get the key handle used for signing. - EXPECT_EQ(handles[0], cb.GetResponseData()->raw_id()); + EXPECT_EQ(signing_key_handle, sign_callback().GetResponseData()->raw_id()); } TEST_F(U2fSignTest, TestDelayedSuccess) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + const std::vector<uint8_t> signing_key_handle(32, 0x0A); + auto request = CreateSignRequestWithKeys({signing_key_handle}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); // Go through the state machine twice before success. auto device = std::make_unique<MockU2fDevice>(); @@ -284,39 +273,28 @@ EXPECT_CALL(*device, TryWinkRef(_)) .Times(2) .WillRepeatedly(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::SUCCESS, cb.GetReturnCode()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::SUCCESS, sign_callback().GetReturnCode()); // Correct key was sent so a sign response is expected - EXPECT_EQ(GetTestAssertionSignature(), cb.GetResponseData()->signature()); + EXPECT_EQ(GetTestAssertionSignature(), + sign_callback().GetResponseData()->signature()); // Verify that we get the key handle used for signing - EXPECT_EQ(handles[0], cb.GetResponseData()->raw_id()); + EXPECT_EQ(signing_key_handle, sign_callback().GetResponseData()->raw_id()); } TEST_F(U2fSignTest, TestMultipleHandles) { - base::flat_set<U2fTransportProtocol> protocols; // Three wrong keys followed by a correct key ensuring the wrong keys will be // tested first. - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xB); - handles.emplace_back(32, 0xC); - handles.emplace_back(32, 0xD); - handles.emplace_back(32, 0xA); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + const std::vector<uint8_t> correct_key_handle(32, 0x0A); + auto request = CreateSignRequestWithKeys( + {std::vector<uint8_t>(32, 0x0B), std::vector<uint8_t>(32, 0x0C), + std::vector<uint8_t>(32, 0x0D), correct_key_handle}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); // Wrong key would respond with SW_WRONG_DATA. @@ -329,34 +307,23 @@ // Only one wink expected per device. EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::SUCCESS, cb.GetReturnCode()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::SUCCESS, sign_callback().GetReturnCode()); // Correct key was sent so a sign response is expected. - EXPECT_EQ(GetTestAssertionSignature(), cb.GetResponseData()->signature()); + EXPECT_EQ(GetTestAssertionSignature(), + sign_callback().GetResponseData()->signature()); // Verify that we get the key handle used for signing. - EXPECT_EQ(handles.back(), cb.GetResponseData()->raw_id()); + EXPECT_EQ(correct_key_handle, sign_callback().GetResponseData()->raw_id()); } TEST_F(U2fSignTest, TestMultipleDevices) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - handles.emplace_back(32, 0xB); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + const std::vector<uint8_t> correct_key_handle(32, 0x0A); + auto request = CreateSignRequestWithKeys( + {correct_key_handle, std::vector<uint8_t>(32, 0x0B)}); request->Start(); auto device0 = std::make_unique<MockU2fDevice>(); @@ -367,7 +334,7 @@ // One wink per device. EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device0)); + discovery()->AddDevice(std::move(device0)); // Second device will have a successful touch. auto device1 = std::make_unique<MockU2fDevice>(); @@ -377,34 +344,24 @@ // One wink per device. EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device1)); + discovery()->AddDevice(std::move(device1)); + discovery()->WaitForCallToStartAndSimulateSuccess(); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::SUCCESS, cb.GetReturnCode()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::SUCCESS, sign_callback().GetReturnCode()); // Correct key was sent so a sign response is expected. - EXPECT_EQ(GetTestAssertionSignature(), cb.GetResponseData()->signature()); + EXPECT_EQ(GetTestAssertionSignature(), + sign_callback().GetResponseData()->signature()); // Verify that we get the key handle used for signing. - EXPECT_EQ(handles[0], cb.GetResponseData()->raw_id()); + EXPECT_EQ(correct_key_handle, sign_callback().GetResponseData()->raw_id()); } TEST_F(U2fSignTest, TestFakeEnroll) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - handles.emplace_back(32, 0xB); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + const std::vector<uint8_t> correct_key_handle(32, 0x0A); + auto request = CreateSignRequestWithKeys( + {correct_key_handle, std::vector<uint8_t>(32, 0x0B)}); request->Start(); auto device0 = std::make_unique<MockU2fDevice>(); @@ -415,7 +372,7 @@ // One wink per device. EXPECT_CALL(*device0, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device0)); + discovery()->AddDevice(std::move(device0)); // Second device will be have a successful touch. auto device1 = std::make_unique<MockU2fDevice>(); @@ -428,12 +385,14 @@ // One wink per device. EXPECT_CALL(*device1, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device1)); + discovery()->AddDevice(std::move(device1)); + discovery()->WaitForCallToStartAndSimulateSuccess(); - cb.WaitForCallback(); + sign_callback().WaitForCallback(); // Device that responded had no correct keys. - EXPECT_EQ(U2fReturnCode::CONDITIONS_NOT_SATISFIED, cb.GetReturnCode()); - EXPECT_FALSE(cb.GetResponseData()); + EXPECT_EQ(U2fReturnCode::CONDITIONS_NOT_SATISFIED, + sign_callback().GetReturnCode()); + EXPECT_FALSE(sign_callback().GetResponseData()); } TEST_F(U2fSignTest, TestAuthenticatorDataForSign) { @@ -500,21 +459,9 @@ // Device returns success, but the response is unparse-able. TEST_F(U2fSignTest, TestSignWithCorruptedResponse) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - TestSignCallback cb; - - auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), - std::vector<uint8_t>(32), std::vector<uint8_t>(0), cb.callback()); - - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); + auto request = CreateSignRequestWithKeys({std::vector<uint8_t>(32, 0x0A)}); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -522,11 +469,11 @@ .WillOnce(::testing::Invoke(MockU2fDevice::SignWithCorruptedResponse)); EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::FAILURE, cb.GetReturnCode()); - EXPECT_FALSE(cb.GetResponseData()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::FAILURE, sign_callback().GetReturnCode()); + EXPECT_FALSE(sign_callback().GetResponseData()); } MATCHER_P(WithApplicationParameter, expected, "") { @@ -545,24 +492,21 @@ } TEST_F(U2fSignTest, TestAlternativeApplicationParameter) { - base::flat_set<U2fTransportProtocol> protocols; - std::vector<std::vector<uint8_t>> handles; - handles.emplace_back(32, 0xA); - TestSignCallback cb; - + const std::vector<uint8_t> signing_key_handle(32, 0x0A); const std::vector<uint8_t> primary_app_param(32, 1); const std::vector<uint8_t> alt_app_param(32, 2); + ForgeNextHidDiscovery(); auto request = std::make_unique<U2fSign>( - nullptr, protocols, handles, std::vector<uint8_t>(32), primary_app_param, - alt_app_param, cb.callback()); + nullptr /* connector */, + base::flat_set<U2fTransportProtocol>( + {U2fTransportProtocol::kUsbHumanInterfaceDevice}), + std::vector<std::vector<uint8_t>>({signing_key_handle}), + std::vector<uint8_t>(32), primary_app_param, alt_app_param, + sign_callback_.callback()); - auto* discovery = - SetMockDiscovery(request.get(), std::make_unique<MockU2fDiscovery>()); - EXPECT_CALL(*discovery, Start()) - .WillOnce( - ::testing::Invoke(discovery, &MockU2fDiscovery::StartSuccessAsync)); request->Start(); + discovery()->WaitForCallToStartAndSimulateSuccess(); auto device = std::make_unique<MockU2fDevice>(); EXPECT_CALL(*device, GetId()).WillRepeatedly(::testing::Return("device")); @@ -576,13 +520,14 @@ .WillOnce(::testing::Invoke(MockU2fDevice::NoErrorSign)); EXPECT_CALL(*device, TryWinkRef(_)) .WillOnce(::testing::Invoke(MockU2fDevice::WinkDoNothing)); - discovery->AddDevice(std::move(device)); + discovery()->AddDevice(std::move(device)); - cb.WaitForCallback(); - EXPECT_EQ(U2fReturnCode::SUCCESS, cb.GetReturnCode()); + sign_callback().WaitForCallback(); + EXPECT_EQ(U2fReturnCode::SUCCESS, sign_callback().GetReturnCode()); - EXPECT_EQ(GetTestAssertionSignature(), cb.GetResponseData()->signature()); - EXPECT_EQ(handles[0], cb.GetResponseData()->raw_id()); + EXPECT_EQ(GetTestAssertionSignature(), + sign_callback().GetResponseData()->signature()); + EXPECT_EQ(signing_key_handle, sign_callback().GetResponseData()->raw_id()); } } // namespace device
diff --git a/docs/README.md b/docs/README.md index 7f800e44..777b543 100644 --- a/docs/README.md +++ b/docs/README.md
@@ -127,7 +127,7 @@ * [base::Optional](optional.md) - How to use `base::Optional` in C++ code. * [Using the Origin Trials Framework](origin_trials_integration.md) - A framework for conditionally enabling experimental APIs for testing. -* [`SharedModelTypeProcessor` in Unified Sync and Storage](sync/uss/shared_model_type_processor.md) - +* [`ClientTagBasedModelTypeProcessor` in Unified Sync and Storage](sync/uss/client_tag_based_model_type_processor.md) - Notes on the central data structure used in Chrome Sync. * [Chrome Sync's Model API](sync/model_api.md) - Data models used for syncing information across devices using Chrome Sync. @@ -246,6 +246,12 @@ `android.util.Log` on Android, and usage guidelines. * [Chromoting Android Hacking](chromoting_android_hacking.md) - Viewing the logs and debugging the Chrome Remote Desktop Android client. +* [Android Java Static Analysis](../build/android/docs/lint.md) - Catching + Java related issues at compile time with the 'lint' tool. +* [Java Code Coverage](../build/android/docs/coverage.md) - Collecting code + coverage data with the EMMA tool. +* [Android BuildConfig files](../build/android/docs/build_config.md) - + What are .build_config files and how they are used. ### Misc iOS-Specific Docs * [Continuous Build and Test Infrastructure for Chromium for iOS](ios/infra.md)
diff --git a/docs/sync/uss/shared_model_type_processor.md b/docs/sync/uss/client_tag_based_model_type_processor.md similarity index 96% rename from docs/sync/uss/shared_model_type_processor.md rename to docs/sync/uss/client_tag_based_model_type_processor.md index 46bc5a11..bcadfc9a4 100644 --- a/docs/sync/uss/shared_model_type_processor.md +++ b/docs/sync/uss/client_tag_based_model_type_processor.md
@@ -1,6 +1,6 @@ -# SharedModelTypeProcessor +# ClientTagBasedModelTypeProcessor -The [`SharedModelTypeProcessor`][SMTP] is a crucial piece of the USS codepath. +The [`ClientTagBasedModelTypeProcessor`][SMTP] is a crucial piece of the USS codepath. It lives on the model thread and performs the tracking of sync metadata for the [`ModelTypeSyncBridge`][MTSB] that owns it by implementing the [`ModelTypeChangeProcessor`][MTCP] interface, as well as sending commit requests @@ -8,7 +8,7 @@ interface and receiving updates from the same worker via the [`ModelTypeProcessor`][MTP] interface. -[SMTP]: https://cs.chromium.org/chromium/src/components/sync/model_impl/shared_model_type_processor.h +[SMTP]: https://cs.chromium.org/chromium/src/components/sync/model_impl/client_tag_based_model_type_processor.h [MTSB]: https://cs.chromium.org/chromium/src/components/sync/model/model_type_sync_bridge.h [MTCP]: https://cs.chromium.org/chromium/src/components/sync/model/model_type_change_processor.h [MTW]: https://cs.chromium.org/chromium/src/components/sync/engine_impl/model_type_worker.h
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc b/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc index 3fe9764..58a2402e 100644 --- a/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc +++ b/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc
@@ -1093,6 +1093,7 @@ .Set("ModelID", "test_model_id") .Set("NetworkTechnology", "GSM") .Set("RoamingState", "Home") + .SetBoolean("Scanning", false) .Build()) .Set("ConnectionState", "Connected") .Set("GUID", "cellular_guid") @@ -1146,6 +1147,7 @@ .Set("MIN", "test_min") .Set("NetworkTechnology", "GSM") .Set("RoamingState", "Home") + .SetBoolean("Scanning", false) .Set("APNList", ListBuilder() .Append(expected_apn->CreateDeepCopy()) .Build())
diff --git a/extensions/common/api/networking_private.idl b/extensions/common/api/networking_private.idl index 4daf58df..e7ee941 100644 --- a/extensions/common/api/networking_private.idl +++ b/extensions/common/api/networking_private.idl
@@ -580,6 +580,7 @@ ActivationStateType? ActivationState; DOMString? NetworkTechnology; DOMString? RoamingState; + boolean? Scanning; boolean? SIMPresent; long? SignalStrength; };
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json index d0b9d39..2fe5ca3 100644 --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json
@@ -2807,6 +2807,23 @@ "features": [ "dont_use_eglclientwaitsync_with_timeout" ] + }, + { + "id": 261, + "cr_bugs": [817286], + "description": "Fallback to D3D9 if basic info collection fails on Win7", + "os": { + "type": "win", + "version": { + "op": "=", + "value": "7.0" + } + }, + "vendor_id": "0xffff", + "device_id": ["0xfffe"], + "features": [ + "disable_d3d11" + ] } ] }
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc index ea4c97a..fed3ff8 100644 --- a/gpu/config/gpu_info_collector_win.cc +++ b/gpu/config/gpu_info_collector_win.cc
@@ -302,7 +302,7 @@ // nvd3d9wrap.dll is loaded into all processes when Optimus is enabled. HMODULE nvd3d9wrap = GetModuleHandleW(L"nvd3d9wrap.dll"); - gpu_info->optimus = nvd3d9wrap != NULL; + gpu_info->optimus = nvd3d9wrap != nullptr; // Taken from http://www.nvidia.com/object/device_ids.html DISPLAY_DEVICE dd; @@ -324,6 +324,9 @@ // Chained DD" or the citrix display driver. if (wcscmp(dd.DeviceString, L"RDPUDD Chained DD") != 0 && wcscmp(dd.DeviceString, L"Citrix Systems Inc. Display Driver") != 0) { + // Set vendor_id/device_id for blacklisting purpose. + gpu_info->gpu.vendor_id = 0xffff; + gpu_info->gpu.device_id = 0xfffe; return false; } }
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json index b1679dc..c17b70b 100644 --- a/gpu/config/software_rendering_list.json +++ b/gpu/config/software_rendering_list.json
@@ -131,6 +131,10 @@ }, { "driver_vendor": "swiftshader" + }, + { + "vendor_id": "0xffff", + "device_id": ["0xfffe"] } ], "features": [
diff --git a/ios/chrome/browser/google/BUILD.gn b/ios/chrome/browser/google/BUILD.gn index 6e7cbd7..b629ee4 100644 --- a/ios/chrome/browser/google/BUILD.gn +++ b/ios/chrome/browser/google/BUILD.gn
@@ -40,6 +40,7 @@ "//components/search_provider_logos", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/search_engines", + "//ios/chrome/browser/ui:ui_util", "//ios/web", "//net", "//ui/gfx",
diff --git a/ios/chrome/browser/google/google_logo_service.mm b/ios/chrome/browser/google/google_logo_service.mm index a16ab22..e73632d 100644 --- a/ios/chrome/browser/google/google_logo_service.mm +++ b/ios/chrome/browser/google/google_logo_service.mm
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/strings/sys_string_conversions.h" #include "components/image_fetcher/ios/ios_image_decoder_impl.h" +#include "ios/chrome/browser/ui/ui_util.h" #include "net/url_request/url_request_context_getter.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -36,17 +37,17 @@ GoogleLogoService::GoogleLogoService( TemplateURLService* template_url_service, scoped_refptr<net::URLRequestContextGetter> request_context_getter) - : LogoServiceImpl( - DoodleDirectory(), - // Personalized Doodles aren't supported on iOS (see - // https://crbug.com/711314), so no need to pass a - // GaiaCookieManagerService. - /*cookie_service=*/nullptr, - template_url_service, - image_fetcher::CreateIOSImageDecoder(), - request_context_getter, - /*want_gray_logo_getter=*/base::BindRepeating([] { return false; })) { -} + : LogoServiceImpl(DoodleDirectory(), + // Personalized Doodles aren't supported on iOS (see + // https://crbug.com/711314), so no need to pass a + // GaiaCookieManagerService. + /*cookie_service=*/nullptr, + template_url_service, + image_fetcher::CreateIOSImageDecoder(), + request_context_getter, + /*want_gray_logo_getter=*/base::BindRepeating([] { + return !IsUIRefreshPhase1Enabled(); + })) {} GoogleLogoService::~GoogleLogoService() {}
diff --git a/ios/chrome/browser/providers/images/BUILD.gn b/ios/chrome/browser/providers/images/BUILD.gn index 9aad49e..f1417202 100644 --- a/ios/chrome/browser/providers/images/BUILD.gn +++ b/ios/chrome/browser/providers/images/BUILD.gn
@@ -10,6 +10,7 @@ deps = [ "//base", "//ios/chrome/app/theme", + "//ios/chrome/browser/ui/toolbar/buttons/resources:toolbar_search", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images", "//ui/base",
diff --git a/ios/chrome/browser/providers/images/chromium_branded_image_provider.h b/ios/chrome/browser/providers/images/chromium_branded_image_provider.h index 66efc97..2ded8634 100644 --- a/ios/chrome/browser/providers/images/chromium_branded_image_provider.h +++ b/ios/chrome/browser/providers/images/chromium_branded_image_provider.h
@@ -20,6 +20,7 @@ UIImage* GetSigninConfirmationPersonalizeServicesImage() override; bool GetToolbarVoiceSearchButtonImageId(int* image_id) override; UIImage* GetWhatsNewIconImage(WhatsNewIcon type) override; + UIImage* GetToolbarSearchButtonImage(SearchEngineIcon type) override; private: DISALLOW_COPY_AND_ASSIGN(ChromiumBrandedImageProvider);
diff --git a/ios/chrome/browser/providers/images/chromium_branded_image_provider.mm b/ios/chrome/browser/providers/images/chromium_branded_image_provider.mm index edbe6a5..47349b4 100644 --- a/ios/chrome/browser/providers/images/chromium_branded_image_provider.mm +++ b/ios/chrome/browser/providers/images/chromium_branded_image_provider.mm
@@ -7,7 +7,6 @@ #import <UIKit/UIKit.h> #include "ios/chrome/grit/ios_theme_resources.h" -#include "ios/public/provider/chrome/browser/images/whats_new_icon.h" #include "ui/base/resource/resource_bundle.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -55,3 +54,8 @@ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); return rb.GetNativeImageNamed(IDR_IOS_PROMO_INFO).ToUIImage(); } + +UIImage* ChromiumBrandedImageProvider::GetToolbarSearchButtonImage( + SearchEngineIcon type) { + return [UIImage imageNamed:@"toolbar_search"]; +}
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm index 1bb8047..22501e08 100644 --- a/ios/chrome/browser/ui/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -1989,7 +1989,7 @@ [[self view] addSubview:_fakeStatusBarView]; } else { // Add a white bar on phone so that the status bar on the NTP is white. - [_fakeStatusBarView setBackgroundColor:[UIColor whiteColor]]; + [_fakeStatusBarView setBackgroundColor:ntp_home::kNTPBackgroundColor()]; [self.view insertSubview:_fakeStatusBarView atIndex:0]; } }
diff --git a/ios/chrome/browser/ui/content_suggestions/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/BUILD.gn index fe1f7d8..018237d7 100644 --- a/ios/chrome/browser/ui/content_suggestions/BUILD.gn +++ b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
@@ -145,6 +145,9 @@ "ntp_home_constant.mm", ] configs += [ "//build/config/compiler:enable_arc" ] + deps = [ + "//ios/chrome/browser/ui:ui_util", + ] } source_set("content_suggestions_ui_util") {
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm index b416059f..2758507 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -152,8 +152,6 @@ self.primaryToolbarViewController; self.primaryToolbarMediator = [[ToolbarMediator alloc] init]; - self.primaryToolbarMediator.voiceSearchProvider = - ios::GetChromeBrowserProvider()->GetVoiceSearchProvider(); self.primaryToolbarMediator.consumer = self.primaryToolbarViewController; self.primaryToolbarMediator.webStateList = self.webStateList; }
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm index 4c4733f..c4338b7 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
@@ -39,7 +39,6 @@ #include "ios/chrome/common/app_group/app_group_constants.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #include "ios/public/provider/chrome/browser/images/branded_image_provider.h" -#include "ios/public/provider/chrome/browser/images/whats_new_icon.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm index b0909ca..aa1aeec 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
@@ -231,7 +231,7 @@ _collectionUpdater.collectionViewController = self; self.collectionView.delegate = self; - self.collectionView.backgroundColor = [UIColor whiteColor]; + self.collectionView.backgroundColor = ntp_home::kNTPBackgroundColor(); if (ShouldCellsBeFullWidth( [UIApplication sharedApplication].keyWindow.traitCollection)) { self.styler.cellStyle = MDCCollectionViewCellStyleGrouped; @@ -474,7 +474,7 @@ shouldUseCustomStyleForSection:indexPath.section]) { return [UIColor clearColor]; } - return [UIColor whiteColor]; + return ntp_home::kNTPBackgroundColor(); } - (CGSize)collectionView:(UICollectionView*)collectionView
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h index df40b48..c7f22f2 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h
@@ -40,6 +40,9 @@ // Height of the first suggestions peeking at the bottom of the screen. extern const CGFloat kSuggestionPeekingHeight; +// The background color of the NTP. +UIColor* kNTPBackgroundColor(); + } // namespace ntp_home #endif // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_NTP_HOME_CONSTANT_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm index 05b8fc1a..d0d8e7b 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.mm
@@ -3,6 +3,7 @@ // found in the LICENSE file. #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" +#include "ios/chrome/browser/ui/ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -16,4 +17,13 @@ const CGFloat kMostVisitedBottomMarginIPad = 80; const CGFloat kMostVisitedBottomMarginIPhone = 60; const CGFloat kSuggestionPeekingHeight = 60; + +UIColor* kNTPBackgroundColor() { + if (IsUIRefreshPhase1Enabled()) { + return [UIColor colorWithWhite:0.98 alpha:1.0]; + } else { + return [UIColor whiteColor]; + } +} + } // namespace ntp_home
diff --git a/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h index a8aed28c..32dcfbe 100644 --- a/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h +++ b/ios/chrome/browser/ui/ntp/notification_promo_whats_new.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "ios/chrome/browser/notification_promo.h" -#include "ios/public/provider/chrome/browser/images/whats_new_icon.h" +#include "ios/public/provider/chrome/browser/images/branded_image_icon_types.h" #include "url/gurl.h" namespace base {
diff --git a/ios/chrome/browser/ui/ntp/notification_promo_whats_new_unittest.mm b/ios/chrome/browser/ui/ntp/notification_promo_whats_new_unittest.mm index cc1ecf6..a585500d 100644 --- a/ios/chrome/browser/ui/ntp/notification_promo_whats_new_unittest.mm +++ b/ios/chrome/browser/ui/ntp/notification_promo_whats_new_unittest.mm
@@ -16,7 +16,7 @@ #include "components/prefs/testing_pref_service.h" #include "components/variations/variations_associated_data.h" #include "ios/chrome/grit/ios_chromium_strings.h" -#include "ios/public/provider/chrome/browser/images/whats_new_icon.h" +#include "ios/public/provider/chrome/browser/images/branded_image_icon_types.h" #include "testing/platform_test.h" #include "ui/base/l10n/l10n_util.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/overscroll_actions/BUILD.gn b/ios/chrome/browser/ui/overscroll_actions/BUILD.gn index 0a403ba..0cbbc1b 100644 --- a/ios/chrome/browser/ui/overscroll_actions/BUILD.gn +++ b/ios/chrome/browser/ui/overscroll_actions/BUILD.gn
@@ -23,6 +23,7 @@ "//ios/chrome/app/theme", "//ios/chrome/browser/ui", "//ios/chrome/browser/ui:notifications", + "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant", "//ios/chrome/browser/ui/fullscreen", "//ios/chrome/browser/ui/history_popup/requirements", "//ios/chrome/browser/ui/page_info:coordinator",
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm index 9465324..3bf59df4 100644 --- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm +++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
@@ -8,6 +8,7 @@ #include "base/logging.h" #include "base/numerics/math_constants.h" +#import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" #include "ios/chrome/browser/ui/rtl_geometry.h" #include "ios/chrome/browser/ui/uikit_ui_util.h" #include "ios/chrome/grit/ios_theme_resources.h" @@ -841,7 +842,7 @@ switch (style) { case OverscrollStyle::NTP_NON_INCOGNITO: [self.shadowView setHidden:YES]; - self.backgroundColor = [UIColor whiteColor]; + self.backgroundColor = ntp_home::kNTPBackgroundColor(); break; case OverscrollStyle::NTP_INCOGNITO: [self.shadowView setHidden:YES];
diff --git a/ios/chrome/browser/ui/tab_grid/BUILD.gn b/ios/chrome/browser/ui/tab_grid/BUILD.gn index 57c0e97b..01cf67c1 100644 --- a/ios/chrome/browser/ui/tab_grid/BUILD.gn +++ b/ios/chrome/browser/ui/tab_grid/BUILD.gn
@@ -39,6 +39,8 @@ "grid_cell.h", "grid_cell.mm", "grid_commands.h", + "grid_constants.h", + "grid_constants.mm", "grid_consumer.h", "grid_image_data_source.h", "grid_item.h",
diff --git a/ios/chrome/browser/ui/tab_grid/grid_constants.h b/ios/chrome/browser/ui/tab_grid/grid_constants.h new file mode 100644 index 0000000..10126be --- /dev/null +++ b/ios/chrome/browser/ui/tab_grid/grid_constants.h
@@ -0,0 +1,16 @@ +// 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 IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_CONSTANTS_H_ +#define IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_CONSTANTS_H_ + +#import <Foundation/Foundation.h> + +// Accessibility identifier prefix of a grid cell. To reference a specific cell, +// concatenate |kGridCellIdentifierPrefix| with the index of the cell. For +// example, [NSString stringWithFormat:@"%@%d", kGridCellIdentifierPrefix, +// index]. +extern NSString* const kGridCellIdentifierPrefix; + +#endif // IOS_CHROME_BROWSER_UI_TAB_GRID_GRID_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/tab_grid/grid_constants.mm b/ios/chrome/browser/ui/tab_grid/grid_constants.mm new file mode 100644 index 0000000..99a9aece --- /dev/null +++ b/ios/chrome/browser/ui/tab_grid/grid_constants.mm
@@ -0,0 +1,12 @@ +// 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 "ios/chrome/browser/ui/tab_grid/grid_constants.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +// Accessibility identifier prefix of a grid cell. +NSString* const kGridCellIdentifierPrefix = @"GridCellIdentifierPrefix";
diff --git a/ios/chrome/browser/ui/tab_grid/grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/grid_view_controller.mm index e4d83b4..b5e6f9a9 100644 --- a/ios/chrome/browser/ui/tab_grid/grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_grid/grid_view_controller.mm
@@ -8,6 +8,7 @@ #import "base/mac/foundation_util.h" #import "base/numerics/safe_conversions.h" #import "ios/chrome/browser/ui/tab_grid/grid_cell.h" +#import "ios/chrome/browser/ui/tab_grid/grid_constants.h" #import "ios/chrome/browser/ui/tab_grid/grid_image_data_source.h" #import "ios/chrome/browser/ui/tab_grid/grid_item.h" #import "ios/chrome/browser/ui/tab_grid/grid_layout.h" @@ -100,6 +101,9 @@ GridCell* cell = base::mac::ObjCCastStrict<GridCell>([collectionView dequeueReusableCellWithReuseIdentifier:kCellIdentifier forIndexPath:indexPath]); + cell.accessibilityIdentifier = + [NSString stringWithFormat:@"%@%ld", kGridCellIdentifierPrefix, + base::checked_cast<long>(indexPath.item)]; cell.delegate = self; cell.theme = self.theme; GridItem* item = self.items[indexPath.item];
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_egtest.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_egtest.mm index 2488df3..2f74f0a 100644 --- a/ios/chrome/browser/ui/tab_grid/tab_grid_egtest.mm +++ b/ios/chrome/browser/ui/tab_grid/tab_grid_egtest.mm
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import "ios/chrome/browser/ui/tab_grid/grid_constants.h" #import "ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.h" #import "ios/chrome/test/app/chrome_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" @@ -19,6 +20,10 @@ return grey_allOf(grey_accessibilityID(kTabGridDoneButtonAccessibilityID), grey_sufficientlyVisible(), nil); } +// Identifer for cell at given |index|. +NSString* IdentifierForCellAtIndex(unsigned int index) { + return [NSString stringWithFormat:@"%@%u", kGridCellIdentifierPrefix, index]; +} } // namespace @interface TabGridTestCase : ChromeTestCase @@ -34,4 +39,15 @@ performAction:grey_tap()]; } +// Tests that tapping on the first cell shows that tab. +- (void)testTappingOnFirstCell { + [[EarlGrey selectElementWithMatcher:chrome_test_util::ShowTabsButton()] + performAction:grey_tap()]; + [[EarlGrey selectElementWithMatcher:grey_accessibilityID( + IdentifierForCellAtIndex(0))] + performAction:grey_tap()]; + [[EarlGrey selectElementWithMatcher:chrome_test_util::ShowTabsButton()] + assertWithMatcher:grey_sufficientlyVisible()]; +} + @end
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm index 6e0d026..b0b5af8 100644 --- a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -98,6 +98,11 @@ // Call the current page setter to sync the scroll view offset to the current // page value. self.currentPage = _currentPage; + + if (animated && self.transitionCoordinator) { + [self animateToolbarsForAppearance]; + } + [super viewWillAppear:animated]; } @@ -425,6 +430,36 @@ forControlEvents:UIControlEventTouchUpInside]; } +// Translates the toolbar views offscreen and then animates them back in using +// the transition coordinator. Transitions are preferred here since they don't +// interact with the layout system at all. +- (void)animateToolbarsForAppearance { + DCHECK(self.transitionCoordinator); + // Capture the current toolbar transforms. + CGAffineTransform topToolbarBaseTransform = self.topToolbar.transform; + CGAffineTransform bottomToolbarBaseTransform = self.bottomToolbar.transform; + // Translate the top toolbar up offscreen by shifting it up by its height. + self.topToolbar.transform = + CGAffineTransformTranslate(self.topToolbar.transform, /*tx=*/0, + /*ty=*/-self.topToolbar.bounds.size.height); + // Translate the bottom toolbar down offscreen by shifting it down by its + // height. + self.bottomToolbar.transform = + CGAffineTransformTranslate(self.bottomToolbar.transform, /*tx=*/0, + /*ty=*/self.topToolbar.bounds.size.height); + // Block that restores the toolbar transforms, suitable for using with the + // transition coordinator. + void (^animation)(id<UIViewControllerTransitionCoordinatorContext>) = + ^(id<UIViewControllerTransitionCoordinatorContext> context) { + self.topToolbar.transform = topToolbarBaseTransform; + self.bottomToolbar.transform = bottomToolbarBaseTransform; + }; + // Animate the toolbars into place alongside the current transition by + // restoring their transforms. + [self.transitionCoordinator animateAlongsideTransition:animation + completion:nil]; +} + #pragma mark - GridViewControllerDelegate - (void)gridViewController:(GridViewController*)gridViewController
diff --git a/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_coordinator.mm b/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_coordinator.mm index b2782d3..6ed260d 100644 --- a/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_coordinator.mm +++ b/ios/chrome/browser/ui/toolbar/adaptive/adaptive_toolbar_coordinator.mm
@@ -59,10 +59,6 @@ self.mediator = [[ToolbarMediator alloc] init]; self.mediator.templateURLService = ios::TemplateURLServiceFactory::GetForBrowserState(self.browserState); - self.mediator.imageProvider = - ios::GetChromeBrowserProvider()->GetBrandedImageProvider(); - self.mediator.voiceSearchProvider = - ios::GetChromeBrowserProvider()->GetVoiceSearchProvider(); self.mediator.consumer = self.viewController; self.mediator.webStateList = self.webStateList; self.mediator.bookmarkModel =
diff --git a/ios/chrome/browser/ui/toolbar/adaptive/primary_toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/adaptive/primary_toolbar_view_controller.mm index 0d592aac..d0098cf 100644 --- a/ios/chrome/browser/ui/toolbar/adaptive/primary_toolbar_view_controller.mm +++ b/ios/chrome/browser/ui/toolbar/adaptive/primary_toolbar_view_controller.mm
@@ -61,14 +61,12 @@ self.view.backgroundColor = self.buttonFactory.toolbarConfiguration.NTPBackgroundColor; - self.view.blur.hidden = YES; self.view.locationBarContainer.hidden = YES; } - (void)resetAfterSideSwipeSnapshot { [super resetAfterSideSwipeSnapshot]; self.view.backgroundColor = nil; - self.view.blur.hidden = NO; self.view.locationBarContainer.hidden = NO; }
diff --git a/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn b/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn index 96a6db16..052b74c 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/buttons/BUILD.gn
@@ -45,6 +45,7 @@ "//ios/chrome/app/theme", "//ios/chrome/browser/ui", "//ios/chrome/browser/ui/commands", + "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant", "//ios/chrome/browser/ui/toolbar:resource_macros", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/toolbar/public:toolbar_base_feature",
diff --git a/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm b/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm index 95c80051..3ecf9077 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm +++ b/ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.h" #import "base/logging.h" +#import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" #import "ios/chrome/browser/ui/toolbar/buttons/toolbar_constants.h" #include "ios/chrome/browser/ui/ui_util.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" @@ -47,7 +48,7 @@ - (UIColor*)NTPBackgroundColor { switch (self.style) { case NORMAL: - return [UIColor whiteColor]; + return ntp_home::kNTPBackgroundColor(); case INCOGNITO: return [UIColor colorWithWhite:kNTPBackgroundColorBrightnessIncognito alpha:1.0];
diff --git a/ios/chrome/browser/ui/toolbar/clean/BUILD.gn b/ios/chrome/browser/ui/toolbar/clean/BUILD.gn index 5bc10e59..98a215c 100644 --- a/ios/chrome/browser/ui/toolbar/clean/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/clean/BUILD.gn
@@ -40,7 +40,6 @@ "//ios/chrome/browser/ui/omnibox/popup", "//ios/chrome/browser/ui/toolbar:toolbar_ui", "//ios/chrome/browser/ui/toolbar/buttons", - "//ios/chrome/browser/ui/toolbar/buttons/resources:toolbar_search", "//ios/chrome/browser/ui/toolbar/keyboard_assist", "//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/tools_menu", @@ -54,6 +53,10 @@ "//ios/public/provider/chrome/browser/voice", "//ios/third_party/material_components_ios", "//ios/web", + + # Remove this dependency when the code uses the method + # GetToolbarSearchButtonImage(SearchEngineIcon) overload. + "//ios/chrome/browser/ui/toolbar/buttons/resources:toolbar_search", ] allow_circular_includes_from = [ "//ios/chrome/browser/ui/location_bar" ] @@ -109,6 +112,8 @@ "//ios/chrome/browser/ui/toolbar/test", "//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list:test_support", + "//ios/chrome/test:test_support", + "//ios/public/provider/chrome/browser:test_support", "//ios/public/provider/chrome/browser/images:test_support", "//ios/public/provider/chrome/browser/voice", "//ios/web",
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm index ae73034..a43f8a58 100644 --- a/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm +++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_coordinator.mm
@@ -201,8 +201,6 @@ self.browserState) toolbarButton:self.toolbarViewController.toolsMenuButton]; - self.mediator.voiceSearchProvider = - ios::GetChromeBrowserProvider()->GetVoiceSearchProvider(); self.mediator.consumer = self.toolbarViewController; self.mediator.webStateList = self.webStateList; self.mediator.bookmarkModel =
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.h b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.h index 8454c805..fafa28b9 100644 --- a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.h +++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.h
@@ -15,9 +15,7 @@ namespace web { class WebState; } -class BrandedImageProvider; class TemplateURLService; -class VoiceSearchProvider; class WebStateList; // A mediator object that provides the relevant properties of a web state @@ -27,9 +25,6 @@ // TemplateURLService used to check the default search engine. @property(nonatomic, assign) TemplateURLService* templateURLService; -// Image provider for the branded images. -@property(nonatomic, assign) BrandedImageProvider* imageProvider; - // The WebStateList that this mediator listens for any changes on the total // number of Webstates. @property(nonatomic, assign) WebStateList* webStateList; @@ -41,9 +36,6 @@ // object and may be nil. @property(nonatomic, strong) id<ToolbarConsumer> consumer; -// The voice search provider for this mediator. -@property(nonatomic, assign) VoiceSearchProvider* voiceSearchProvider; - // Updates the consumer to conforms to |webState|. - (void)updateConsumerForWebState:(web::WebState*)webState;
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.mm index 480577f..9cea431 100644 --- a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.mm +++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator.mm
@@ -14,6 +14,7 @@ #import "ios/chrome/browser/ui/toolbar/clean/toolbar_consumer.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" +#include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/images/branded_image_provider.h" #import "ios/public/provider/chrome/browser/voice/voice_search_provider.h" #import "ios/web/public/navigation_manager.h" @@ -46,9 +47,7 @@ @synthesize bookmarkModel = _bookmarkModel; @synthesize consumer = _consumer; -@synthesize imageProvider = _imageProvider; @synthesize templateURLService = _templateURLService; -@synthesize voiceSearchProvider = _voiceSearchProvider; @synthesize webState = _webState; @synthesize webStateList = _webStateList; @@ -179,19 +178,6 @@ } } -- (void)setImageProvider:(BrandedImageProvider*)imageProvider { - _imageProvider = imageProvider; - [self searchEngineChanged]; -} - -- (void)setVoiceSearchProvider:(VoiceSearchProvider*)voiceSearchProvider { - _voiceSearchProvider = voiceSearchProvider; - if (_voiceSearchProvider) { - [self.consumer - setVoiceSearchEnabled:_voiceSearchProvider->IsVoiceSearchEnabled()]; - } -} - - (void)setWebState:(web::WebState*)webState { if (_webState) { _webState->RemoveObserver(_webStateObserver.get()); @@ -210,10 +196,9 @@ - (void)setConsumer:(id<ToolbarConsumer>)consumer { _consumer = consumer; - if (self.voiceSearchProvider) { - [consumer - setVoiceSearchEnabled:self.voiceSearchProvider->IsVoiceSearchEnabled()]; - } + [_consumer setVoiceSearchEnabled:ios::GetChromeBrowserProvider() + ->GetVoiceSearchProvider() + ->IsVoiceSearchEnabled()]; [self searchEngineChanged]; if (self.webState) { [self updateConsumer]; @@ -329,22 +314,23 @@ #pragma mark - SearchEngineObserving - (void)searchEngineChanged { - if (!self.templateURLService || !self.imageProvider) { - [self.consumer setSearchIcon:[UIImage imageNamed:@"toolbar_search"]]; - return; + BOOL showBrandedSearchIcon = NO; + if (self.templateURLService) { + const TemplateURL* defaultURL = + self.templateURLService->GetDefaultSearchProvider(); + if (defaultURL) { + showBrandedSearchIcon = + defaultURL->GetEngineType( + self.templateURLService->search_terms_data()) == + SEARCH_ENGINE_GOOGLE; + } } - BOOL showBrandedSearchIcon = NO; - const TemplateURL* defaultURL = - self.templateURLService->GetDefaultSearchProvider(); - if (defaultURL) { - showBrandedSearchIcon = defaultURL->GetEngineType( - self.templateURLService->search_terms_data()) == - SEARCH_ENGINE_GOOGLE; - } UIImage* searchIcon = nil; if (showBrandedSearchIcon) { - searchIcon = self.imageProvider->GetToolbarSearchButtonImage(); + searchIcon = ios::GetChromeBrowserProvider() + ->GetBrandedImageProvider() + ->GetToolbarSearchButtonImage(); } if (!searchIcon) { searchIcon = [UIImage imageNamed:@"toolbar_search"];
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator_unittest.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator_unittest.mm index 87dd174..f6f7455f 100644 --- a/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator_unittest.mm +++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_mediator_unittest.mm
@@ -23,7 +23,9 @@ #include "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" #import "ios/chrome/browser/web_state_list/web_state_opener.h" +#include "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/images/test_branded_image_provider.h" +#include "ios/public/provider/chrome/browser/test_chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/voice/voice_search_provider.h" #import "ios/web/public/test/fakes/fake_navigation_context.h" #import "ios/web/public/test/fakes/test_navigation_manager.h" @@ -42,8 +44,88 @@ using bookmarks::BookmarkModel; namespace { -class MockEnabledVoiceSearchProvider : public VoiceSearchProvider { - bool IsVoiceSearchEnabled() const override { return true; } + +// Test VoiceSearchProvider that allow overriding whether voice search +// is enabled or not. +class TestToolbarMediatorVoiceSearchProvider : public VoiceSearchProvider { + public: + TestToolbarMediatorVoiceSearchProvider() = default; + ~TestToolbarMediatorVoiceSearchProvider() override = default; + + // Setter to control the value returned by IsVoiceSearchEnabled(). + void set_voice_search_enabled(bool enabled) { + voice_search_enabled_ = enabled; + } + + // VoiceSearchProvider implementation. + bool IsVoiceSearchEnabled() const override { return voice_search_enabled_; } + + private: + bool voice_search_enabled_ = true; + + DISALLOW_COPY_AND_ASSIGN(TestToolbarMediatorVoiceSearchProvider); +}; + +// Test BrandedImageProvider that return different branded images for Google +// Search search engine. +class TestToolbarMediatorBrandedImageProvider + : public TestBrandedImageProvider { + public: + TestToolbarMediatorBrandedImageProvider() + : google_search_icon_([[UIImage alloc] init]), + generic_search_icon_([[UIImage alloc] init]) {} + + ~TestToolbarMediatorBrandedImageProvider() override = default; + + // Getter for search engine images for unit test. + UIImage* generic_search_icon() { return generic_search_icon_; } + UIImage* google_search_icon() { return google_search_icon_; } + + // BrandedImageProvider implementation. + UIImage* GetToolbarSearchButtonImage(SearchEngineIcon type) override { + switch (type) { + case SEARCH_ENGINE_ICON_GOOGLE_SEARCH: + return google_search_icon_; + + default: + return generic_search_icon_; + } + } + + private: + UIImage* google_search_icon_; + UIImage* generic_search_icon_; + + DISALLOW_COPY_AND_ASSIGN(TestToolbarMediatorBrandedImageProvider); +}; + +// Test ChromeBrowserProvider that install custom BrandedImageProvider and +// VoiceSearchProvider for ToolbarMediator unit tests. +class TestToolbarMediatorChromeBrowserProvider + : public ios::TestChromeBrowserProvider { + public: + TestToolbarMediatorChromeBrowserProvider() + : branded_image_provider_( + std::make_unique<TestToolbarMediatorBrandedImageProvider>()), + voice_search_provider_( + std::make_unique<TestToolbarMediatorVoiceSearchProvider>()) {} + + ~TestToolbarMediatorChromeBrowserProvider() override = default; + + // ChromeBrowserProvider implementation. + BrandedImageProvider* GetBrandedImageProvider() const override { + return branded_image_provider_.get(); + } + + VoiceSearchProvider* GetVoiceSearchProvider() const override { + return voice_search_provider_.get(); + } + + private: + std::unique_ptr<BrandedImageProvider> branded_image_provider_; + std::unique_ptr<VoiceSearchProvider> voice_search_provider_; + + DISALLOW_COPY_AND_ASSIGN(TestToolbarMediatorChromeBrowserProvider); }; } @@ -62,7 +144,9 @@ class ToolbarMediatorTest : public PlatformTest { public: - ToolbarMediatorTest() { + ToolbarMediatorTest() + : scoped_provider_( + std::make_unique<TestToolbarMediatorChromeBrowserProvider>()) { TestChromeBrowserState::Builder test_cbs_builder; test_cbs_builder.AddTestingFactory( ios::TemplateURLServiceFactory::GetInstance(), @@ -83,7 +167,6 @@ consumer_ = OCMProtocolMock(@protocol(ToolbarConsumer)); strict_consumer_ = OCMStrictProtocolMock(@protocol(ToolbarConsumer)); SetUpWebStateList(); - image_provider_ = std::make_unique<TestBrandedImageProvider>(); url_service_ = ios::TemplateURLServiceFactory::GetForBrowserState( chrome_browser_state_.get()); SetDefaultSearchEngineGoogle(); @@ -147,6 +230,19 @@ url_service_->SetUserSelectedDefaultSearchProvider(template_url); } + UIImage* google_search_icon() { + return static_cast<TestToolbarMediatorBrandedImageProvider*>( + ios::GetChromeBrowserProvider()->GetBrandedImageProvider()) + ->google_search_icon(); + } + + void set_voice_search_enabled(bool enabled) { + static_cast<TestToolbarMediatorVoiceSearchProvider*>( + ios::GetChromeBrowserProvider()->GetVoiceSearchProvider()) + ->set_voice_search_enabled(enabled); + } + + IOSChromeScopedTestingChromeBrowserProvider scoped_provider_; TestToolbarMediator* mediator_; ToolbarTestWebState* web_state_; ToolbarTestNavigationManager* navigation_manager_; @@ -155,7 +251,6 @@ id consumer_; id strict_consumer_; std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; - std::unique_ptr<TestBrandedImageProvider> image_provider_; TemplateURLService* url_service_; BookmarkModel* bookmark_model_; @@ -308,11 +403,8 @@ // Test the Toolbar Setup gets called when the mediator's WebState and Consumer // have been set. TEST_F(ToolbarMediatorTest, TestToolbarSetup) { - UIImage* test_image = [[UIImage alloc] init]; - image_provider_->set_toolbar_search_button_image(test_image); mediator_.webStateList = web_state_list_.get(); SetUpActiveWebState(); - mediator_.imageProvider = image_provider_.get(); mediator_.templateURLService = url_service_; mediator_.consumer = consumer_; @@ -320,25 +412,22 @@ [[consumer_ verify] setCanGoBack:NO]; [[consumer_ verify] setLoadingState:YES]; [[consumer_ verify] setShareMenuEnabled:NO]; - [[consumer_ verify] setSearchIcon:test_image]; + [[consumer_ verify] setSearchIcon:google_search_icon()]; } // Test the Toolbar Setup gets called when the mediator's WebState and Consumer // have been set in reverse order. TEST_F(ToolbarMediatorTest, TestToolbarSetupReverse) { - UIImage* test_image = [[UIImage alloc] init]; - image_provider_->set_toolbar_search_button_image(test_image); mediator_.consumer = consumer_; mediator_.webStateList = web_state_list_.get(); SetUpActiveWebState(); mediator_.templateURLService = url_service_; - mediator_.imageProvider = image_provider_.get(); [[consumer_ verify] setCanGoForward:NO]; [[consumer_ verify] setCanGoBack:NO]; [[consumer_ verify] setLoadingState:YES]; [[consumer_ verify] setShareMenuEnabled:NO]; - [[consumer_ verify] setSearchIcon:test_image]; + [[consumer_ verify] setSearchIcon:google_search_icon()]; } // Test the WebstateList related setup gets called when the mediator's WebState @@ -479,34 +568,21 @@ [[consumer_ verify] setTabCount:kNumberOfWebStates - 1]; } -// Test that setting the voice search provider after the consumer works. -TEST_F(ToolbarMediatorTest, TestVoiceSearchProviderAfterConsumer) { - MockEnabledVoiceSearchProvider provider; +// Test that consumer is informed that voice search is enabled. +TEST_F(ToolbarMediatorTest, TestVoiceSearchProviderEnabled) { + set_voice_search_enabled(true); OCMExpect([consumer_ setVoiceSearchEnabled:YES]); mediator_.consumer = consumer_; - mediator_.voiceSearchProvider = &provider; - - EXPECT_OCMOCK_VERIFY(consumer_); -} - -// Test that setting the voice search provider after the consumer works. -TEST_F(ToolbarMediatorTest, TestVoiceSearchProviderBeforeConsumer) { - MockEnabledVoiceSearchProvider provider; - - OCMExpect([consumer_ setVoiceSearchEnabled:YES]); - mediator_.voiceSearchProvider = &provider; - mediator_.consumer = consumer_; EXPECT_OCMOCK_VERIFY(consumer_); } -// Test that setting the voice search provider after the consumer works. +// Test that consumer is informed that voice search is not enabled. TEST_F(ToolbarMediatorTest, TestVoiceSearchProviderNotEnabled) { - VoiceSearchProvider provider; + set_voice_search_enabled(false); OCMExpect([consumer_ setVoiceSearchEnabled:NO]); - mediator_.voiceSearchProvider = &provider; mediator_.consumer = consumer_; EXPECT_OCMOCK_VERIFY(consumer_); @@ -548,7 +624,6 @@ OCMExpect([consumer_ setSearchIcon:[OCMArg isNotNil]]); mediator_.consumer = consumer_; - mediator_.imageProvider = image_provider_.get(); mediator_.templateURLService = url_service_; EXPECT_OCMOCK_VERIFY(consumer_); @@ -557,14 +632,11 @@ // Tests that changing the search engine to google gives the image from the // image provider. TEST_F(ToolbarMediatorTest, TestChangeSearchEngineToGoogle) { - UIImage* test_image = [[UIImage alloc] init]; - image_provider_->set_toolbar_search_button_image(test_image); SetDefaultSearchEngineNotGoogle(); mediator_.consumer = consumer_; - mediator_.imageProvider = image_provider_.get(); mediator_.templateURLService = url_service_; - OCMExpect([consumer_ setSearchIcon:test_image]); + OCMExpect([consumer_ setSearchIcon:google_search_icon()]); SetDefaultSearchEngineGoogle(); @@ -574,14 +646,11 @@ // Tests that changing the search engine to not-google gives an image different // from the image provider's one. TEST_F(ToolbarMediatorTest, TestChangeSearchEngineToNotGoogle) { - UIImage* test_image = [[UIImage alloc] init]; - image_provider_->set_toolbar_search_button_image(test_image); SetDefaultSearchEngineGoogle(); mediator_.consumer = consumer_; - mediator_.imageProvider = image_provider_.get(); mediator_.templateURLService = url_service_; - OCMExpect([consumer_ setSearchIcon:[OCMArg isNotEqual:test_image]]); + OCMExpect([consumer_ setSearchIcon:[OCMArg isNotEqual:google_search_icon()]]); SetDefaultSearchEngineNotGoogle(); @@ -603,7 +672,6 @@ TEST_F(ToolbarMediatorTest, TestSetConsumerImageProviderNoImage) { SetDefaultSearchEngineGoogle(); OCMExpect([consumer_ setSearchIcon:[OCMArg isNotNil]]); - mediator_.imageProvider = image_provider_.get(); mediator_.templateURLService = url_service_; mediator_.consumer = consumer_;
diff --git a/ios/public/provider/chrome/browser/images/BUILD.gn b/ios/public/provider/chrome/browser/images/BUILD.gn index df3142b..596c2149 100644 --- a/ios/public/provider/chrome/browser/images/BUILD.gn +++ b/ios/public/provider/chrome/browser/images/BUILD.gn
@@ -5,12 +5,17 @@ source_set("images") { configs += [ "//build/config/compiler:enable_arc" ] sources = [ + "branded_image_icon_types.h", "branded_image_provider.h", "branded_image_provider.mm", + + # This header is deprecated. It will be removed once downstream code + # has been fixed to use branded_image_icon_types.h instead. "whats_new_icon.h", ] deps = [ "//base", + "//components/search_engines", ] }
diff --git a/ios/public/provider/chrome/browser/images/branded_image_icon_types.h b/ios/public/provider/chrome/browser/images/branded_image_icon_types.h new file mode 100644 index 0000000..ef79674 --- /dev/null +++ b/ios/public/provider/chrome/browser/images/branded_image_icon_types.h
@@ -0,0 +1,23 @@ +// 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 IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_BRANDED_IMAGE_ICON_TYPES_H_ +#define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_BRANDED_IMAGE_ICON_TYPES_H_ + +// Possible icons for the what's new promo. +enum WhatsNewIcon { + WHATS_NEW_INFO = 0, // A circled 'i'. Default value if no icon is specified + // in promo. + WHATS_NEW_LOGO, // The application's logo. + WHATS_NEW_LOGO_ROUNDED_RECTANGLE, // The application's logo with a rounded + // corner rectangle surrounding it. +}; + +// Enum used to represent the different type of search engine icons. +enum SearchEngineIcon { + SEARCH_ENGINE_ICON_OTHER, + SEARCH_ENGINE_ICON_GOOGLE_SEARCH, +}; + +#endif // IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_BRANDED_IMAGE_ICON_TYPES_H_
diff --git a/ios/public/provider/chrome/browser/images/branded_image_provider.h b/ios/public/provider/chrome/browser/images/branded_image_provider.h index 884d863..a7e2b473 100644 --- a/ios/public/provider/chrome/browser/images/branded_image_provider.h +++ b/ios/public/provider/chrome/browser/images/branded_image_provider.h
@@ -6,11 +6,14 @@ #define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_BRANDED_IMAGE_PROVIDER_H_ #include "base/macros.h" -#include "ios/public/provider/chrome/browser/images/whats_new_icon.h" +#include "ios/public/provider/chrome/browser/images/branded_image_icon_types.h" @class UIImage; // BrandedImageProvider vends images that contain embedder-specific branding. +// When adding method to this class, do not forget to add Chromium specific +// implementation to ChromiumBrandedImageProvider (the file may not be in the +// Xcode project if you are using internal sources). class BrandedImageProvider { public: BrandedImageProvider(); @@ -45,9 +48,14 @@ // Returns the 24pt x 24pt image corresponding to the given icon |type|. virtual UIImage* GetWhatsNewIconImage(WhatsNewIcon type); - // Returns the image to use for the "search the web" button. + // Returns the 38pt x 38pt image to use for the "search the web" button. + // Deprecated, instead use GetToolbarSearchButtonImage(SEARCH_ENGINE_GOOGLE). virtual UIImage* GetToolbarSearchButtonImage(); + // Returns the 38pt x 38pt image to use for the "search the web" button + // corresponding to the |type| search engine. + virtual UIImage* GetToolbarSearchButtonImage(SearchEngineIcon type); + private: DISALLOW_COPY_AND_ASSIGN(BrandedImageProvider); };
diff --git a/ios/public/provider/chrome/browser/images/branded_image_provider.mm b/ios/public/provider/chrome/browser/images/branded_image_provider.mm index 1844d6d..170db5a5 100644 --- a/ios/public/provider/chrome/browser/images/branded_image_provider.mm +++ b/ios/public/provider/chrome/browser/images/branded_image_provider.mm
@@ -43,5 +43,10 @@ } UIImage* BrandedImageProvider::GetToolbarSearchButtonImage() { + return GetToolbarSearchButtonImage(SEARCH_ENGINE_ICON_GOOGLE_SEARCH); +} + +UIImage* BrandedImageProvider::GetToolbarSearchButtonImage( + SearchEngineIcon type) { return nil; }
diff --git a/ios/public/provider/chrome/browser/images/test_branded_image_provider.h b/ios/public/provider/chrome/browser/images/test_branded_image_provider.h index 0551c07..e0a8736 100644 --- a/ios/public/provider/chrome/browser/images/test_branded_image_provider.h +++ b/ios/public/provider/chrome/browser/images/test_branded_image_provider.h
@@ -12,15 +12,7 @@ TestBrandedImageProvider(); ~TestBrandedImageProvider() override; - void set_toolbar_search_button_image(UIImage* toolbar_search_button_image) { - toolbar_search_button_image_ = toolbar_search_button_image; - } - - // BrandedImageProvider implementation. - UIImage* GetToolbarSearchButtonImage() override; - private: - UIImage* toolbar_search_button_image_; DISALLOW_COPY_AND_ASSIGN(TestBrandedImageProvider); };
diff --git a/ios/public/provider/chrome/browser/images/test_branded_image_provider.mm b/ios/public/provider/chrome/browser/images/test_branded_image_provider.mm index c19e8c1..c170808 100644 --- a/ios/public/provider/chrome/browser/images/test_branded_image_provider.mm +++ b/ios/public/provider/chrome/browser/images/test_branded_image_provider.mm
@@ -14,6 +14,3 @@ TestBrandedImageProvider::~TestBrandedImageProvider() {} -UIImage* TestBrandedImageProvider::GetToolbarSearchButtonImage() { - return toolbar_search_button_image_; -}
diff --git a/ios/public/provider/chrome/browser/images/whats_new_icon.h b/ios/public/provider/chrome/browser/images/whats_new_icon.h index bd5a471..11a95fb 100644 --- a/ios/public/provider/chrome/browser/images/whats_new_icon.h +++ b/ios/public/provider/chrome/browser/images/whats_new_icon.h
@@ -5,13 +5,9 @@ #ifndef IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_WHATS_NEW_ICON_H_ #define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_WHATS_NEW_ICON_H_ -// Possible icons for the what's new promo. -enum WhatsNewIcon { - WHATS_NEW_INFO = 0, // A circled 'i'. Default value if no icon is specified - // in promo. - WHATS_NEW_LOGO, // The application's logo. - WHATS_NEW_LOGO_ROUNDED_RECTANGLE, // The application's logo with a rounded - // corner rectangle surrounding it. -}; +// This forwarding header is deprecated. It will be removed once the downstream +// code has been fixed to instead use branded_image_icon_types.h instead. + +#include "ios/public/provider/chrome/browser/images/branded_image_icon_types.h" #endif // IOS_PUBLIC_PROVIDER_CHROME_BROWSER_IMAGES_WHATS_NEW_ICON_H_
diff --git a/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.h b/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.h index 1c148dfb..fa1c1e3 100644 --- a/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.h +++ b/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.h
@@ -22,9 +22,18 @@ MailtoHandlerProvider(); virtual ~MailtoHandlerProvider(); + // Set up mailto handling for the current user. + // The Signed-In Identity Block should return the primary signed in user. + // The Signed-In Identities Block should return all users signed in to Chrome. + virtual void PrepareMailtoHandling( + SignedInIdentityBlock signed_in_identity_block, + SignedInIdentitiesBlock signed_in_identities_block); + // Set up mailto handling for the currently signed in users. // The Signed-In Identity Block should return the primary signed in user. // The Signed-In Identities Block should return all users signed in to Chrome. + // DEPRECATED: Use the above overloaded PrepareMailtoHandling() method + // without |identity_service| parameter instead. virtual void PrepareMailtoHandling( ios::ChromeIdentityService* identity_service, SignedInIdentityBlock signed_in_identity_block,
diff --git a/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.mm b/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.mm index 5ce1b47..d25d683 100644 --- a/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.mm +++ b/ios/public/provider/chrome/browser/mailto/mailto_handler_provider.mm
@@ -13,6 +13,10 @@ MailtoHandlerProvider::~MailtoHandlerProvider() {} void MailtoHandlerProvider::PrepareMailtoHandling( + SignedInIdentityBlock signed_in_identity_block, + SignedInIdentitiesBlock signed_in_identities_block) {} + +void MailtoHandlerProvider::PrepareMailtoHandling( ios::ChromeIdentityService* identity_service, SignedInIdentityBlock signed_in_identity_block, SignedInIdentitiesBlock signed_in_identities_block) {}
diff --git a/mojo/edk/system/channel_win.cc b/mojo/edk/system/channel_win.cc index 980f021..cd47caf 100644 --- a/mojo/edk/system/channel_win.cc +++ b/mojo/edk/system/channel_win.cc
@@ -105,15 +105,6 @@ bool write_now = !delay_writes_ && outgoing_messages_.empty(); outgoing_messages_.emplace_back(std::move(message), 0); - - // TODO(https://crbug.com/813045): Remove this. The queue should almost - // never be used, and then only for a handful of messages. For messages - // to accumulate, the sender would have to be sending faster than the - // receiver can read. This check is just to look for a message leak, - // though it may also reveal e.g. spammy malware sites exploiting some - // web APIs to DoS the browser. - CHECK_LE(outgoing_messages_.size(), 100000u); - if (write_now && !WriteNoLock(outgoing_messages_.front())) reject_writes_ = write_error = true; }
diff --git a/mojo/public/tools/bindings/BUILD.gn b/mojo/public/tools/bindings/BUILD.gn index 3c9386bc..8226461 100644 --- a/mojo/public/tools/bindings/BUILD.gn +++ b/mojo/public/tools/bindings/BUILD.gn
@@ -57,6 +57,9 @@ "$mojom_generator_root/generators/java_templates/struct.java.tmpl", "$mojom_generator_root/generators/java_templates/union.java.tmpl", "$mojom_generator_root/generators/js_templates/enum_definition.tmpl", + "$mojom_generator_root/generators/js_templates/externs/interface_definition.tmpl", + "$mojom_generator_root/generators/js_templates/externs/module.externs.tmpl", + "$mojom_generator_root/generators/js_templates/externs/struct_definition.tmpl", "$mojom_generator_root/generators/js_templates/interface_definition.tmpl", "$mojom_generator_root/generators/js_templates/module.amd.tmpl", "$mojom_generator_root/generators/js_templates/module_definition.tmpl",
diff --git a/mojo/public/tools/bindings/generators/js_templates/externs/interface_definition.tmpl b/mojo/public/tools/bindings/generators/js_templates/externs/interface_definition.tmpl new file mode 100644 index 0000000..9a3c5bc --- /dev/null +++ b/mojo/public/tools/bindings/generators/js_templates/externs/interface_definition.tmpl
@@ -0,0 +1,24 @@ +/** @implements {mojo.InterfacePtr} */ +{{module.namespace}}.{{interface.name}}Ptr = class { +{% for method in interface.methods %} + /** +{%- for parameter in method.parameters %} + * @param { {{parameter.kind|closure_type_with_nullability}} } {{parameter.name}} +{%- endfor -%} +{%- if method.response_parameters != None %} + * @return {Promise} +{%- endif %} + */ + {{method.name}}( +{%- for parameter in method.parameters -%} +{{parameter.name}}{% if not loop.last %}, {% endif %} +{%- endfor -%} +) {} +{%- endfor %} +}; + +/** + * @const + * @type { mojo.Interface }; + */ +{{module.namespace}}.{{interface.name}};
diff --git a/mojo/public/tools/bindings/generators/js_templates/externs/module.externs.tmpl b/mojo/public/tools/bindings/generators/js_templates/externs/module.externs.tmpl new file mode 100644 index 0000000..8eccefbf --- /dev/null +++ b/mojo/public/tools/bindings/generators/js_templates/externs/module.externs.tmpl
@@ -0,0 +1,22 @@ +// 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. + +{% for declaration in module.namespace|namespace_declarations -%} +/** @const */ +{%- if loop.first %} +let {{declaration}} = {}; +{% else %} +{{declaration}} = {}; +{% endif -%} +{%- endfor -%} + +{#--- Interface definitions #} +{%- for interface in interfaces -%} +{%- include "externs/interface_definition.tmpl" %} +{% endfor -%} + +{#--- Struct definitions #} +{%- for struct in structs -%} +{%- include "externs/struct_definition.tmpl" %} +{% endfor -%}
diff --git a/mojo/public/tools/bindings/generators/js_templates/externs/struct_definition.tmpl b/mojo/public/tools/bindings/generators/js_templates/externs/struct_definition.tmpl new file mode 100644 index 0000000..4aecb67 --- /dev/null +++ b/mojo/public/tools/bindings/generators/js_templates/externs/struct_definition.tmpl
@@ -0,0 +1,8 @@ +{{module.namespace}}.{{struct.name}} = class { + constructor() { +{%- for packed_field in struct.packed.packed_fields %} + /** @type { {{packed_field.field.kind|closure_type_with_nullability}} } */ + this.{{packed_field.field.name}}; +{%- endfor %} + } +};
diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py index 26a6ad8..58ed943 100644 --- a/mojo/public/tools/bindings/generators/mojom_js_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -63,6 +63,31 @@ mojom.NULLABLE_STRING: "codec.NullableString", } +_kind_to_closure_type = { + mojom.BOOL: "boolean", + mojom.INT8: "number", + mojom.UINT8: "number", + mojom.INT16: "number", + mojom.UINT16: "number", + mojom.INT32: "number", + mojom.UINT32: "number", + mojom.FLOAT: "number", + mojom.INT64: "number", + mojom.UINT64: "number", + mojom.DOUBLE: "number", + mojom.STRING: "string", + mojom.NULLABLE_STRING: "string", + mojom.HANDLE: "mojo.MojoHandle", + mojom.DCPIPE: "mojo.MojoHandle", + mojom.DPPIPE: "mojo.MojoHandle", + mojom.MSGPIPE: "mojo.MojoHandle", + mojom.SHAREDBUFFER: "mojo.MojoHandle", + mojom.NULLABLE_HANDLE: "mojo.MojoHandle", + mojom.NULLABLE_DCPIPE: "mojo.MojoHandle", + mojom.NULLABLE_DPPIPE: "mojo.MojoHandle", + mojom.NULLABLE_MSGPIPE: "mojo.MojoHandle", + mojom.NULLABLE_SHAREDBUFFER: "mojo.MojoHandle", +} def JavaScriptPayloadSize(packed): packed_fields = packed.packed_fields @@ -142,6 +167,7 @@ def GetFilters(self): js_filters = { + "closure_type": self._ClosureType, "decode_snippet": self._JavaScriptDecodeSnippet, "default_value": self._JavaScriptDefaultValue, "encode_snippet": self._JavaScriptEncodeSnippet, @@ -166,6 +192,8 @@ "is_union_kind": mojom.IsUnionKind, "js_type": self._JavaScriptType, "method_passes_associated_kinds": mojom.MethodPassesAssociatedKinds, + "namespace_declarations": self._NamespaceDeclarations, + "closure_type_with_nullability": self._ClosureTypeWithNullability, "payload_size": JavaScriptPayloadSize, "to_camel": generator.ToCamel, "union_decode_snippet": self._JavaScriptUnionDecodeSnippet, @@ -183,6 +211,10 @@ def _GenerateAMDModule(self): return self._GetParameters() + @UseJinja("externs/module.externs.tmpl") + def _GenerateExterns(self): + return self._GetParameters() + def GenerateFiles(self, args): if self.variant: raise Exception("Variants not supported in JavaScript bindings.") @@ -195,6 +227,7 @@ self._SetUniqueNameForImports() self.Write(self._GenerateAMDModule(), "%s.js" % self.module.path) + self.Write(self._GenerateExterns(), "%s.externs.js" % self.module.path) def _SetUniqueNameForImports(self): used_names = set() @@ -213,6 +246,44 @@ each_import.unique_name = unique_name + "$" counter += 1 + def _ClosureType(self, kind): + if kind in mojom.PRIMITIVES: + return _kind_to_closure_type[kind] + if (mojom.IsStructKind(kind) or mojom.IsInterfaceKind(kind) or + mojom.IsEnumKind(kind)): + return kind.module.namespace + "." + kind.name + # TODO(calamity): Support unions properly. + if mojom.IsUnionKind(kind): + return "Object" + if mojom.IsArrayKind(kind): + return "Array<%s>" % self._ClosureType(kind.kind) + if mojom.IsMapKind(kind): + return "Map<%s, %s>" % ( + self._ClosureType(kind.key_kind), self._ClosureType(kind.value_kind)) + if mojom.IsInterfaceRequestKind(kind): + return "mojo.InterfaceRequest" + # TODO(calamity): Support associated interfaces properly. + if mojom.IsAssociatedInterfaceKind(kind): + return "mojo.AssociatedInterfacePtrInfo" + # TODO(calamity): Support associated interface requests properly. + if mojom.IsAssociatedInterfaceRequestKind(kind): + return "mojo.AssociatedInterfaceRequest" + # TODO(calamity): Support enums properly. + + raise Exception("No valid closure type: %s" % kind) + + def _ClosureTypeWithNullability(self, kind): + return ("" if mojom.IsNullableKind(kind) else "!") + self._ClosureType(kind) + + def _NamespaceDeclarations(self, namespace): + pieces = namespace.split('.') + declarations = [] + declaration = [] + for p in pieces: + declaration.append(p) + declarations.append('.'.join(declaration)) + return declarations + def _JavaScriptType(self, kind): name = [] if kind.module and kind.module.path != self.module.path:
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni index 465b059..40538c3 100644 --- a/mojo/public/tools/bindings/mojom.gni +++ b/mojo/public/tools/bindings/mojom.gni
@@ -1021,8 +1021,10 @@ if (!defined(invoker.cpp_only) || !invoker.cpp_only) { if (defined(invoker.sources)) { generator_js_target_name = "${target_name}_js__generator" - generator_js_outputs = - [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] + generator_js_outputs = [ + "{{source_gen_dir}}/{{source_name_part}}.mojom.js", + "{{source_gen_dir}}/{{source_name_part}}.mojom.externs.js", + ] action_foreach(generator_js_target_name) { script = mojom_generator_script inputs = mojom_generator_sources
diff --git a/net/BUILD.gn b/net/BUILD.gn index e5ed1aa..6987995 100644 --- a/net/BUILD.gn +++ b/net/BUILD.gn
@@ -1802,10 +1802,6 @@ "url_request/view_cache_helper.h", "url_request/websocket_handshake_userdata_key.cc", "url_request/websocket_handshake_userdata_key.h", - "websockets/websocket_handshake_request_info.h", - "websockets/websocket_handshake_response_info.h", - "websockets/websocket_handshake_stream_base.h", - "websockets/websocket_stream.h", ] deps += [ "//base/third_party/dynamic_annotations",
diff --git a/net/base/load_states_list.h b/net/base/load_states_list.h index 5e850fb6..c4f0f87d 100644 --- a/net/base/load_states_list.h +++ b/net/base/load_states_list.h
@@ -52,7 +52,7 @@ // This state corresponds to a resource being blocked waiting for the // PAC script to be downloaded. -LOAD_STATE(DOWNLOADING_PROXY_SCRIPT, 7) +LOAD_STATE(DOWNLOADING_PAC_FILE, 7) // This state corresponds to a resource load that is blocked waiting for a // proxy autoconfig script to return a proxy server to use. @@ -61,7 +61,7 @@ // This state corresponds to a resource load that is blocked waiting for a // proxy autoconfig script to return a proxy server to use, but that proxy // script is busy resolving the IP address of a host. -LOAD_STATE(RESOLVING_HOST_IN_PROXY_SCRIPT, 9) +LOAD_STATE(RESOLVING_HOST_IN_PAC_FILE, 9) // This state indicates that we're in the process of establishing a tunnel // through the proxy server.
diff --git a/net/data/proxy_script_fetcher_unittest/404.pac b/net/data/pac_file_fetcher_unittest/404.pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/404.pac rename to net/data/pac_file_fetcher_unittest/404.pac
diff --git a/net/data/proxy_script_fetcher_unittest/404.pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/404.pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/404.pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/404.pac.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/500.pac b/net/data/pac_file_fetcher_unittest/500.pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/500.pac rename to net/data/pac_file_fetcher_unittest/500.pac
diff --git a/net/data/proxy_script_fetcher_unittest/500.pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/500.pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/500.pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/500.pac.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/cacheable_1hr.pac b/net/data/pac_file_fetcher_unittest/cacheable_1hr.pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/cacheable_1hr.pac rename to net/data/pac_file_fetcher_unittest/cacheable_1hr.pac
diff --git a/net/data/proxy_script_fetcher_unittest/cacheable_1hr.pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/cacheable_1hr.pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/cacheable_1hr.pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/cacheable_1hr.pac.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/downloadable.pac b/net/data/pac_file_fetcher_unittest/downloadable.pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/downloadable.pac rename to net/data/pac_file_fetcher_unittest/downloadable.pac
diff --git a/net/data/proxy_script_fetcher_unittest/downloadable.pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/downloadable.pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/downloadable.pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/downloadable.pac.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/empty b/net/data/pac_file_fetcher_unittest/empty similarity index 100% rename from net/data/proxy_script_fetcher_unittest/empty rename to net/data/pac_file_fetcher_unittest/empty
diff --git a/net/data/proxy_script_fetcher_unittest/empty.mock-http-headers b/net/data/pac_file_fetcher_unittest/empty.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/empty.mock-http-headers rename to net/data/pac_file_fetcher_unittest/empty.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/gzipped_pac b/net/data/pac_file_fetcher_unittest/gzipped_pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/gzipped_pac rename to net/data/pac_file_fetcher_unittest/gzipped_pac Binary files differ
diff --git a/net/data/proxy_script_fetcher_unittest/gzipped_pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/gzipped_pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/gzipped_pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/gzipped_pac.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/large-pac.nsproxy b/net/data/pac_file_fetcher_unittest/large-pac.nsproxy similarity index 100% rename from net/data/proxy_script_fetcher_unittest/large-pac.nsproxy rename to net/data/pac_file_fetcher_unittest/large-pac.nsproxy
diff --git a/net/data/proxy_script_fetcher_unittest/large-pac.nsproxy.mock-http-headers b/net/data/pac_file_fetcher_unittest/large-pac.nsproxy.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/large-pac.nsproxy.mock-http-headers rename to net/data/pac_file_fetcher_unittest/large-pac.nsproxy.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/pac.html b/net/data/pac_file_fetcher_unittest/pac.html similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.html rename to net/data/pac_file_fetcher_unittest/pac.html
diff --git a/net/data/proxy_script_fetcher_unittest/pac.html.mock-http-headers b/net/data/pac_file_fetcher_unittest/pac.html.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.html.mock-http-headers rename to net/data/pac_file_fetcher_unittest/pac.html.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/pac.nsproxy b/net/data/pac_file_fetcher_unittest/pac.nsproxy similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.nsproxy rename to net/data/pac_file_fetcher_unittest/pac.nsproxy
diff --git a/net/data/proxy_script_fetcher_unittest/pac.nsproxy.mock-http-headers b/net/data/pac_file_fetcher_unittest/pac.nsproxy.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.nsproxy.mock-http-headers rename to net/data/pac_file_fetcher_unittest/pac.nsproxy.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/pac.txt b/net/data/pac_file_fetcher_unittest/pac.txt similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.txt rename to net/data/pac_file_fetcher_unittest/pac.txt
diff --git a/net/data/proxy_script_fetcher_unittest/pac.txt.mock-http-headers b/net/data/pac_file_fetcher_unittest/pac.txt.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/pac.txt.mock-http-headers rename to net/data/pac_file_fetcher_unittest/pac.txt.mock-http-headers
diff --git a/net/data/proxy_script_fetcher_unittest/utf16be_pac b/net/data/pac_file_fetcher_unittest/utf16be_pac similarity index 100% rename from net/data/proxy_script_fetcher_unittest/utf16be_pac rename to net/data/pac_file_fetcher_unittest/utf16be_pac Binary files differ
diff --git a/net/data/proxy_script_fetcher_unittest/utf16be_pac.mock-http-headers b/net/data/pac_file_fetcher_unittest/utf16be_pac.mock-http-headers similarity index 100% rename from net/data/proxy_script_fetcher_unittest/utf16be_pac.mock-http-headers rename to net/data/pac_file_fetcher_unittest/utf16be_pac.mock-http-headers
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc index c47ccefb..4c46ce71 100644 --- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc
@@ -21,6 +21,7 @@ #include "base/sequenced_task_runner.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" +#include "base/synchronization/atomic_flag.h" #include "base/synchronization/lock.h" #include "base/time/time.h" #include "net/cookies/canonical_cookie.h" @@ -37,6 +38,21 @@ namespace { +// Used to populate a histogram for problems when loading cookies. +// +// Please do not reorder or remove entries. New entries must be added to the +// end of the list, just before COOKIE_LOAD_PROBLEM_LAST_ENTRY. +enum CookieLoadProblem { + COOKIE_LOAD_PROBLEM_DECRYPT_FAILED = 0, + COOKIE_LOAD_PROBLEM_DECRYPT_TIMEOUT = 1, + COOKIE_LOAD_PROBLEM_LAST_ENTRY +}; + +void RecordCookieLoadProblem(CookieLoadProblem event) { + UMA_HISTOGRAM_ENUMERATION("Cookie.LoadProblem", event, + COOKIE_LOAD_PROBLEM_LAST_ENTRY); +}; + // The persistent cookie store is loaded into memory on eTLD at a time. This // variable controls the delay between loading eTLDs, so as to not overload the // CPU or I/O with these low priority requests immediately after start up. @@ -50,6 +66,38 @@ const int kLoadDelayMilliseconds = 0; #endif +// A little helper to help us log (on client thread) if the background runner +// gets stuck. +class TimeoutTracker : public base::RefCountedThreadSafe<TimeoutTracker> { + public: + // Runs on background runner. + static scoped_refptr<TimeoutTracker> Begin( + const scoped_refptr<base::SequencedTaskRunner>& client_task_runner) { + scoped_refptr<TimeoutTracker> tracker = new TimeoutTracker; + client_task_runner->PostDelayedTask( + FROM_HERE, base::BindOnce(&TimeoutTracker::TimerElapsed, tracker), + base::TimeDelta::FromSeconds(60)); + return tracker; + } + + // Runs on background runner. + void End() { done_.Set(); } + + private: + friend class base::RefCountedThreadSafe<TimeoutTracker>; + TimeoutTracker() {} + ~TimeoutTracker() { DCHECK(done_.IsSet()); } + + // Run on client runner. + void TimerElapsed() { + if (!done_.IsSet()) + RecordCookieLoadProblem(COOKIE_LOAD_PROBLEM_DECRYPT_TIMEOUT); + } + + base::AtomicFlag done_; + DISALLOW_COPY_AND_ASSIGN(TimeoutTracker); +}; + } // namespace namespace net { @@ -817,13 +865,20 @@ void SQLitePersistentCookieStore::Backend::MakeCookiesFromSQLStatement( std::vector<std::unique_ptr<CanonicalCookie>>* cookies, sql::Statement* statement) { + DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); sql::Statement& smt = *statement; while (smt.Step()) { std::string value; std::string encrypted_value = smt.ColumnString(4); if (!encrypted_value.empty() && crypto_) { - if (!crypto_->DecryptString(encrypted_value, &value)) + scoped_refptr<TimeoutTracker> timeout_tracker = + TimeoutTracker::Begin(client_task_runner_); + bool decrypt_ok = crypto_->DecryptString(encrypted_value, &value); + timeout_tracker->End(); + if (!decrypt_ok) { + RecordCookieLoadProblem(COOKIE_LOAD_PROBLEM_DECRYPT_FAILED); continue; + } } else { value = smt.ColumnString(3); }
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index 2ef3c9d..79ff5f4 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc
@@ -382,11 +382,10 @@ FailingProxyResolverFactory() : ProxyResolverFactory(false) {} // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolver>* result, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolver>* result, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { return ERR_PAC_SCRIPT_FAILED; } }; @@ -4638,11 +4637,10 @@ SameProxyWithDifferentSchemesProxyResolverFactory() : ProxyResolverFactory(false) {} - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { *resolver = std::make_unique<SameProxyWithDifferentSchemesProxyResolver>(); return OK; } @@ -12175,11 +12173,10 @@ explicit CapturingProxyResolverFactory(CapturingProxyResolver* resolver) : ProxyResolverFactory(false), resolver_(resolver) {} - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) override { *resolver = std::make_unique<ForwardingProxyResolver>(resolver_); return OK; }
diff --git a/net/http/http_stream_factory_impl_job_controller_unittest.cc b/net/http/http_stream_factory_impl_job_controller_unittest.cc index a89bb0e..adc4da9 100644 --- a/net/http/http_stream_factory_impl_job_controller_unittest.cc +++ b/net/http/http_stream_factory_impl_job_controller_unittest.cc
@@ -87,11 +87,10 @@ FailingProxyResolverFactory() : ProxyResolverFactory(false) {} // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolver>* result, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolver>* result, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { return ERR_PAC_SCRIPT_FAILED; } };
diff --git a/net/log/net_log_event_type_list.h b/net/log/net_log_event_type_list.h index 77a6d78..30d1298 100644 --- a/net/log/net_log_event_type_list.h +++ b/net/log/net_log_event_type_list.h
@@ -208,12 +208,12 @@ // ------------------------------------------------------------------------ // The start/end of auto-detect + custom PAC URL configuration. -EVENT_TYPE(PROXY_SCRIPT_DECIDER) +EVENT_TYPE(PAC_FILE_DECIDER) // The start/end of when proxy autoconfig was artificially paused following // a network change event. (We wait some amount of time after being told of // network changes to avoid hitting spurious errors during auto-detect). -EVENT_TYPE(PROXY_SCRIPT_DECIDER_WAIT) +EVENT_TYPE(PAC_FILE_DECIDER_WAIT) // The start/end of download of a PAC script. This could be the well-known // WPAD URL (if testing auto-detect), or a custom PAC URL. @@ -227,15 +227,15 @@ // { // "net_error": <Net error code integer>, // } -EVENT_TYPE(PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT) +EVENT_TYPE(PAC_FILE_DECIDER_FETCH_PAC_SCRIPT) // This event means that initialization failed because there was no // configured script fetcher. (This indicates a configuration error). -EVENT_TYPE(PROXY_SCRIPT_DECIDER_HAS_NO_FETCHER) +EVENT_TYPE(PAC_FILE_DECIDER_HAS_NO_FETCHER) // This event is emitted after deciding to fall-back to the next source // of PAC scripts in the list. -EVENT_TYPE(PROXY_SCRIPT_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE) +EVENT_TYPE(PAC_FILE_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE) // ------------------------------------------------------------------------ // ProxyResolutionService
diff --git a/net/log/net_log_source_type_list.h b/net/log/net_log_source_type_list.h index 31e484b..103e9ad 100644 --- a/net/log/net_log_source_type_list.h +++ b/net/log/net_log_source_type_list.h
@@ -9,7 +9,7 @@ SOURCE_TYPE(NONE) SOURCE_TYPE(URL_REQUEST) -SOURCE_TYPE(PROXY_SCRIPT_DECIDER) +SOURCE_TYPE(PAC_FILE_DECIDER) SOURCE_TYPE(HTTP_PROXY_CONNECT_JOB) SOURCE_TYPE(SOCKS_CONNECT_JOB) SOURCE_TYPE(SSL_CONNECT_JOB)
diff --git a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc index e75d189c..66a117eff 100644 --- a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc +++ b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc
@@ -32,7 +32,7 @@ namespace net { -DhcpProxyScriptAdapterFetcher::DhcpProxyScriptAdapterFetcher( +DhcpPacFileAdapterFetcher::DhcpPacFileAdapterFetcher( URLRequestContext* url_request_context, scoped_refptr<base::TaskRunner> task_runner) : task_runner_(task_runner), @@ -42,13 +42,13 @@ DCHECK(url_request_context_); } -DhcpProxyScriptAdapterFetcher::~DhcpProxyScriptAdapterFetcher() { +DhcpPacFileAdapterFetcher::~DhcpPacFileAdapterFetcher() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); Cancel(); } -void DhcpProxyScriptAdapterFetcher::Fetch( - const std::string& adapter_name, const CompletionCallback& callback) { +void DhcpPacFileAdapterFetcher::Fetch(const std::string& adapter_name, + const CompletionCallback& callback) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_EQ(state_, STATE_START); result_ = ERR_IO_PENDING; @@ -56,22 +56,18 @@ state_ = STATE_WAIT_DHCP; callback_ = callback; - wait_timer_.Start(FROM_HERE, ImplGetTimeout(), - this, &DhcpProxyScriptAdapterFetcher::OnTimeout); + wait_timer_.Start(FROM_HERE, ImplGetTimeout(), this, + &DhcpPacFileAdapterFetcher::OnTimeout); scoped_refptr<DhcpQuery> dhcp_query(ImplCreateDhcpQuery()); task_runner_->PostTaskAndReply( FROM_HERE, - base::Bind( - &DhcpProxyScriptAdapterFetcher::DhcpQuery::GetPacURLForAdapter, - dhcp_query.get(), - adapter_name), - base::Bind( - &DhcpProxyScriptAdapterFetcher::OnDhcpQueryDone, - AsWeakPtr(), - dhcp_query)); + base::Bind(&DhcpPacFileAdapterFetcher::DhcpQuery::GetPacURLForAdapter, + dhcp_query.get(), adapter_name), + base::Bind(&DhcpPacFileAdapterFetcher::OnDhcpQueryDone, AsWeakPtr(), + dhcp_query)); } -void DhcpProxyScriptAdapterFetcher::Cancel() { +void DhcpPacFileAdapterFetcher::Cancel() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); callback_.Reset(); wait_timer_.Stop(); @@ -96,48 +92,45 @@ } } -bool DhcpProxyScriptAdapterFetcher::DidFinish() const { +bool DhcpPacFileAdapterFetcher::DidFinish() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return state_ == STATE_FINISH; } -int DhcpProxyScriptAdapterFetcher::GetResult() const { +int DhcpPacFileAdapterFetcher::GetResult() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return result_; } -base::string16 DhcpProxyScriptAdapterFetcher::GetPacScript() const { +base::string16 DhcpPacFileAdapterFetcher::GetPacScript() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return pac_script_; } -GURL DhcpProxyScriptAdapterFetcher::GetPacURL() const { +GURL DhcpPacFileAdapterFetcher::GetPacURL() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return pac_url_; } -DhcpProxyScriptAdapterFetcher::DhcpQuery::DhcpQuery() { -} +DhcpPacFileAdapterFetcher::DhcpQuery::DhcpQuery() {} -void DhcpProxyScriptAdapterFetcher::DhcpQuery::GetPacURLForAdapter( +void DhcpPacFileAdapterFetcher::DhcpQuery::GetPacURLForAdapter( const std::string& adapter_name) { url_ = ImplGetPacURLFromDhcp(adapter_name); } -const std::string& DhcpProxyScriptAdapterFetcher::DhcpQuery::url() const { +const std::string& DhcpPacFileAdapterFetcher::DhcpQuery::url() const { return url_; } -std::string - DhcpProxyScriptAdapterFetcher::DhcpQuery::ImplGetPacURLFromDhcp( - const std::string& adapter_name) { - return DhcpProxyScriptAdapterFetcher::GetPacURLFromDhcp(adapter_name); +std::string DhcpPacFileAdapterFetcher::DhcpQuery::ImplGetPacURLFromDhcp( + const std::string& adapter_name) { + return DhcpPacFileAdapterFetcher::GetPacURLFromDhcp(adapter_name); } -DhcpProxyScriptAdapterFetcher::DhcpQuery::~DhcpQuery() { -} +DhcpPacFileAdapterFetcher::DhcpQuery::~DhcpQuery() {} -void DhcpProxyScriptAdapterFetcher::OnDhcpQueryDone( +void DhcpPacFileAdapterFetcher::OnDhcpQueryDone( scoped_refptr<DhcpQuery> dhcp_query) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // Because we can't cancel the call to the Win32 API, we can expect @@ -158,20 +151,19 @@ } else { state_ = STATE_WAIT_URL; script_fetcher_.reset(ImplCreateScriptFetcher()); - script_fetcher_->Fetch( - pac_url_, &pac_script_, - base::Bind(&DhcpProxyScriptAdapterFetcher::OnFetcherDone, - base::Unretained(this))); + script_fetcher_->Fetch(pac_url_, &pac_script_, + base::Bind(&DhcpPacFileAdapterFetcher::OnFetcherDone, + base::Unretained(this))); } } -void DhcpProxyScriptAdapterFetcher::OnTimeout() { +void DhcpPacFileAdapterFetcher::OnTimeout() { DCHECK_EQ(state_, STATE_WAIT_DHCP); result_ = ERR_TIMED_OUT; TransitionToFinish(); } -void DhcpProxyScriptAdapterFetcher::OnFetcherDone(int result) { +void DhcpPacFileAdapterFetcher::OnFetcherDone(int result) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(state_ == STATE_WAIT_URL || state_ == STATE_CANCEL); if (state_ == STATE_CANCEL) @@ -183,7 +175,7 @@ TransitionToFinish(); } -void DhcpProxyScriptAdapterFetcher::TransitionToFinish() { +void DhcpPacFileAdapterFetcher::TransitionToFinish() { DCHECK(state_ == STATE_WAIT_DHCP || state_ == STATE_WAIT_URL); state_ = STATE_FINISH; CompletionCallback callback = callback_; @@ -194,26 +186,25 @@ callback.Run(result_); } -DhcpProxyScriptAdapterFetcher::State - DhcpProxyScriptAdapterFetcher::state() const { +DhcpPacFileAdapterFetcher::State DhcpPacFileAdapterFetcher::state() const { return state_; } -ProxyScriptFetcher* DhcpProxyScriptAdapterFetcher::ImplCreateScriptFetcher() { - return new ProxyScriptFetcherImpl(url_request_context_); +PacFileFetcher* DhcpPacFileAdapterFetcher::ImplCreateScriptFetcher() { + return new PacFileFetcherImpl(url_request_context_); } -DhcpProxyScriptAdapterFetcher::DhcpQuery* - DhcpProxyScriptAdapterFetcher::ImplCreateDhcpQuery() { +DhcpPacFileAdapterFetcher::DhcpQuery* +DhcpPacFileAdapterFetcher::ImplCreateDhcpQuery() { return new DhcpQuery(); } -base::TimeDelta DhcpProxyScriptAdapterFetcher::ImplGetTimeout() const { +base::TimeDelta DhcpPacFileAdapterFetcher::ImplGetTimeout() const { return base::TimeDelta::FromMilliseconds(kTimeoutMs); } // static -std::string DhcpProxyScriptAdapterFetcher::GetPacURLFromDhcp( +std::string DhcpPacFileAdapterFetcher::GetPacURLFromDhcp( const std::string& adapter_name) { EnsureDhcpcsvcInit(); @@ -274,8 +265,9 @@ } // static -std::string DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString( - const char* data, size_t count_bytes) { +std::string DhcpPacFileAdapterFetcher::SanitizeDhcpApiString( + const char* data, + size_t count_bytes) { // The result should be ASCII, not wide character. Some DHCP // servers appear to count the trailing NULL in nBytesData, others // do not. A few (we've had one report, http://crbug.com/297810)
diff --git a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h index 64603e4..c293a7b8 100644 --- a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h +++ b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h
@@ -26,19 +26,19 @@ namespace net { -class ProxyScriptFetcher; +class PacFileFetcher; class URLRequestContext; // For a given adapter, this class takes care of first doing a DHCP lookup // to get the PAC URL, then if there is one, trying to fetch it. -class NET_EXPORT_PRIVATE DhcpProxyScriptAdapterFetcher - : public base::SupportsWeakPtr<DhcpProxyScriptAdapterFetcher> { +class NET_EXPORT_PRIVATE DhcpPacFileAdapterFetcher + : public base::SupportsWeakPtr<DhcpPacFileAdapterFetcher> { public: - // |url_request_context| must outlive DhcpProxyScriptAdapterFetcher. + // |url_request_context| must outlive DhcpPacFileAdapterFetcher. // |task_runner| will be used to post tasks to a thread. - DhcpProxyScriptAdapterFetcher(URLRequestContext* url_request_context, - scoped_refptr<base::TaskRunner> task_runner); - virtual ~DhcpProxyScriptAdapterFetcher(); + DhcpPacFileAdapterFetcher(URLRequestContext* url_request_context, + scoped_refptr<base::TaskRunner> task_runner); + virtual ~DhcpPacFileAdapterFetcher(); // Starts a fetch. On completion (but not cancellation), |callback| // will be invoked with the network error indicating success or failure @@ -47,7 +47,7 @@ // On completion, results can be obtained via |GetPacScript()|, |GetPacURL()|. // // You may only call Fetch() once on a given instance of - // DhcpProxyScriptAdapterFetcher. + // DhcpPacFileAdapterFetcher. virtual void Fetch(const std::string& adapter_name, const CompletionCallback& callback); @@ -93,9 +93,9 @@ // // In state WAIT_DHCP, if the DHCP query finishes and has no URL, it // moves to state FINISH. If there is a URL, it starts a - // ProxyScriptFetcher to fetch it and moves to state WAIT_URL. + // PacFileFetcher to fetch it and moves to state WAIT_URL. // - // It goes from WAIT_URL->FINISH when the ProxyScriptFetcher completes. + // It goes from WAIT_URL->FINISH when the PacFileFetcher completes. // // In state FINISH, completion is indicated to the outer class, with // the results of the fetch if a PAC script was successfully fetched. @@ -146,7 +146,7 @@ }; // Virtual methods introduced to allow unit testing. - virtual ProxyScriptFetcher* ImplCreateScriptFetcher(); + virtual PacFileFetcher* ImplCreateScriptFetcher(); virtual DhcpQuery* ImplCreateDhcpQuery(); virtual base::TimeDelta ImplGetTimeout() const; @@ -177,7 +177,7 @@ CompletionCallback callback_; // Fetcher to retrieve PAC files once URL is known. - std::unique_ptr<ProxyScriptFetcher> script_fetcher_; + std::unique_ptr<PacFileFetcher> script_fetcher_; // Implements a timeout on the call to the Win32 DHCP API. base::OneShotTimer wait_timer_; @@ -186,7 +186,7 @@ THREAD_CHECKER(thread_checker_); - DISALLOW_IMPLICIT_CONSTRUCTORS(DhcpProxyScriptAdapterFetcher); + DISALLOW_IMPLICIT_CONSTRUCTORS(DhcpPacFileAdapterFetcher); }; } // namespace net
diff --git a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win_unittest.cc b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win_unittest.cc index 0093b77..0b98c8d 100644 --- a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win_unittest.cc +++ b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win_unittest.cc
@@ -30,41 +30,39 @@ const char kPacUrl[] = "http://pacserver/script.pac"; -// In net/proxy_resolution/dhcp_proxy_script_fetcher_win_unittest.cc there are -// a few tests that exercise DhcpProxyScriptAdapterFetcher end-to-end along with -// DhcpProxyScriptFetcherWin, i.e. it tests the end-to-end usage of Win32 APIs +// In net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc there are +// a few tests that exercise DhcpPacFileAdapterFetcher end-to-end along with +// DhcpPacFileFetcherWin, i.e. it tests the end-to-end usage of Win32 APIs // and the network. In this file we test only by stubbing out functionality. -// Version of DhcpProxyScriptAdapterFetcher that mocks out dependencies +// Version of DhcpPacFileAdapterFetcher that mocks out dependencies // to allow unit testing. -class MockDhcpProxyScriptAdapterFetcher - : public DhcpProxyScriptAdapterFetcher { +class MockDhcpPacFileAdapterFetcher : public DhcpPacFileAdapterFetcher { public: - explicit MockDhcpProxyScriptAdapterFetcher( + explicit MockDhcpPacFileAdapterFetcher( URLRequestContext* context, scoped_refptr<base::TaskRunner> task_runner) - : DhcpProxyScriptAdapterFetcher(context, task_runner), + : DhcpPacFileAdapterFetcher(context, task_runner), dhcp_delay_(base::TimeDelta::FromMilliseconds(1)), timeout_(TestTimeouts::action_timeout()), configured_url_(kPacUrl), fetcher_delay_ms_(1), fetcher_result_(OK), - pac_script_("bingo") { - } + pac_script_("bingo") {} void Cancel() override { - DhcpProxyScriptAdapterFetcher::Cancel(); + DhcpPacFileAdapterFetcher::Cancel(); fetcher_ = NULL; } - ProxyScriptFetcher* ImplCreateScriptFetcher() override { + PacFileFetcher* ImplCreateScriptFetcher() override { // We don't maintain ownership of the fetcher, it is transferred to // the caller. - fetcher_ = new MockProxyScriptFetcher(); + fetcher_ = new MockPacFileFetcher(); if (fetcher_delay_ms_ != -1) { - fetcher_timer_.Start(FROM_HERE, - base::TimeDelta::FromMilliseconds(fetcher_delay_ms_), - this, &MockDhcpProxyScriptAdapterFetcher::OnFetcherTimer); + fetcher_timer_.Start( + FROM_HERE, base::TimeDelta::FromMilliseconds(fetcher_delay_ms_), this, + &MockDhcpPacFileAdapterFetcher::OnFetcherTimer); } return fetcher_; } @@ -108,11 +106,11 @@ void OnFetcherTimer() { // Note that there is an assumption by this mock implementation that - // DhcpProxyScriptAdapterFetcher::Fetch will call ImplCreateScriptFetcher + // DhcpPacFileAdapterFetcher::Fetch will call ImplCreateScriptFetcher // and call Fetch on the fetcher before the message loop is re-entered. // This holds true today, but if you hit this DCHECK the problem can // possibly be resolved by having a separate subclass of - // MockProxyScriptFetcher that adds the delay internally (instead of + // MockPacFileFetcher that adds the delay internally (instead of // the simple approach currently used in ImplCreateScriptFetcher above). DCHECK(fetcher_ && fetcher_->has_pending_request()); fetcher_->NotifyFetchCompletion(fetcher_result_, pac_script_); @@ -138,7 +136,7 @@ int fetcher_delay_ms_; int fetcher_result_; std::string pac_script_; - MockProxyScriptFetcher* fetcher_; + MockPacFileFetcher* fetcher_; base::OneShotTimer fetcher_timer_; scoped_refptr<DelayingDhcpQuery> dhcp_query_; }; @@ -147,7 +145,7 @@ public: FetcherClient() : url_request_context_(new TestURLRequestContext()), - fetcher_(new MockDhcpProxyScriptAdapterFetcher( + fetcher_(new MockDhcpPacFileAdapterFetcher( url_request_context_.get(), base::CreateSequencedTaskRunnerWithTraits( {base::MayBlock(), @@ -168,11 +166,11 @@ TestCompletionCallback callback_; std::unique_ptr<URLRequestContext> url_request_context_; - std::unique_ptr<MockDhcpProxyScriptAdapterFetcher> fetcher_; + std::unique_ptr<MockDhcpPacFileAdapterFetcher> fetcher_; base::string16 pac_text_; }; -TEST(DhcpProxyScriptAdapterFetcher, NormalCaseURLNotInDhcp) { +TEST(DhcpPacFileAdapterFetcher, NormalCaseURLNotInDhcp) { FetcherClient client; client.fetcher_->configured_url_ = ""; client.RunTest(); @@ -182,7 +180,7 @@ EXPECT_EQ(base::string16(L""), client.fetcher_->GetPacScript()); } -TEST(DhcpProxyScriptAdapterFetcher, NormalCaseURLInDhcp) { +TEST(DhcpPacFileAdapterFetcher, NormalCaseURLInDhcp) { FetcherClient client; client.RunTest(); client.WaitForResult(OK); @@ -192,7 +190,7 @@ EXPECT_EQ(GURL(kPacUrl), client.fetcher_->GetPacURL()); } -TEST(DhcpProxyScriptAdapterFetcher, TimeoutDuringDhcp) { +TEST(DhcpPacFileAdapterFetcher, TimeoutDuringDhcp) { // Does a Fetch() with a long enough delay on accessing DHCP that the // fetcher should time out. This is to test a case manual testing found, // where under certain circumstances (e.g. adapter enabled for DHCP and @@ -216,7 +214,7 @@ client.FinishTestAllowCleanup(); } -TEST(DhcpProxyScriptAdapterFetcher, CancelWhileDhcp) { +TEST(DhcpPacFileAdapterFetcher, CancelWhileDhcp) { FetcherClient client; client.RunTest(); client.fetcher_->Cancel(); @@ -229,7 +227,7 @@ client.FinishTestAllowCleanup(); } -TEST(DhcpProxyScriptAdapterFetcher, CancelWhileFetcher) { +TEST(DhcpPacFileAdapterFetcher, CancelWhileFetcher) { FetcherClient client; // This causes the mock fetcher not to pretend the // fetcher finishes after a timeout. @@ -251,7 +249,7 @@ client.FinishTestAllowCleanup(); } -TEST(DhcpProxyScriptAdapterFetcher, CancelAtCompletion) { +TEST(DhcpPacFileAdapterFetcher, CancelAtCompletion) { FetcherClient client; client.RunTest(); client.WaitForResult(OK); @@ -266,37 +264,35 @@ } // Does a real fetch on a mock DHCP configuration. -class MockDhcpRealFetchProxyScriptAdapterFetcher - : public MockDhcpProxyScriptAdapterFetcher { +class MockDhcpRealFetchPacFileAdapterFetcher + : public MockDhcpPacFileAdapterFetcher { public: - explicit MockDhcpRealFetchProxyScriptAdapterFetcher( + explicit MockDhcpRealFetchPacFileAdapterFetcher( URLRequestContext* context, scoped_refptr<base::TaskRunner> task_runner) - : MockDhcpProxyScriptAdapterFetcher(context, task_runner), - url_request_context_(context) { - } + : MockDhcpPacFileAdapterFetcher(context, task_runner), + url_request_context_(context) {} - // Returns a real proxy script fetcher. - ProxyScriptFetcher* ImplCreateScriptFetcher() override { - ProxyScriptFetcher* fetcher = - new ProxyScriptFetcherImpl(url_request_context_); + // Returns a real PAC file fetcher. + PacFileFetcher* ImplCreateScriptFetcher() override { + PacFileFetcher* fetcher = new PacFileFetcherImpl(url_request_context_); return fetcher; } URLRequestContext* url_request_context_; }; -TEST(DhcpProxyScriptAdapterFetcher, MockDhcpRealFetch) { +TEST(DhcpPacFileAdapterFetcher, MockDhcpRealFetch) { EmbeddedTestServer test_server; test_server.ServeFilesFromSourceDirectory( - "net/data/proxy_script_fetcher_unittest"); + "net/data/pac_file_fetcher_unittest"); ASSERT_TRUE(test_server.Start()); GURL configured_url = test_server.GetURL("/downloadable.pac"); FetcherClient client; TestURLRequestContext url_request_context; - client.fetcher_.reset(new MockDhcpRealFetchProxyScriptAdapterFetcher( + client.fetcher_.reset(new MockDhcpRealFetchPacFileAdapterFetcher( &url_request_context, base::CreateTaskRunnerWithTraits( {base::MayBlock(), @@ -314,23 +310,20 @@ #define BASE_URL "http://corpserver/proxy.pac" -TEST(DhcpProxyScriptAdapterFetcher, SanitizeDhcpApiString) { +TEST(DhcpPacFileAdapterFetcher, SanitizeDhcpApiString) { const size_t kBaseUrlLen = strlen(BASE_URL); // Default case. - EXPECT_EQ(BASE_URL, - DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString( - BASE_URL, kBaseUrlLen)); + EXPECT_EQ(BASE_URL, DhcpPacFileAdapterFetcher::SanitizeDhcpApiString( + BASE_URL, kBaseUrlLen)); // Trailing \n and no null-termination. - EXPECT_EQ(BASE_URL, - DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString( - BASE_URL "\nblablabla", kBaseUrlLen + 1)); + EXPECT_EQ(BASE_URL, DhcpPacFileAdapterFetcher::SanitizeDhcpApiString( + BASE_URL "\nblablabla", kBaseUrlLen + 1)); // Embedded NULLs. - EXPECT_EQ(BASE_URL, - DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString( - BASE_URL "\0foo\0blat", kBaseUrlLen + 9)); + EXPECT_EQ(BASE_URL, DhcpPacFileAdapterFetcher::SanitizeDhcpApiString( + BASE_URL "\0foo\0blat", kBaseUrlLen + 9)); } #undef BASE_URL
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher.cc b/net/proxy_resolution/dhcp_pac_file_fetcher.cc index 9a77cef..93a3554b 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher.cc +++ b/net/proxy_resolution/dhcp_pac_file_fetcher.cc
@@ -8,33 +8,33 @@ namespace net { -std::string DhcpProxyScriptFetcher::GetFetcherName() const { +std::string DhcpPacFileFetcher::GetFetcherName() const { return std::string(); } -DhcpProxyScriptFetcher::DhcpProxyScriptFetcher() = default; +DhcpPacFileFetcher::DhcpPacFileFetcher() = default; -DhcpProxyScriptFetcher::~DhcpProxyScriptFetcher() = default; +DhcpPacFileFetcher::~DhcpPacFileFetcher() = default; -DoNothingDhcpProxyScriptFetcher::DoNothingDhcpProxyScriptFetcher() = default; +DoNothingDhcpPacFileFetcher::DoNothingDhcpPacFileFetcher() = default; -DoNothingDhcpProxyScriptFetcher::~DoNothingDhcpProxyScriptFetcher() = default; +DoNothingDhcpPacFileFetcher::~DoNothingDhcpPacFileFetcher() = default; -int DoNothingDhcpProxyScriptFetcher::Fetch(base::string16* utf16_text, - const CompletionCallback& callback, - const NetLogWithSource& net_log) { +int DoNothingDhcpPacFileFetcher::Fetch(base::string16* utf16_text, + const CompletionCallback& callback, + const NetLogWithSource& net_log) { return ERR_NOT_IMPLEMENTED; } -void DoNothingDhcpProxyScriptFetcher::Cancel() {} +void DoNothingDhcpPacFileFetcher::Cancel() {} -void DoNothingDhcpProxyScriptFetcher::OnShutdown() {} +void DoNothingDhcpPacFileFetcher::OnShutdown() {} -const GURL& DoNothingDhcpProxyScriptFetcher::GetPacURL() const { +const GURL& DoNothingDhcpPacFileFetcher::GetPacURL() const { return gurl_; } -std::string DoNothingDhcpProxyScriptFetcher::GetFetcherName() const { +std::string DoNothingDhcpPacFileFetcher::GetFetcherName() const { return "do nothing"; }
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher.h b/net/proxy_resolution/dhcp_pac_file_fetcher.h index c8ef3d7..767c670f 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher.h +++ b/net/proxy_resolution/dhcp_pac_file_fetcher.h
@@ -17,7 +17,7 @@ class NetLogWithSource; -// Interface for classes that can fetch a proxy script as configured via DHCP. +// Interface for classes that can fetch a PAC file as configured via DHCP. // // The Fetch method on this interface tries to retrieve the most appropriate // PAC script configured via DHCP. @@ -25,10 +25,10 @@ // Normally there are zero or one DHCP scripts configured, but in the // presence of multiple adapters with DHCP enabled, the fetcher resolves // which PAC script to use if one or more are available. -class NET_EXPORT_PRIVATE DhcpProxyScriptFetcher { +class NET_EXPORT_PRIVATE DhcpPacFileFetcher { public: // Destruction should cancel any outstanding requests. - virtual ~DhcpProxyScriptFetcher(); + virtual ~DhcpPacFileFetcher(); // Attempts to retrieve the most appropriate PAC script configured via DHCP, // and invokes |callback| on completion. @@ -79,19 +79,19 @@ virtual std::string GetFetcherName() const; protected: - DhcpProxyScriptFetcher(); + DhcpPacFileFetcher(); private: - DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcher); + DISALLOW_COPY_AND_ASSIGN(DhcpPacFileFetcher); }; // A do-nothing retriever, always returns synchronously with // ERR_NOT_IMPLEMENTED result and empty text. -class NET_EXPORT_PRIVATE DoNothingDhcpProxyScriptFetcher - : public DhcpProxyScriptFetcher { +class NET_EXPORT_PRIVATE DoNothingDhcpPacFileFetcher + : public DhcpPacFileFetcher { public: - DoNothingDhcpProxyScriptFetcher(); - ~DoNothingDhcpProxyScriptFetcher() override; + DoNothingDhcpPacFileFetcher(); + ~DoNothingDhcpPacFileFetcher() override; int Fetch(base::string16* utf16_text, const CompletionCallback& callback, @@ -103,7 +103,7 @@ private: GURL gurl_; - DISALLOW_COPY_AND_ASSIGN(DoNothingDhcpProxyScriptFetcher); + DISALLOW_COPY_AND_ASSIGN(DoNothingDhcpPacFileFetcher); }; } // namespace net
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.cc index 255e013c..7b3f96b4 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.cc +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.cc
@@ -13,16 +13,16 @@ namespace net { -DhcpProxyScriptFetcherFactory::DhcpProxyScriptFetcherFactory() = default; +DhcpPacFileFetcherFactory::DhcpPacFileFetcherFactory() = default; -DhcpProxyScriptFetcherFactory::~DhcpProxyScriptFetcherFactory() = default; +DhcpPacFileFetcherFactory::~DhcpPacFileFetcherFactory() = default; -std::unique_ptr<DhcpProxyScriptFetcher> DhcpProxyScriptFetcherFactory::Create( +std::unique_ptr<DhcpPacFileFetcher> DhcpPacFileFetcherFactory::Create( URLRequestContext* context) { #if defined(OS_WIN) - return std::make_unique<DhcpProxyScriptFetcherWin>(context); + return std::make_unique<DhcpPacFileFetcherWin>(context); #else - return std::make_unique<DoNothingDhcpProxyScriptFetcher>(); + return std::make_unique<DoNothingDhcpPacFileFetcher>(); #endif }
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h index ab62b6b..cf520a9 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h
@@ -18,7 +18,7 @@ class URLRequestContext; // Factory object for creating the appropriate concrete base class of -// DhcpProxyScriptFetcher for your operating system and settings. +// DhcpPacFileFetcher for your operating system and settings. // // You might think we could just implement a DHCP client at the protocol // level and have cross-platform support for retrieving PAC configuration @@ -31,24 +31,24 @@ // // Therefore, we have platform-specific implementations, and so we use // this factory to select the right one. -class NET_EXPORT DhcpProxyScriptFetcherFactory { +class NET_EXPORT DhcpPacFileFetcherFactory { public: - DhcpProxyScriptFetcherFactory(); + DhcpPacFileFetcherFactory(); - virtual ~DhcpProxyScriptFetcherFactory(); + virtual ~DhcpPacFileFetcherFactory(); // url_request_context must be valid and its lifetime must exceed that of the - // returned DhcpProxyScriptFetcher. + // returned DhcpPacFileFetcher. // // Note that while a request is in progress, the fetcher may be holding a // reference to |url_request_context|. Be careful not to create cycles // between the fetcher and the context; you can break such cycles by calling // Cancel(). - virtual std::unique_ptr<DhcpProxyScriptFetcher> Create( + virtual std::unique_ptr<DhcpPacFileFetcher> Create( URLRequestContext* url_request_context); private: - DISALLOW_COPY_AND_ASSIGN(DhcpProxyScriptFetcherFactory); + DISALLOW_COPY_AND_ASSIGN(DhcpPacFileFetcherFactory); }; } // namespace net
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_factory_unittest.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_factory_unittest.cc index c8e73d3..4eb52a0 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_factory_unittest.cc +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_factory_unittest.cc
@@ -11,20 +11,20 @@ namespace { #if defined(OS_WIN) -TEST(DhcpProxyScriptFetcherFactoryTest, WindowsFetcherOnWindows) { - DhcpProxyScriptFetcherFactory factory; +TEST(DhcpPacFileFetcherFactoryTest, WindowsFetcherOnWindows) { + DhcpPacFileFetcherFactory factory; TestURLRequestContext context; - std::unique_ptr<DhcpProxyScriptFetcher> fetcher(factory.Create(&context)); + std::unique_ptr<DhcpPacFileFetcher> fetcher(factory.Create(&context)); ASSERT_TRUE(fetcher.get()); EXPECT_EQ("win", fetcher->GetFetcherName()); } #else // !defined(OS_WIN) -TEST(DhcpProxyScriptFetcherFactoryTest, ReturnNullOnUnsupportedPlatforms) { - DhcpProxyScriptFetcherFactory factory; +TEST(DhcpPacFileFetcherFactoryTest, ReturnNullOnUnsupportedPlatforms) { + DhcpPacFileFetcherFactory factory; TestURLRequestContext context; - std::unique_ptr<DhcpProxyScriptFetcher> fetcher(factory.Create(&context)); + std::unique_ptr<DhcpPacFileFetcher> fetcher(factory.Create(&context)); ASSERT_TRUE(fetcher.get()); EXPECT_EQ("do nothing", fetcher->GetFetcherName()); }
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc index 2f5690e..a14f621e 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
@@ -271,7 +271,7 @@ } // namespace -DhcpProxyScriptFetcherWin::DhcpProxyScriptFetcherWin( +DhcpPacFileFetcherWin::DhcpPacFileFetcherWin( URLRequestContext* url_request_context) : state_(STATE_START), num_pending_fetchers_(0), @@ -281,15 +281,15 @@ DCHECK(url_request_context_); } -DhcpProxyScriptFetcherWin::~DhcpProxyScriptFetcherWin() { +DhcpPacFileFetcherWin::~DhcpPacFileFetcherWin() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // Count as user-initiated if we are not yet in STATE_DONE. Cancel(); } -int DhcpProxyScriptFetcherWin::Fetch(base::string16* utf16_text, - const CompletionCallback& callback, - const NetLogWithSource& net_log) { +int DhcpPacFileFetcherWin::Fetch(base::string16* utf16_text, + const CompletionCallback& callback, + const NetLogWithSource& net_log) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); if (state_ != STATE_START && state_ != STATE_DONE) { NOTREACHED(); @@ -316,22 +316,21 @@ task_runner_->PostTaskAndReply( FROM_HERE, - base::Bind( - &DhcpProxyScriptFetcherWin::AdapterQuery::GetCandidateAdapterNames, - last_query_.get()), - base::Bind(&DhcpProxyScriptFetcherWin::OnGetCandidateAdapterNamesDone, + base::Bind(&DhcpPacFileFetcherWin::AdapterQuery::GetCandidateAdapterNames, + last_query_.get()), + base::Bind(&DhcpPacFileFetcherWin::OnGetCandidateAdapterNamesDone, AsWeakPtr(), last_query_)); return ERR_IO_PENDING; } -void DhcpProxyScriptFetcherWin::Cancel() { +void DhcpPacFileFetcherWin::Cancel() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); CancelImpl(); } -void DhcpProxyScriptFetcherWin::OnShutdown() { +void DhcpPacFileFetcherWin::OnShutdown() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // Back up callback, if there is one, as CancelImpl() will destroy it. @@ -348,7 +347,7 @@ callback.Run(ERR_CONTEXT_SHUT_DOWN); } -void DhcpProxyScriptFetcherWin::CancelImpl() { +void DhcpPacFileFetcherWin::CancelImpl() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); if (state_ != STATE_DONE) { @@ -366,7 +365,7 @@ } } -void DhcpProxyScriptFetcherWin::OnGetCandidateAdapterNamesDone( +void DhcpPacFileFetcherWin::OnGetCandidateAdapterNamesDone( scoped_refptr<AdapterQuery> query) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -401,31 +400,31 @@ } for (const std::string& adapter_name : adapter_names) { - std::unique_ptr<DhcpProxyScriptAdapterFetcher> fetcher( + std::unique_ptr<DhcpPacFileAdapterFetcher> fetcher( ImplCreateAdapterFetcher()); size_t fetcher_index = fetchers_.size(); fetcher->Fetch(adapter_name, - base::Bind(&DhcpProxyScriptFetcherWin::OnFetcherDone, + base::Bind(&DhcpPacFileFetcherWin::OnFetcherDone, base::Unretained(this), fetcher_index)); fetchers_.push_back(std::move(fetcher)); } num_pending_fetchers_ = fetchers_.size(); } -std::string DhcpProxyScriptFetcherWin::GetFetcherName() const { +std::string DhcpPacFileFetcherWin::GetFetcherName() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); return "win"; } -const GURL& DhcpProxyScriptFetcherWin::GetPacURL() const { +const GURL& DhcpPacFileFetcherWin::GetPacURL() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_EQ(state_, STATE_DONE); return pac_url_; } -void DhcpProxyScriptFetcherWin::OnFetcherDone(size_t fetcher_index, - int result) { +void DhcpPacFileFetcherWin::OnFetcherDone(size_t fetcher_index, + int result) { DCHECK(state_ == STATE_NO_RESULTS || state_ == STATE_SOME_RESULTS); net_log_.AddEvent( @@ -459,18 +458,18 @@ state_ = STATE_SOME_RESULTS; net_log_.AddEvent(NetLogEventType::WPAD_DHCP_WIN_START_WAIT_TIMER); wait_timer_.Start(FROM_HERE, - ImplGetMaxWait(), this, &DhcpProxyScriptFetcherWin::OnWaitTimer); + ImplGetMaxWait(), this, &DhcpPacFileFetcherWin::OnWaitTimer); } } -void DhcpProxyScriptFetcherWin::OnWaitTimer() { +void DhcpPacFileFetcherWin::OnWaitTimer() { DCHECK_EQ(state_, STATE_SOME_RESULTS); net_log_.AddEvent(NetLogEventType::WPAD_DHCP_WIN_ON_WAIT_TIMER); TransitionToDone(); } -void DhcpProxyScriptFetcherWin::TransitionToDone() { +void DhcpPacFileFetcherWin::TransitionToDone() { DCHECK(state_ == STATE_NO_RESULTS || state_ == STATE_SOME_RESULTS); int used_fetcher_index = -1; @@ -520,33 +519,32 @@ callback.Run(result); } -int DhcpProxyScriptFetcherWin::num_pending_fetchers() const { +int DhcpPacFileFetcherWin::num_pending_fetchers() const { return num_pending_fetchers_; } -URLRequestContext* DhcpProxyScriptFetcherWin::url_request_context() const { +URLRequestContext* DhcpPacFileFetcherWin::url_request_context() const { return url_request_context_; } -scoped_refptr<base::TaskRunner> DhcpProxyScriptFetcherWin::GetTaskRunner() { +scoped_refptr<base::TaskRunner> DhcpPacFileFetcherWin::GetTaskRunner() { return task_runner_; } -DhcpProxyScriptAdapterFetcher* - DhcpProxyScriptFetcherWin::ImplCreateAdapterFetcher() { - return new DhcpProxyScriptAdapterFetcher(url_request_context_, task_runner_); +DhcpPacFileAdapterFetcher* DhcpPacFileFetcherWin::ImplCreateAdapterFetcher() { + return new DhcpPacFileAdapterFetcher(url_request_context_, task_runner_); } -DhcpProxyScriptFetcherWin::AdapterQuery* - DhcpProxyScriptFetcherWin::ImplCreateAdapterQuery() { +DhcpPacFileFetcherWin::AdapterQuery* +DhcpPacFileFetcherWin::ImplCreateAdapterQuery() { return new AdapterQuery(); } -base::TimeDelta DhcpProxyScriptFetcherWin::ImplGetMaxWait() { +base::TimeDelta DhcpPacFileFetcherWin::ImplGetMaxWait() { return kMaxWaitAfterFirstResult; } -bool DhcpProxyScriptFetcherWin::GetCandidateAdapterNames( +bool DhcpPacFileFetcherWin::GetCandidateAdapterNames( std::set<std::string>* adapter_names, DhcpAdapterNamesLoggingInfo* info) { DCHECK(adapter_names); @@ -603,10 +601,10 @@ return true; } -DhcpProxyScriptFetcherWin::AdapterQuery::AdapterQuery() +DhcpPacFileFetcherWin::AdapterQuery::AdapterQuery() : logging_info_(new DhcpAdapterNamesLoggingInfo()) {} -void DhcpProxyScriptFetcherWin::AdapterQuery::GetCandidateAdapterNames() { +void DhcpPacFileFetcherWin::AdapterQuery::GetCandidateAdapterNames() { logging_info_->error = ERROR_NO_DATA; logging_info_->adapters.reset(); logging_info_->worker_thread_start_time = base::TimeTicks::Now(); @@ -617,18 +615,17 @@ } const std::set<std::string>& - DhcpProxyScriptFetcherWin::AdapterQuery::adapter_names() const { +DhcpPacFileFetcherWin::AdapterQuery::adapter_names() const { return adapter_names_; } -bool DhcpProxyScriptFetcherWin::AdapterQuery::ImplGetCandidateAdapterNames( +bool DhcpPacFileFetcherWin::AdapterQuery::ImplGetCandidateAdapterNames( std::set<std::string>* adapter_names, DhcpAdapterNamesLoggingInfo* info) { - return DhcpProxyScriptFetcherWin::GetCandidateAdapterNames(adapter_names, - info); + return DhcpPacFileFetcherWin::GetCandidateAdapterNames(adapter_names, + info); } -DhcpProxyScriptFetcherWin::AdapterQuery::~AdapterQuery() { -} +DhcpPacFileFetcherWin::AdapterQuery::~AdapterQuery() {} } // namespace net
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win.h b/net/proxy_resolution/dhcp_pac_file_fetcher_win.h index a4d33fe..6b3831d1 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_win.h +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win.h
@@ -26,21 +26,21 @@ namespace net { struct DhcpAdapterNamesLoggingInfo; -class DhcpProxyScriptAdapterFetcher; +class DhcpPacFileAdapterFetcher; class URLRequestContext; // Windows-specific implementation. -class NET_EXPORT_PRIVATE DhcpProxyScriptFetcherWin - : public DhcpProxyScriptFetcher, - public base::SupportsWeakPtr<DhcpProxyScriptFetcherWin> { +class NET_EXPORT_PRIVATE DhcpPacFileFetcherWin + : public DhcpPacFileFetcher, + public base::SupportsWeakPtr<DhcpPacFileFetcherWin> { public: - // Creates a DhcpProxyScriptFetcherWin that issues requests through + // Creates a DhcpPacFileFetcherWin that issues requests through // |url_request_context|. |url_request_context| must remain valid for - // the lifetime of DhcpProxyScriptFetcherWin. - explicit DhcpProxyScriptFetcherWin(URLRequestContext* url_request_context); - ~DhcpProxyScriptFetcherWin() override; + // the lifetime of DhcpPacFileFetcherWin. + explicit DhcpPacFileFetcherWin(URLRequestContext* url_request_context); + ~DhcpPacFileFetcherWin() override; - // DhcpProxyScriptFetcher implementation. + // DhcpPacFileFetcher implementation. int Fetch(base::string16* utf16_text, const CompletionCallback& callback, const NetLogWithSource& net_log) override; @@ -100,7 +100,7 @@ }; // Virtual methods introduced to allow unit testing. - virtual DhcpProxyScriptAdapterFetcher* ImplCreateAdapterFetcher(); + virtual DhcpPacFileAdapterFetcher* ImplCreateAdapterFetcher(); virtual AdapterQuery* ImplCreateAdapterQuery(); virtual base::TimeDelta ImplGetMaxWait(); virtual void ImplOnGetCandidateAdapterNamesDone() {} @@ -115,7 +115,7 @@ // This is the outer state machine for fetching PAC configuration from // DHCP. It relies for sub-states on the state machine of the - // DhcpProxyScriptAdapterFetcher class. + // DhcpPacFileAdapterFetcher class. // // The goal of the implementation is to the following work in parallel // for all network adapters that are using DHCP: @@ -128,7 +128,7 @@ // The state machine goes from START->WAIT_ADAPTERS when it starts a // worker thread to get the list of adapters with DHCP enabled. // It then goes from WAIT_ADAPTERS->NO_RESULTS when it creates - // and starts an DhcpProxyScriptAdapterFetcher for each adapter. It goes + // and starts an DhcpPacFileAdapterFetcher for each adapter. It goes // from NO_RESULTS->SOME_RESULTS when it gets the first result; at this // point a wait timer is started. It goes from SOME_RESULTS->DONE in // two cases: All results are known, or the wait timer expired. A call @@ -149,10 +149,9 @@ }; // Vector, in Windows' network adapter preference order, of - // DhcpProxyScriptAdapterFetcher objects that are or were attempting + // DhcpPacFileAdapterFetcher objects that are or were attempting // to fetch a PAC file based on DHCP configuration. - using FetcherVector = - std::vector<std::unique_ptr<DhcpProxyScriptAdapterFetcher>>; + using FetcherVector = std::vector<std::unique_ptr<DhcpPacFileAdapterFetcher>>; FetcherVector fetchers_; // Current state of this state machine. @@ -189,7 +188,7 @@ THREAD_CHECKER(thread_checker_); - DISALLOW_IMPLICIT_CONSTRUCTORS(DhcpProxyScriptFetcherWin); + DISALLOW_IMPLICIT_CONSTRUCTORS(DhcpPacFileFetcherWin); }; } // namespace net
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc index 68dd9782..ad837f0 100644 --- a/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc +++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc
@@ -27,7 +27,7 @@ namespace { -TEST(DhcpProxyScriptFetcherWin, AdapterNamesAndPacURLFromDhcp) { +TEST(DhcpPacFileFetcherWin, AdapterNamesAndPacURLFromDhcp) { // This tests our core Win32 implementation without any of the wrappers // we layer on top to achieve asynchronous and parallel operations. // @@ -36,9 +36,9 @@ // is no crash and no error returned, but does not assert on the number // of interfaces or the information returned via DHCP. std::set<std::string> adapter_names; - DhcpProxyScriptFetcherWin::GetCandidateAdapterNames(&adapter_names, nullptr); + DhcpPacFileFetcherWin::GetCandidateAdapterNames(&adapter_names, nullptr); for (const std::string& adapter_name : adapter_names) { - DhcpProxyScriptAdapterFetcher::GetPacURLFromDhcp(adapter_name); + DhcpPacFileAdapterFetcher::GetPacURLFromDhcp(adapter_name); } } @@ -47,7 +47,7 @@ public: RealFetchTester() : context_(new TestURLRequestContext), - fetcher_(new DhcpProxyScriptFetcherWin(context_.get())), + fetcher_(new DhcpPacFileFetcherWin(context_.get())), finished_(false), on_completion_is_error_(false) { // Make sure the test ends. @@ -106,13 +106,13 @@ // immediately "detaches" any worker threads, so the best we can do is give // them a little time. If we start running into Valgrind leaks, we can // do something a bit more clever to track worker threads even when the - // DhcpProxyScriptFetcherWin state machine has finished. + // DhcpPacFileFetcherWin state machine has finished. void FinishTestAllowCleanup() { base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); } std::unique_ptr<URLRequestContext> context_; - std::unique_ptr<DhcpProxyScriptFetcherWin> fetcher_; + std::unique_ptr<DhcpPacFileFetcherWin> fetcher_; bool finished_; base::string16 pac_text_; base::OneShotTimer timeout_; @@ -120,7 +120,7 @@ bool on_completion_is_error_; }; -TEST(DhcpProxyScriptFetcherWin, RealFetch) { +TEST(DhcpPacFileFetcherWin, RealFetch) { // This tests a call to Fetch() with no stubbing out of dependencies. // // We don't make assumptions about the environment this unit test is @@ -136,7 +136,7 @@ fetcher.FinishTestAllowCleanup(); } -TEST(DhcpProxyScriptFetcherWin, RealFetchWithCancel) { +TEST(DhcpPacFileFetcherWin, RealFetchWithCancel) { // Does a Fetch() with an immediate cancel. As before, just // exercises the code without stubbing out dependencies. RealFetchTester fetcher; @@ -149,14 +149,11 @@ } // For RealFetchWithDeferredCancel, below. -class DelayingDhcpProxyScriptAdapterFetcher - : public DhcpProxyScriptAdapterFetcher { +class DelayingDhcpPacFileAdapterFetcher : public DhcpPacFileAdapterFetcher { public: - DelayingDhcpProxyScriptAdapterFetcher( - URLRequestContext* url_request_context, - scoped_refptr<base::TaskRunner> task_runner) - : DhcpProxyScriptAdapterFetcher(url_request_context, task_runner) { - } + DelayingDhcpPacFileAdapterFetcher(URLRequestContext* url_request_context, + scoped_refptr<base::TaskRunner> task_runner) + : DhcpPacFileAdapterFetcher(url_request_context, task_runner) {} class DelayingDhcpQuery : public DhcpQuery { public: @@ -178,28 +175,25 @@ }; // For RealFetchWithDeferredCancel, below. -class DelayingDhcpProxyScriptFetcherWin - : public DhcpProxyScriptFetcherWin { +class DelayingDhcpPacFileFetcherWin : public DhcpPacFileFetcherWin { public: - explicit DelayingDhcpProxyScriptFetcherWin( - URLRequestContext* context) - : DhcpProxyScriptFetcherWin(context) { - } + explicit DelayingDhcpPacFileFetcherWin(URLRequestContext* context) + : DhcpPacFileFetcherWin(context) {} - DhcpProxyScriptAdapterFetcher* ImplCreateAdapterFetcher() override { - return new DelayingDhcpProxyScriptAdapterFetcher(url_request_context(), - GetTaskRunner()); + DhcpPacFileAdapterFetcher* ImplCreateAdapterFetcher() override { + return new DelayingDhcpPacFileAdapterFetcher(url_request_context(), + GetTaskRunner()); } }; -TEST(DhcpProxyScriptFetcherWin, RealFetchWithDeferredCancel) { +TEST(DhcpPacFileFetcherWin, RealFetchWithDeferredCancel) { // Does a Fetch() with a slightly delayed cancel. As before, just // exercises the code without stubbing out dependencies, but // introduces a guaranteed 20 ms delay on the worker threads so that // the cancel is called before they complete. RealFetchTester fetcher; fetcher.fetcher_.reset( - new DelayingDhcpProxyScriptFetcherWin(fetcher.context_.get())); + new DelayingDhcpPacFileFetcherWin(fetcher.context_.get())); fetcher.on_completion_is_error_ = true; fetcher.RunTestWithDeferredCancel(); fetcher.WaitUntilDone(); @@ -208,23 +202,21 @@ // The remaining tests are to exercise our state machine in various // situations, with actual network access fully stubbed out. -class DummyDhcpProxyScriptAdapterFetcher - : public DhcpProxyScriptAdapterFetcher { +class DummyDhcpPacFileAdapterFetcher : public DhcpPacFileAdapterFetcher { public: - DummyDhcpProxyScriptAdapterFetcher(URLRequestContext* context, - scoped_refptr<base::TaskRunner> runner) - : DhcpProxyScriptAdapterFetcher(context, runner), + DummyDhcpPacFileAdapterFetcher(URLRequestContext* context, + scoped_refptr<base::TaskRunner> runner) + : DhcpPacFileAdapterFetcher(context, runner), did_finish_(false), result_(OK), pac_script_(L"bingo"), - fetch_delay_ms_(1) { - } + fetch_delay_ms_(1) {} void Fetch(const std::string& adapter_name, const CompletionCallback& callback) override { callback_ = callback; timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(fetch_delay_ms_), - this, &DummyDhcpProxyScriptAdapterFetcher::OnTimer); + this, &DummyDhcpPacFileAdapterFetcher::OnTimer); } void Cancel() override { @@ -266,7 +258,7 @@ base::OneShotTimer timer_; }; -class MockDhcpProxyScriptFetcherWin : public DhcpProxyScriptFetcherWin { +class MockDhcpPacFileFetcherWin : public DhcpPacFileFetcherWin { public: class MockAdapterQuery : public AdapterQuery { public: @@ -287,8 +279,8 @@ ~MockAdapterQuery() override {} }; - MockDhcpProxyScriptFetcherWin(URLRequestContext* context) - : DhcpProxyScriptFetcherWin(context), + MockDhcpPacFileFetcherWin(URLRequestContext* context) + : DhcpPacFileFetcherWin(context), num_fetchers_created_(0), worker_finished_event_( base::WaitableEvent::ResetPolicy::MANUAL, @@ -296,15 +288,15 @@ ResetTestState(); } - ~MockDhcpProxyScriptFetcherWin() override { ResetTestState(); } + ~MockDhcpPacFileFetcherWin() override { ResetTestState(); } - using DhcpProxyScriptFetcherWin::GetTaskRunner; + using DhcpPacFileFetcherWin::GetTaskRunner; // Adds a fetcher object to the queue of fetchers used by // |ImplCreateAdapterFetcher()|, and its name to the list of adapters // returned by ImplGetCandidateAdapterNames. void PushBackAdapter(const std::string& adapter_name, - DhcpProxyScriptAdapterFetcher* fetcher) { + DhcpPacFileAdapterFetcher* fetcher) { adapter_query_->mock_adapter_names_.push_back(adapter_name); adapter_fetchers_.push_back(fetcher); } @@ -314,15 +306,15 @@ int result, base::string16 pac_script, base::TimeDelta fetch_delay) { - std::unique_ptr<DummyDhcpProxyScriptAdapterFetcher> adapter_fetcher( - new DummyDhcpProxyScriptAdapterFetcher(url_request_context(), - GetTaskRunner())); + std::unique_ptr<DummyDhcpPacFileAdapterFetcher> adapter_fetcher( + new DummyDhcpPacFileAdapterFetcher(url_request_context(), + GetTaskRunner())); adapter_fetcher->Configure( did_finish, result, pac_script, fetch_delay.InMilliseconds()); PushBackAdapter(adapter_name, adapter_fetcher.release()); } - DhcpProxyScriptAdapterFetcher* ImplCreateAdapterFetcher() override { + DhcpPacFileAdapterFetcher* ImplCreateAdapterFetcher() override { ++num_fetchers_created_; return adapter_fetchers_[next_adapter_fetcher_index_++]; } @@ -342,8 +334,8 @@ void ResetTestState() { // Delete any adapter fetcher objects we didn't hand out. - std::vector<DhcpProxyScriptAdapterFetcher*>::const_iterator it - = adapter_fetchers_.begin(); + std::vector<DhcpPacFileAdapterFetcher*>::const_iterator it = + adapter_fetchers_.begin(); for (; it != adapter_fetchers_.end(); ++it) { if (num_fetchers_created_-- <= 0) { delete (*it); @@ -366,7 +358,7 @@ // Ownership gets transferred to the implementation class via // ImplCreateAdapterFetcher, but any objects not handed out are // deleted on destruction. - std::vector<DhcpProxyScriptAdapterFetcher*> adapter_fetchers_; + std::vector<DhcpPacFileAdapterFetcher*> adapter_fetchers_; scoped_refptr<MockAdapterQuery> adapter_query_; @@ -434,7 +426,7 @@ } std::unique_ptr<URLRequestContext> context_; - MockDhcpProxyScriptFetcherWin fetcher_; + MockDhcpPacFileFetcherWin fetcher_; bool finished_; int result_; base::string16 pac_text_; @@ -444,9 +436,8 @@ // the ReuseFetcher test at the bottom. void TestNormalCaseURLConfiguredOneAdapter(FetcherClient* client) { TestURLRequestContext context; - std::unique_ptr<DummyDhcpProxyScriptAdapterFetcher> adapter_fetcher( - new DummyDhcpProxyScriptAdapterFetcher(&context, - client->GetTaskRunner())); + std::unique_ptr<DummyDhcpPacFileAdapterFetcher> adapter_fetcher( + new DummyDhcpPacFileAdapterFetcher(&context, client->GetTaskRunner())); adapter_fetcher->Configure(true, OK, L"bingo", 1); client->fetcher_.PushBackAdapter("a", adapter_fetcher.release()); client->RunTest(); @@ -455,7 +446,7 @@ ASSERT_EQ(L"bingo", client->pac_text_); } -TEST(DhcpProxyScriptFetcherWin, NormalCaseURLConfiguredOneAdapter) { +TEST(DhcpPacFileFetcherWin, NormalCaseURLConfiguredOneAdapter) { FetcherClient client; TestNormalCaseURLConfiguredOneAdapter(&client); } @@ -474,7 +465,7 @@ ASSERT_EQ(L"bingo", client->pac_text_); } -TEST(DhcpProxyScriptFetcherWin, NormalCaseURLConfiguredMultipleAdapters) { +TEST(DhcpPacFileFetcherWin, NormalCaseURLConfiguredMultipleAdapters) { FetcherClient client; TestNormalCaseURLConfiguredMultipleAdapters(&client); } @@ -496,7 +487,7 @@ ASSERT_EQ(L"rocko", client->pac_text_); } -TEST(DhcpProxyScriptFetcherWin, +TEST(DhcpPacFileFetcherWin, NormalCaseURLConfiguredMultipleAdaptersWithTimeout) { FetcherClient client; TestNormalCaseURLConfiguredMultipleAdaptersWithTimeout(&client); @@ -525,7 +516,7 @@ ASSERT_EQ(L"", client->pac_text_); } -TEST(DhcpProxyScriptFetcherWin, +TEST(DhcpPacFileFetcherWin, FailureCaseURLConfiguredMultipleAdaptersWithTimeout) { FetcherClient client; TestFailureCaseURLConfiguredMultipleAdaptersWithTimeout(&client); @@ -550,7 +541,7 @@ ASSERT_EQ(L"", client->pac_text_); } -TEST(DhcpProxyScriptFetcherWin, FailureCaseNoURLConfigured) { +TEST(DhcpPacFileFetcherWin, FailureCaseNoURLConfigured) { FetcherClient client; TestFailureCaseNoURLConfigured(&client); } @@ -563,7 +554,7 @@ ASSERT_EQ(0, client->fetcher_.num_fetchers_created_); } -TEST(DhcpProxyScriptFetcherWin, FailureCaseNoDhcpAdapters) { +TEST(DhcpPacFileFetcherWin, FailureCaseNoDhcpAdapters) { FetcherClient client; TestFailureCaseNoDhcpAdapters(&client); } @@ -598,16 +589,15 @@ timer.Elapsed()); } -TEST(DhcpProxyScriptFetcherWin, ShortCircuitLessPreferredAdapters) { +TEST(DhcpPacFileFetcherWin, ShortCircuitLessPreferredAdapters) { FetcherClient client; TestShortCircuitLessPreferredAdapters(&client); } void TestImmediateCancel(FetcherClient* client) { TestURLRequestContext context; - std::unique_ptr<DummyDhcpProxyScriptAdapterFetcher> adapter_fetcher( - new DummyDhcpProxyScriptAdapterFetcher(&context, - client->GetTaskRunner())); + std::unique_ptr<DummyDhcpPacFileAdapterFetcher> adapter_fetcher( + new DummyDhcpPacFileAdapterFetcher(&context, client->GetTaskRunner())); adapter_fetcher->Configure(true, OK, L"bingo", 1); client->fetcher_.PushBackAdapter("a", adapter_fetcher.release()); client->RunTest(); @@ -618,15 +608,15 @@ // Regression test to check that when we cancel immediately, no // adapter fetchers get created. -TEST(DhcpProxyScriptFetcherWin, ImmediateCancel) { +TEST(DhcpPacFileFetcherWin, ImmediateCancel) { FetcherClient client; TestImmediateCancel(&client); } -TEST(DhcpProxyScriptFetcherWin, ReuseFetcher) { +TEST(DhcpPacFileFetcherWin, ReuseFetcher) { FetcherClient client; - // The ProxyScriptFetcher interface stipulates that only a single + // The PacFileFetcher interface stipulates that only a single // |Fetch()| may be in flight at once, but allows reuse, so test // that the state transitions correctly from done to start in all // cases we're testing. @@ -660,11 +650,11 @@ (*test_functions.begin())(&client); } -TEST(DhcpProxyScriptFetcherWin, OnShutdown) { +TEST(DhcpPacFileFetcherWin, OnShutdown) { FetcherClient client; TestURLRequestContext context; - std::unique_ptr<DummyDhcpProxyScriptAdapterFetcher> adapter_fetcher( - new DummyDhcpProxyScriptAdapterFetcher(&context, client.GetTaskRunner())); + std::unique_ptr<DummyDhcpPacFileAdapterFetcher> adapter_fetcher( + new DummyDhcpPacFileAdapterFetcher(&context, client.GetTaskRunner())); adapter_fetcher->Configure(true, OK, L"bingo", 1); client.fetcher_.PushBackAdapter("a", adapter_fetcher.release()); client.RunTest();
diff --git a/net/proxy_resolution/mock_pac_file_fetcher.cc b/net/proxy_resolution/mock_pac_file_fetcher.cc index 4c172c865..574153f6 100644 --- a/net/proxy_resolution/mock_pac_file_fetcher.cc +++ b/net/proxy_resolution/mock_pac_file_fetcher.cc
@@ -13,16 +13,17 @@ namespace net { -MockProxyScriptFetcher::MockProxyScriptFetcher() +MockPacFileFetcher::MockPacFileFetcher() : pending_request_text_(NULL), waiting_for_fetch_(false), is_shutdown_(false) {} -MockProxyScriptFetcher::~MockProxyScriptFetcher() = default; +MockPacFileFetcher::~MockPacFileFetcher() = default; -// ProxyScriptFetcher implementation. -int MockProxyScriptFetcher::Fetch(const GURL& url, base::string16* text, - const CompletionCallback& callback) { +// PacFileFetcher implementation. +int MockPacFileFetcher::Fetch(const GURL& url, + base::string16* text, + const CompletionCallback& callback) { DCHECK(!has_pending_request()); if (waiting_for_fetch_) @@ -39,37 +40,37 @@ return ERR_IO_PENDING; } -void MockProxyScriptFetcher::NotifyFetchCompletion( - int result, const std::string& ascii_text) { +void MockPacFileFetcher::NotifyFetchCompletion(int result, + const std::string& ascii_text) { DCHECK(has_pending_request()); *pending_request_text_ = base::ASCIIToUTF16(ascii_text); base::ResetAndReturn(&pending_request_callback_).Run(result); } -void MockProxyScriptFetcher::Cancel() { +void MockPacFileFetcher::Cancel() { pending_request_callback_.Reset(); } -void MockProxyScriptFetcher::OnShutdown() { +void MockPacFileFetcher::OnShutdown() { is_shutdown_ = true; if (pending_request_callback_) { base::ResetAndReturn(&pending_request_callback_).Run(ERR_CONTEXT_SHUT_DOWN); } } -URLRequestContext* MockProxyScriptFetcher::GetRequestContext() const { +URLRequestContext* MockPacFileFetcher::GetRequestContext() const { return NULL; } -const GURL& MockProxyScriptFetcher::pending_request_url() const { +const GURL& MockPacFileFetcher::pending_request_url() const { return pending_request_url_; } -bool MockProxyScriptFetcher::has_pending_request() const { +bool MockPacFileFetcher::has_pending_request() const { return !pending_request_callback_.is_null(); } -void MockProxyScriptFetcher::WaitUntilFetch() { +void MockPacFileFetcher::WaitUntilFetch() { DCHECK(!has_pending_request()); waiting_for_fetch_ = true; base::RunLoop().Run();
diff --git a/net/proxy_resolution/mock_pac_file_fetcher.h b/net/proxy_resolution/mock_pac_file_fetcher.h index 218dc77..01c897a 100644 --- a/net/proxy_resolution/mock_pac_file_fetcher.h +++ b/net/proxy_resolution/mock_pac_file_fetcher.h
@@ -15,14 +15,14 @@ class URLRequestContext; -// A mock ProxyScriptFetcher. No result will be returned to the fetch client +// A mock PacFileFetcher. No result will be returned to the fetch client // until we call NotifyFetchCompletion() to set the results. -class MockProxyScriptFetcher : public ProxyScriptFetcher { +class MockPacFileFetcher : public PacFileFetcher { public: - MockProxyScriptFetcher(); - ~MockProxyScriptFetcher() override; + MockPacFileFetcher(); + ~MockPacFileFetcher() override; - // ProxyScriptFetcher implementation. + // PacFileFetcher implementation. int Fetch(const GURL& url, base::string16* text, const CompletionCallback& callback) override;
diff --git a/net/proxy_resolution/mock_proxy_resolver.cc b/net/proxy_resolution/mock_proxy_resolver.cc index 56ac53a..b7076ead 100644 --- a/net/proxy_resolution/mock_proxy_resolver.cc +++ b/net/proxy_resolution/mock_proxy_resolver.cc
@@ -81,7 +81,7 @@ MockAsyncProxyResolverFactory::Request::Request( MockAsyncProxyResolverFactory* factory, - const scoped_refptr<ProxyResolverScriptData>& script_data, + const scoped_refptr<PacFileData>& script_data, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback) : factory_(factory), @@ -137,7 +137,7 @@ } int MockAsyncProxyResolverFactory::CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const net::CompletionCallback& callback, std::unique_ptr<ProxyResolverFactory::Request>* request_handle) {
diff --git a/net/proxy_resolution/mock_proxy_resolver.h b/net/proxy_resolution/mock_proxy_resolver.h index df8c6c1..9270a5f 100644 --- a/net/proxy_resolution/mock_proxy_resolver.h +++ b/net/proxy_resolution/mock_proxy_resolver.h
@@ -90,7 +90,7 @@ ~MockAsyncProxyResolverFactory() override; int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback, std::unique_ptr<ProxyResolverFactory::Request>* request) override; @@ -111,13 +111,11 @@ : public base::RefCounted<Request> { public: Request(MockAsyncProxyResolverFactory* factory, - const scoped_refptr<ProxyResolverScriptData>& script_data, + const scoped_refptr<PacFileData>& script_data, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback); - const scoped_refptr<ProxyResolverScriptData>& script_data() const { - return script_data_; - } + const scoped_refptr<PacFileData>& script_data() const { return script_data_; } // Completes this request. A ForwardingProxyResolver that forwards to // |resolver| will be returned to the requester. |resolver| must not be @@ -137,7 +135,7 @@ void FactoryDestroyed(); MockAsyncProxyResolverFactory* factory_; - const scoped_refptr<ProxyResolverScriptData> script_data_; + const scoped_refptr<PacFileData> script_data_; std::unique_ptr<ProxyResolver>* resolver_; CompletionCallback callback_; };
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver.cc b/net/proxy_resolution/multi_threaded_proxy_resolver.cc index 01fbf393f..d8c8e83 100644 --- a/net/proxy_resolution/multi_threaded_proxy_resolver.cc +++ b/net/proxy_resolution/multi_threaded_proxy_resolver.cc
@@ -110,7 +110,7 @@ MultiThreadedProxyResolver( std::unique_ptr<ProxyResolverFactory> resolver_factory, size_t max_num_threads, - const scoped_refptr<ProxyResolverScriptData>& script_data, + const scoped_refptr<PacFileData>& script_data, scoped_refptr<Executor> executor); ~MultiThreadedProxyResolver() override; @@ -144,7 +144,7 @@ const size_t max_num_threads_; PendingJobsQueue pending_jobs_; ExecutorList executors_; - scoped_refptr<ProxyResolverScriptData> script_data_; + scoped_refptr<PacFileData> script_data_; THREAD_CHECKER(thread_checker_); }; @@ -251,7 +251,7 @@ // Runs on the worker thread to call ProxyResolverFactory::CreateProxyResolver. class CreateResolverJob : public Job { public: - CreateResolverJob(const scoped_refptr<ProxyResolverScriptData>& script_data, + CreateResolverJob(const scoped_refptr<PacFileData>& script_data, ProxyResolverFactory* factory) : Job(TYPE_CREATE_RESOLVER, CompletionCallback()), script_data_(script_data), @@ -282,7 +282,7 @@ OnJobCompleted(); } - const scoped_refptr<ProxyResolverScriptData> script_data_; + const scoped_refptr<PacFileData> script_data_; ProxyResolverFactory* factory_; std::unique_ptr<ProxyResolver> resolver_; }; @@ -436,7 +436,7 @@ MultiThreadedProxyResolver::MultiThreadedProxyResolver( std::unique_ptr<ProxyResolverFactory> resolver_factory, size_t max_num_threads, - const scoped_refptr<ProxyResolverScriptData>& script_data, + const scoped_refptr<PacFileData>& script_data, scoped_refptr<Executor> executor) : resolver_factory_(std::move(resolver_factory)), max_num_threads_(max_num_threads), @@ -535,7 +535,7 @@ public Executor::Coordinator { public: Job(MultiThreadedProxyResolverFactory* factory, - const scoped_refptr<ProxyResolverScriptData>& script_data, + const scoped_refptr<PacFileData>& script_data, std::unique_ptr<ProxyResolver>* resolver, std::unique_ptr<ProxyResolverFactory> resolver_factory, size_t max_num_threads, @@ -584,7 +584,7 @@ std::unique_ptr<ProxyResolver>* const resolver_out_; std::unique_ptr<ProxyResolverFactory> resolver_factory_; const size_t max_num_threads_; - scoped_refptr<ProxyResolverScriptData> script_data_; + scoped_refptr<PacFileData> script_data_; scoped_refptr<Executor> executor_; const CompletionCallback callback_; }; @@ -604,7 +604,7 @@ } int MultiThreadedProxyResolverFactory::CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback, std::unique_ptr<Request>* request) {
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver.h b/net/proxy_resolution/multi_threaded_proxy_resolver.h index caf36fa..8daa17ef 100644 --- a/net/proxy_resolution/multi_threaded_proxy_resolver.h +++ b/net/proxy_resolution/multi_threaded_proxy_resolver.h
@@ -55,11 +55,10 @@ bool factory_expects_bytes); ~MultiThreadedProxyResolverFactory() override; - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override; + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override; private: class Job;
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc b/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc index 53ce0aa..ec445f1 100644 --- a/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc +++ b/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc
@@ -144,11 +144,10 @@ ~BlockableProxyResolverFactory() override = default; - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolver>* result, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolver>* result, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { BlockableProxyResolver* resolver = new BlockableProxyResolver; result->reset(resolver); base::AutoLock lock(lock_); @@ -162,14 +161,14 @@ return resolvers_; } - const std::vector<scoped_refptr<ProxyResolverScriptData>> script_data() { + const std::vector<scoped_refptr<PacFileData>> script_data() { base::AutoLock lock(lock_); return script_data_; } private: std::vector<BlockableProxyResolver*> resolvers_; - std::vector<scoped_refptr<ProxyResolverScriptData>> script_data_; + std::vector<scoped_refptr<PacFileData>> script_data_; base::Lock lock_; }; @@ -202,7 +201,7 @@ TestCompletionCallback ready_callback; std::unique_ptr<ProxyResolverFactory::Request> request; resolver_factory_->CreateProxyResolver( - ProxyResolverScriptData::FromUTF8("pac script bytes"), &resolver_, + PacFileData::FromUTF8("pac script bytes"), &resolver_, ready_callback.callback(), &request); EXPECT_TRUE(request); ASSERT_THAT(ready_callback.WaitForResult(), IsOk()); @@ -682,11 +681,10 @@ FailingProxyResolverFactory() : ProxyResolverFactory(false) {} // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolver>* result, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolver>* result, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { return ERR_PAC_SCRIPT_FAILED; } }; @@ -702,8 +700,8 @@ std::unique_ptr<ProxyResolver> resolver; EXPECT_EQ(ERR_IO_PENDING, resolver_factory.CreateProxyResolver( - ProxyResolverScriptData::FromUTF8("pac script bytes"), - &resolver, ready_callback.callback(), &request)); + PacFileData::FromUTF8("pac script bytes"), &resolver, + ready_callback.callback(), &request)); EXPECT_TRUE(request); EXPECT_THAT(ready_callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED)); EXPECT_FALSE(resolver); @@ -721,10 +719,9 @@ kNumThreads, std::make_unique<BlockableProxyResolverFactory>()); std::unique_ptr<ProxyResolverFactory::Request> request; std::unique_ptr<ProxyResolver> resolver; - EXPECT_EQ(ERR_IO_PENDING, - resolver_factory.CreateProxyResolver( - ProxyResolverScriptData::FromUTF8("pac script bytes"), - &resolver, base::Bind(&Fail), &request)); + EXPECT_EQ(ERR_IO_PENDING, resolver_factory.CreateProxyResolver( + PacFileData::FromUTF8("pac script bytes"), + &resolver, base::Bind(&Fail), &request)); EXPECT_TRUE(request); request.reset(); } @@ -751,9 +748,9 @@ TestCompletionCallback callback; EXPECT_EQ(ERR_IO_PENDING, resolver_factory.CreateProxyResolver( - ProxyResolverScriptData::FromUTF8("pac script bytes"), - &resolver, base::Bind(&DeleteRequest, callback.callback(), - base::Unretained(&request)), + PacFileData::FromUTF8("pac script bytes"), &resolver, + base::Bind(&DeleteRequest, callback.callback(), + base::Unretained(&request)), &request)); EXPECT_TRUE(request); EXPECT_THAT(callback.WaitForResult(), IsOk()); @@ -767,10 +764,9 @@ { SingleShotMultiThreadedProxyResolverFactory resolver_factory( kNumThreads, std::make_unique<BlockableProxyResolverFactory>()); - EXPECT_EQ(ERR_IO_PENDING, - resolver_factory.CreateProxyResolver( - ProxyResolverScriptData::FromUTF8("pac script bytes"), - &resolver, base::Bind(&Fail), &request)); + EXPECT_EQ(ERR_IO_PENDING, resolver_factory.CreateProxyResolver( + PacFileData::FromUTF8("pac script bytes"), + &resolver, base::Bind(&Fail), &request)); EXPECT_TRUE(request); } // The factory destructor will block until the worker thread stops, but it may
diff --git a/net/proxy_resolution/pac_file_data.cc b/net/proxy_resolution/pac_file_data.cc index c0f8cc1..e96d273 100644 --- a/net/proxy_resolution/pac_file_data.cc +++ b/net/proxy_resolution/pac_file_data.cc
@@ -10,43 +10,36 @@ namespace net { // static -scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF8( - const std::string& utf8) { - return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS, GURL(), - base::UTF8ToUTF16(utf8)); +scoped_refptr<PacFileData> PacFileData::FromUTF8(const std::string& utf8) { + return new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), base::UTF8ToUTF16(utf8)); } // static -scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF16( - const base::string16& utf16) { - return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS, GURL(), utf16); +scoped_refptr<PacFileData> PacFileData::FromUTF16(const base::string16& utf16) { + return new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), utf16); } // static -scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromURL( - const GURL& url) { - return new ProxyResolverScriptData(TYPE_SCRIPT_URL, url, base::string16()); +scoped_refptr<PacFileData> PacFileData::FromURL(const GURL& url) { + return new PacFileData(TYPE_SCRIPT_URL, url, base::string16()); } // static -scoped_refptr<ProxyResolverScriptData> -ProxyResolverScriptData::ForAutoDetect() { - return new ProxyResolverScriptData(TYPE_AUTO_DETECT, GURL(), - base::string16()); +scoped_refptr<PacFileData> PacFileData::ForAutoDetect() { + return new PacFileData(TYPE_AUTO_DETECT, GURL(), base::string16()); } -const base::string16& ProxyResolverScriptData::utf16() const { +const base::string16& PacFileData::utf16() const { DCHECK_EQ(TYPE_SCRIPT_CONTENTS, type_); return utf16_; } -const GURL& ProxyResolverScriptData::url() const { +const GURL& PacFileData::url() const { DCHECK_EQ(TYPE_SCRIPT_URL, type_); return url_; } -bool ProxyResolverScriptData::Equals( - const ProxyResolverScriptData* other) const { +bool PacFileData::Equals(const PacFileData* other) const { if (type() != other->type()) return false; @@ -62,11 +55,11 @@ return false; // Shouldn't be reached. } -ProxyResolverScriptData::ProxyResolverScriptData(Type type, - const GURL& url, - const base::string16& utf16) +PacFileData::PacFileData(Type type, + const GURL& url, + const base::string16& utf16) : type_(type), url_(url), utf16_(utf16) {} -ProxyResolverScriptData::~ProxyResolverScriptData() = default; +PacFileData::~PacFileData() = default; } // namespace net
diff --git a/net/proxy_resolution/pac_file_data.h b/net/proxy_resolution/pac_file_data.h index 88dc1ef..5f75cf5 100644 --- a/net/proxy_resolution/pac_file_data.h +++ b/net/proxy_resolution/pac_file_data.h
@@ -18,8 +18,8 @@ // // This is thread-safe so it can be used by multi-threaded implementations of // ProxyResolver to share the data between threads. -class NET_EXPORT_PRIVATE ProxyResolverScriptData - : public base::RefCountedThreadSafe<ProxyResolverScriptData> { +class NET_EXPORT_PRIVATE PacFileData + : public base::RefCountedThreadSafe<PacFileData> { public: enum Type { TYPE_SCRIPT_CONTENTS, @@ -28,18 +28,16 @@ }; // Creates a script data given the UTF8 bytes of the content. - static scoped_refptr<ProxyResolverScriptData> FromUTF8( - const std::string& utf8); + static scoped_refptr<PacFileData> FromUTF8(const std::string& utf8); // Creates a script data given the UTF16 bytes of the content. - static scoped_refptr<ProxyResolverScriptData> FromUTF16( - const base::string16& utf16); + static scoped_refptr<PacFileData> FromUTF16(const base::string16& utf16); // Creates a script data given a URL to the PAC script. - static scoped_refptr<ProxyResolverScriptData> FromURL(const GURL& url); + static scoped_refptr<PacFileData> FromURL(const GURL& url); // Creates a script data for using an automatically detected PAC URL. - static scoped_refptr<ProxyResolverScriptData> ForAutoDetect(); + static scoped_refptr<PacFileData> ForAutoDetect(); Type type() const { return type_; } @@ -52,14 +50,12 @@ const GURL& url() const; // Returns true if |this| matches |other|. - bool Equals(const ProxyResolverScriptData* other) const; + bool Equals(const PacFileData* other) const; private: - friend class base::RefCountedThreadSafe<ProxyResolverScriptData>; - ProxyResolverScriptData(Type type, - const GURL& url, - const base::string16& utf16); - virtual ~ProxyResolverScriptData(); + friend class base::RefCountedThreadSafe<PacFileData>; + PacFileData(Type type, const GURL& url, const base::string16& utf16); + virtual ~PacFileData(); const Type type_; const GURL url_;
diff --git a/net/proxy_resolution/pac_file_decider.cc b/net/proxy_resolution/pac_file_decider.cc index 544129f..4832abf 100644 --- a/net/proxy_resolution/pac_file_decider.cc +++ b/net/proxy_resolution/pac_file_decider.cc
@@ -58,7 +58,7 @@ const int kQuickCheckDelayMs = 1000; }; // namespace -std::unique_ptr<base::Value> ProxyScriptDecider::PacSource::NetLogCallback( +std::unique_ptr<base::Value> PacFileDecider::PacSource::NetLogCallback( const GURL* effective_pac_url, NetLogCaptureMode /* capture_mode */) const { std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); @@ -80,34 +80,33 @@ return std::move(dict); } -ProxyScriptDecider::ProxyScriptDecider( - ProxyScriptFetcher* proxy_script_fetcher, - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher, - NetLog* net_log) - : proxy_script_fetcher_(proxy_script_fetcher), - dhcp_proxy_script_fetcher_(dhcp_proxy_script_fetcher), +PacFileDecider::PacFileDecider(PacFileFetcher* pac_file_fetcher, + DhcpPacFileFetcher* dhcp_pac_file_fetcher, + NetLog* net_log) + : pac_file_fetcher_(pac_file_fetcher), + dhcp_pac_file_fetcher_(dhcp_pac_file_fetcher), current_pac_source_index_(0u), pac_mandatory_(false), next_state_(STATE_NONE), - net_log_(NetLogWithSource::Make(net_log, - NetLogSourceType::PROXY_SCRIPT_DECIDER)), + net_log_( + NetLogWithSource::Make(net_log, NetLogSourceType::PAC_FILE_DECIDER)), fetch_pac_bytes_(false), quick_check_enabled_(true) {} -ProxyScriptDecider::~ProxyScriptDecider() { +PacFileDecider::~PacFileDecider() { if (next_state_ != STATE_NONE) Cancel(); } -int ProxyScriptDecider::Start(const ProxyConfig& config, - const base::TimeDelta wait_delay, - bool fetch_pac_bytes, - const CompletionCallback& callback) { +int PacFileDecider::Start(const ProxyConfig& config, + const base::TimeDelta wait_delay, + bool fetch_pac_bytes, + const CompletionCallback& callback) { DCHECK_EQ(STATE_NONE, next_state_); DCHECK(!callback.is_null()); DCHECK(config.HasAutomaticSettings()); - net_log_.BeginEvent(NetLogEventType::PROXY_SCRIPT_DECIDER); + net_log_.BeginEvent(NetLogEventType::PAC_FILE_DECIDER); fetch_pac_bytes_ = fetch_pac_bytes; @@ -133,7 +132,7 @@ return rv; } -void ProxyScriptDecider::OnShutdown() { +void PacFileDecider::OnShutdown() { // Don't do anything if idle. if (next_state_ == STATE_NONE) return; @@ -147,13 +146,12 @@ callback.Run(ERR_CONTEXT_SHUT_DOWN); } -const ProxyConfig& ProxyScriptDecider::effective_config() const { +const ProxyConfig& PacFileDecider::effective_config() const { DCHECK_EQ(STATE_NONE, next_state_); return effective_config_; } -const scoped_refptr<ProxyResolverScriptData>& ProxyScriptDecider::script_data() - const { +const scoped_refptr<PacFileData>& PacFileDecider::script_data() const { DCHECK_EQ(STATE_NONE, next_state_); return script_data_; } @@ -162,8 +160,7 @@ // (1) WPAD (DHCP). // (2) WPAD (DNS). // (3) Custom PAC URL. -ProxyScriptDecider::PacSourceList -ProxyScriptDecider::BuildPacSourcesFallbackList( +PacFileDecider::PacSourceList PacFileDecider::BuildPacSourcesFallbackList( const ProxyConfig& config) const { PacSourceList pac_sources; if (config.auto_detect()) { @@ -175,7 +172,7 @@ return pac_sources; } -void ProxyScriptDecider::OnIOCompletion(int result) { +void PacFileDecider::OnIOCompletion(int result) { DCHECK_NE(STATE_NONE, next_state_); int rv = DoLoop(result); if (rv != ERR_IO_PENDING) { @@ -184,7 +181,7 @@ } } -int ProxyScriptDecider::DoLoop(int result) { +int PacFileDecider::DoLoop(int result) { DCHECK_NE(next_state_, STATE_NONE); int rv = result; do { @@ -228,13 +225,13 @@ return rv; } -void ProxyScriptDecider::DoCallback(int result) { +void PacFileDecider::DoCallback(int result) { DCHECK_NE(ERR_IO_PENDING, result); DCHECK(!callback_.is_null()); callback_.Run(result); } -int ProxyScriptDecider::DoWait() { +int PacFileDecider::DoWait() { next_state_ = STATE_WAIT_COMPLETE; // If no waiting is required, continue on to the next state. @@ -243,16 +240,16 @@ // Otherwise wait the specified amount of time. wait_timer_.Start(FROM_HERE, wait_delay_, this, - &ProxyScriptDecider::OnWaitTimerFired); - net_log_.BeginEvent(NetLogEventType::PROXY_SCRIPT_DECIDER_WAIT); + &PacFileDecider::OnWaitTimerFired); + net_log_.BeginEvent(NetLogEventType::PAC_FILE_DECIDER_WAIT); return ERR_IO_PENDING; } -int ProxyScriptDecider::DoWaitComplete(int result) { +int PacFileDecider::DoWaitComplete(int result) { DCHECK_EQ(OK, result); if (wait_delay_.ToInternalValue() != 0) { - net_log_.EndEventWithNetErrorCode( - NetLogEventType::PROXY_SCRIPT_DECIDER_WAIT, result); + net_log_.EndEventWithNetErrorCode(NetLogEventType::PAC_FILE_DECIDER_WAIT, + result); } if (quick_check_enabled_ && current_pac_source().type == PacSource::WPAD_DNS) next_state_ = STATE_QUICK_CHECK; @@ -261,10 +258,10 @@ return OK; } -int ProxyScriptDecider::DoQuickCheck() { +int PacFileDecider::DoQuickCheck() { DCHECK(quick_check_enabled_); - if (!proxy_script_fetcher_ || !proxy_script_fetcher_->GetRequestContext() || - !proxy_script_fetcher_->GetRequestContext()->host_resolver()) { + if (!pac_file_fetcher_ || !pac_file_fetcher_->GetRequestContext() || + !pac_file_fetcher_->GetRequestContext()->host_resolver()) { // If we have no resolver, skip QuickCheck altogether. next_state_ = GetStartState(); return OK; @@ -275,7 +272,7 @@ HostResolver::RequestInfo reqinfo(HostPortPair(host, 80)); reqinfo.set_host_resolver_flags(HOST_RESOLVER_SYSTEM_ONLY); CompletionCallback callback = - base::Bind(&ProxyScriptDecider::OnIOCompletion, base::Unretained(this)); + base::Bind(&PacFileDecider::OnIOCompletion, base::Unretained(this)); next_state_ = STATE_QUICK_CHECK_COMPLETE; quick_check_timer_.Start( @@ -283,14 +280,14 @@ base::Bind(callback, ERR_NAME_NOT_RESOLVED)); HostResolver* host_resolver = - proxy_script_fetcher_->GetRequestContext()->host_resolver(); + pac_file_fetcher_->GetRequestContext()->host_resolver(); // We use HIGHEST here because proxy decision blocks doing any other requests. return host_resolver->Resolve(reqinfo, HIGHEST, &wpad_addresses_, callback, &request_, net_log_); } -int ProxyScriptDecider::DoQuickCheckComplete(int result) { +int PacFileDecider::DoQuickCheckComplete(int result) { DCHECK(quick_check_enabled_); base::TimeDelta delta = base::Time::Now() - quick_check_start_time_; if (result == OK) @@ -305,7 +302,7 @@ return result; } -int ProxyScriptDecider::DoFetchPacScript() { +int PacFileDecider::DoFetchPacScript() { DCHECK(fetch_pac_bytes_); next_state_ = STATE_FETCH_PAC_SCRIPT_COMPLETE; @@ -316,37 +313,37 @@ DetermineURL(pac_source, &effective_pac_url); net_log_.BeginEvent( - NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT, + NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT, base::Bind(&PacSource::NetLogCallback, base::Unretained(&pac_source), &effective_pac_url)); if (pac_source.type == PacSource::WPAD_DHCP) { - if (!dhcp_proxy_script_fetcher_) { - net_log_.AddEvent(NetLogEventType::PROXY_SCRIPT_DECIDER_HAS_NO_FETCHER); + if (!dhcp_pac_file_fetcher_) { + net_log_.AddEvent(NetLogEventType::PAC_FILE_DECIDER_HAS_NO_FETCHER); return ERR_UNEXPECTED; } - return dhcp_proxy_script_fetcher_->Fetch( + return dhcp_pac_file_fetcher_->Fetch( &pac_script_, - base::Bind(&ProxyScriptDecider::OnIOCompletion, base::Unretained(this)), + base::Bind(&PacFileDecider::OnIOCompletion, base::Unretained(this)), net_log_); } - if (!proxy_script_fetcher_) { - net_log_.AddEvent(NetLogEventType::PROXY_SCRIPT_DECIDER_HAS_NO_FETCHER); + if (!pac_file_fetcher_) { + net_log_.AddEvent(NetLogEventType::PAC_FILE_DECIDER_HAS_NO_FETCHER); return ERR_UNEXPECTED; } - return proxy_script_fetcher_->Fetch( + return pac_file_fetcher_->Fetch( effective_pac_url, &pac_script_, - base::Bind(&ProxyScriptDecider::OnIOCompletion, base::Unretained(this))); + base::Bind(&PacFileDecider::OnIOCompletion, base::Unretained(this))); } -int ProxyScriptDecider::DoFetchPacScriptComplete(int result) { +int PacFileDecider::DoFetchPacScriptComplete(int result) { DCHECK(fetch_pac_bytes_); net_log_.EndEventWithNetErrorCode( - NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT, result); + NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT, result); if (result != OK) return TryToFallbackPacSource(result); @@ -354,7 +351,7 @@ return result; } -int ProxyScriptDecider::DoVerifyPacScript() { +int PacFileDecider::DoVerifyPacScript() { next_state_ = STATE_VERIFY_PAC_SCRIPT_COMPLETE; // This is just a heuristic. Ideally we would try to parse the script. @@ -364,7 +361,7 @@ return OK; } -int ProxyScriptDecider::DoVerifyPacScriptComplete(int result) { +int PacFileDecider::DoVerifyPacScriptComplete(int result) { if (result != OK) return TryToFallbackPacSource(result); @@ -372,11 +369,11 @@ // Extract the current script data. if (fetch_pac_bytes_) { - script_data_ = ProxyResolverScriptData::FromUTF16(pac_script_); + script_data_ = PacFileData::FromUTF16(pac_script_); } else { script_data_ = pac_source.type == PacSource::CUSTOM - ? ProxyResolverScriptData::FromURL(pac_source.url) - : ProxyResolverScriptData::ForAutoDetect(); + ? PacFileData::FromURL(pac_source.url) + : PacFileData::ForAutoDetect(); } // Let the caller know which automatic setting we ended up initializing the @@ -391,7 +388,7 @@ switch (current_pac_source().type) { case PacSource::WPAD_DHCP: - auto_detected_url = dhcp_proxy_script_fetcher_->GetPacURL(); + auto_detected_url = dhcp_pac_file_fetcher_->GetPacURL(); break; case PacSource::WPAD_DNS: @@ -415,7 +412,7 @@ return OK; } -int ProxyScriptDecider::TryToFallbackPacSource(int error) { +int PacFileDecider::TryToFallbackPacSource(int error) { DCHECK_LT(error, 0); if (current_pac_source_index_ + 1 >= pac_sources_.size()) { @@ -427,7 +424,7 @@ ++current_pac_source_index_; net_log_.AddEvent( - NetLogEventType::PROXY_SCRIPT_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE); + NetLogEventType::PAC_FILE_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE); if (quick_check_enabled_ && current_pac_source().type == PacSource::WPAD_DNS) next_state_ = STATE_QUICK_CHECK; else @@ -436,12 +433,12 @@ return OK; } -ProxyScriptDecider::State ProxyScriptDecider::GetStartState() const { +PacFileDecider::State PacFileDecider::GetStartState() const { return fetch_pac_bytes_ ? STATE_FETCH_PAC_SCRIPT : STATE_VERIFY_PAC_SCRIPT; } -void ProxyScriptDecider::DetermineURL(const PacSource& pac_source, - GURL* effective_pac_url) { +void PacFileDecider::DetermineURL(const PacSource& pac_source, + GURL* effective_pac_url) { DCHECK(effective_pac_url); switch (pac_source.type) { @@ -456,21 +453,20 @@ } } -const ProxyScriptDecider::PacSource& ProxyScriptDecider::current_pac_source() - const { +const PacFileDecider::PacSource& PacFileDecider::current_pac_source() const { DCHECK_LT(current_pac_source_index_, pac_sources_.size()); return pac_sources_[current_pac_source_index_]; } -void ProxyScriptDecider::OnWaitTimerFired() { +void PacFileDecider::OnWaitTimerFired() { OnIOCompletion(OK); } -void ProxyScriptDecider::DidComplete() { - net_log_.EndEvent(NetLogEventType::PROXY_SCRIPT_DECIDER); +void PacFileDecider::DidComplete() { + net_log_.EndEvent(NetLogEventType::PAC_FILE_DECIDER); } -void ProxyScriptDecider::Cancel() { +void PacFileDecider::Cancel() { DCHECK_NE(STATE_NONE, next_state_); net_log_.AddEvent(NetLogEventType::CANCELLED); @@ -483,7 +479,7 @@ wait_timer_.Stop(); break; case STATE_FETCH_PAC_SCRIPT_COMPLETE: - proxy_script_fetcher_->Cancel(); + pac_file_fetcher_->Cancel(); break; default: break; @@ -492,8 +488,8 @@ next_state_ = STATE_NONE; // This is safe to call in any state. - if (dhcp_proxy_script_fetcher_) - dhcp_proxy_script_fetcher_->Cancel(); + if (dhcp_pac_file_fetcher_) + dhcp_pac_file_fetcher_->Cancel(); DCHECK(!request_);
diff --git a/net/proxy_resolution/pac_file_decider.h b/net/proxy_resolution/pac_file_decider.h index 82ec9f19..ad54d47 100644 --- a/net/proxy_resolution/pac_file_decider.h +++ b/net/proxy_resolution/pac_file_decider.h
@@ -30,13 +30,13 @@ namespace net { -class DhcpProxyScriptFetcher; +class DhcpPacFileFetcher; class NetLog; class NetLogCaptureMode; class ProxyResolver; -class ProxyScriptFetcher; +class PacFileFetcher; -// ProxyScriptDecider is a helper class used by ProxyResolutionService to +// PacFileDecider is a helper class used by ProxyResolutionService to // determine which PAC script to use given our proxy configuration. // // This involves trying to use PAC scripts in this order: @@ -52,19 +52,19 @@ // On successful completion, the fetched PAC script data can be accessed using // script_data(). // -// Deleting ProxyScriptDecider while Init() is in progress, will +// Deleting PacFileDecider while Init() is in progress, will // cancel the request. // -class NET_EXPORT_PRIVATE ProxyScriptDecider { +class NET_EXPORT_PRIVATE PacFileDecider { public: - // |proxy_script_fetcher|, |dhcp_proxy_script_fetcher| and - // |net_log| must remain valid for the lifespan of ProxyScriptDecider. - ProxyScriptDecider(ProxyScriptFetcher* proxy_script_fetcher, - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher, - NetLog* net_log); + // |pac_file_fetcher|, |dhcp_pac_file_fetcher| and + // |net_log| must remain valid for the lifespan of PacFileDecider. + PacFileDecider(PacFileFetcher* pac_file_fetcher, + DhcpPacFileFetcher* dhcp_pac_file_fetcher, + NetLog* net_log); // Aborts any in-progress request. - ~ProxyScriptDecider(); + ~PacFileDecider(); // Evaluates the effective proxy settings for |config|, and downloads the // associated PAC script. @@ -82,12 +82,12 @@ const CompletionCallback& callback); // Shuts down any in-progress DNS requests, and cancels any ScriptFetcher - // requests. Does not call OnShutdown on the [Dhcp]ProxyScriptFetcher. + // requests. Does not call OnShutdown on the [Dhcp]PacFileFetcher. void OnShutdown(); const ProxyConfig& effective_config() const; - const scoped_refptr<ProxyResolverScriptData>& script_data() const; + const scoped_refptr<PacFileData>& script_data() const; void set_quick_check_enabled(bool enabled) { quick_check_enabled_ = enabled; } @@ -164,8 +164,8 @@ void DidComplete(); void Cancel(); - ProxyScriptFetcher* proxy_script_fetcher_; - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher_; + PacFileFetcher* pac_file_fetcher_; + DhcpPacFileFetcher* dhcp_pac_file_fetcher_; CompletionCallback callback_; @@ -174,7 +174,7 @@ // Filled when the PAC script fetch completes. base::string16 pac_script_; - // Flag indicating whether the caller requested a mandatory pac script + // Flag indicating whether the caller requested a mandatory PAC script // (i.e. fallback to direct connections are prohibited). bool pac_mandatory_; @@ -196,14 +196,14 @@ // Results. ProxyConfig effective_config_; - scoped_refptr<ProxyResolverScriptData> script_data_; + scoped_refptr<PacFileData> script_data_; AddressList wpad_addresses_; base::OneShotTimer quick_check_timer_; std::unique_ptr<HostResolver::Request> request_; base::Time quick_check_start_time_; - DISALLOW_COPY_AND_ASSIGN(ProxyScriptDecider); + DISALLOW_COPY_AND_ASSIGN(PacFileDecider); }; } // namespace net
diff --git a/net/proxy_resolution/pac_file_decider_unittest.cc b/net/proxy_resolution/pac_file_decider_unittest.cc index 4cafec3a..c41e9ae8 100644 --- a/net/proxy_resolution/pac_file_decider_unittest.cc +++ b/net/proxy_resolution/pac_file_decider_unittest.cc
@@ -104,16 +104,16 @@ RuleList rules_; }; -class RuleBasedProxyScriptFetcher : public ProxyScriptFetcher { +class RuleBasedPacFileFetcher : public PacFileFetcher { public: - explicit RuleBasedProxyScriptFetcher(const Rules* rules) + explicit RuleBasedPacFileFetcher(const Rules* rules) : rules_(rules), request_context_(NULL) {} virtual void SetRequestContext(URLRequestContext* context) { request_context_ = context; } - // ProxyScriptFetcher implementation. + // PacFileFetcher implementation. int Fetch(const GURL& url, base::string16* text, const CompletionCallback& callback) override { @@ -139,10 +139,10 @@ }; // A mock retriever, returns asynchronously when CompleteRequests() is called. -class MockDhcpProxyScriptFetcher : public DhcpProxyScriptFetcher { +class MockDhcpPacFileFetcher : public DhcpPacFileFetcher { public: - MockDhcpProxyScriptFetcher(); - ~MockDhcpProxyScriptFetcher() override; + MockDhcpPacFileFetcher(); + ~MockDhcpPacFileFetcher() override; int Fetch(base::string16* utf16_text, const CompletionCallback& callback, @@ -159,45 +159,44 @@ CompletionCallback callback_; base::string16* utf16_text_; GURL gurl_; - DISALLOW_COPY_AND_ASSIGN(MockDhcpProxyScriptFetcher); + DISALLOW_COPY_AND_ASSIGN(MockDhcpPacFileFetcher); }; -MockDhcpProxyScriptFetcher::MockDhcpProxyScriptFetcher() = default; +MockDhcpPacFileFetcher::MockDhcpPacFileFetcher() = default; -MockDhcpProxyScriptFetcher::~MockDhcpProxyScriptFetcher() = default; +MockDhcpPacFileFetcher::~MockDhcpPacFileFetcher() = default; -int MockDhcpProxyScriptFetcher::Fetch(base::string16* utf16_text, - const CompletionCallback& callback, - const NetLogWithSource& net_log) { +int MockDhcpPacFileFetcher::Fetch(base::string16* utf16_text, + const CompletionCallback& callback, + const NetLogWithSource& net_log) { utf16_text_ = utf16_text; callback_ = callback; return ERR_IO_PENDING; } -void MockDhcpProxyScriptFetcher::Cancel() {} +void MockDhcpPacFileFetcher::Cancel() {} -void MockDhcpProxyScriptFetcher::OnShutdown() {} +void MockDhcpPacFileFetcher::OnShutdown() {} -const GURL& MockDhcpProxyScriptFetcher::GetPacURL() const { +const GURL& MockDhcpPacFileFetcher::GetPacURL() const { return gurl_; } -void MockDhcpProxyScriptFetcher::SetPacURL(const GURL& url) { +void MockDhcpPacFileFetcher::SetPacURL(const GURL& url) { gurl_ = url; } -void MockDhcpProxyScriptFetcher::CompleteRequests( - int result, - const base::string16& script) { +void MockDhcpPacFileFetcher::CompleteRequests(int result, + const base::string16& script) { *utf16_text_ = script; callback_.Run(result); } // Succeed using custom PAC script. -TEST(ProxyScriptDeciderTest, CustomPacSucceeds) { +TEST(PacFileDeciderTest, CustomPacSucceeds) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); @@ -206,7 +205,7 @@ TestCompletionCallback callback; TestNetLog log; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, &log); + PacFileDecider decider(&fetcher, &dhcp_fetcher, &log); EXPECT_EQ( OK, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_EQ(rule.text(), decider.script_data()->utf16()); @@ -217,23 +216,23 @@ EXPECT_EQ(4u, entries.size()); EXPECT_TRUE( - LogContainsBeginEvent(entries, 0, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsBeginEvent(entries, 0, NetLogEventType::PAC_FILE_DECIDER)); EXPECT_TRUE(LogContainsBeginEvent( - entries, 1, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 1, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 2, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 2, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE( - LogContainsEndEvent(entries, 3, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsEndEvent(entries, 3, NetLogEventType::PAC_FILE_DECIDER)); EXPECT_TRUE(decider.effective_config().has_pac_url()); EXPECT_EQ(config.pac_url(), decider.effective_config().pac_url()); } // Fail downloading the custom PAC script. -TEST(ProxyScriptDeciderTest, CustomPacFails1) { +TEST(PacFileDeciderTest, CustomPacFails1) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); @@ -242,7 +241,7 @@ TestCompletionCallback callback; TestNetLog log; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, &log); + PacFileDecider decider(&fetcher, &dhcp_fetcher, &log); EXPECT_EQ(kFailedDownloading, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_FALSE(decider.script_data()); @@ -253,22 +252,22 @@ EXPECT_EQ(4u, entries.size()); EXPECT_TRUE( - LogContainsBeginEvent(entries, 0, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsBeginEvent(entries, 0, NetLogEventType::PAC_FILE_DECIDER)); EXPECT_TRUE(LogContainsBeginEvent( - entries, 1, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 1, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 2, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 2, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE( - LogContainsEndEvent(entries, 3, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsEndEvent(entries, 3, NetLogEventType::PAC_FILE_DECIDER)); EXPECT_FALSE(decider.effective_config().has_pac_url()); } // Fail parsing the custom PAC script. -TEST(ProxyScriptDeciderTest, CustomPacFails2) { +TEST(PacFileDeciderTest, CustomPacFails2) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); @@ -276,32 +275,32 @@ rules.AddFailParsingRule("http://custom/proxy.pac"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ(kFailedParsing, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_FALSE(decider.script_data()); } // Fail downloading the custom PAC script, because the fetcher was NULL. -TEST(ProxyScriptDeciderTest, HasNullProxyScriptFetcher) { +TEST(PacFileDeciderTest, HasNullPacFileFetcher) { Rules rules; - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); TestCompletionCallback callback; - ProxyScriptDecider decider(NULL, &dhcp_fetcher, NULL); + PacFileDecider decider(NULL, &dhcp_fetcher, NULL); EXPECT_EQ(ERR_UNEXPECTED, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_FALSE(decider.script_data()); } // Succeeds in choosing autodetect (WPAD DNS). -TEST(ProxyScriptDeciderTest, AutodetectSuccess) { +TEST(PacFileDeciderTest, AutodetectSuccess) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_auto_detect(true); @@ -309,7 +308,7 @@ Rules::Rule rule = rules.AddSuccessRule("http://wpad/wpad.dat"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ( OK, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_EQ(rule.text(), decider.script_data()->utf16()); @@ -318,9 +317,9 @@ EXPECT_EQ(rule.url, decider.effective_config().pac_url()); } -class ProxyScriptDeciderQuickCheckTest : public ::testing::Test { +class PacFileDeciderQuickCheckTest : public ::testing::Test { public: - ProxyScriptDeciderQuickCheckTest() + PacFileDeciderQuickCheckTest() : rule_(rules_.AddSuccessRule("http://wpad/wpad.dat")), fetcher_(&rules_) {} @@ -328,7 +327,7 @@ request_context_.set_host_resolver(&resolver_); fetcher_.SetRequestContext(&request_context_); config_.set_auto_detect(true); - decider_.reset(new ProxyScriptDecider(&fetcher_, &dhcp_fetcher_, NULL)); + decider_.reset(new PacFileDecider(&fetcher_, &dhcp_fetcher_, NULL)); } int StartDecider() { @@ -341,17 +340,17 @@ Rules rules_; Rules::Rule rule_; TestCompletionCallback callback_; - RuleBasedProxyScriptFetcher fetcher_; + RuleBasedPacFileFetcher fetcher_; ProxyConfig config_; - DoNothingDhcpProxyScriptFetcher dhcp_fetcher_; - std::unique_ptr<ProxyScriptDecider> decider_; + DoNothingDhcpPacFileFetcher dhcp_fetcher_; + std::unique_ptr<PacFileDecider> decider_; private: URLRequestContext request_context_; }; // Fails if a synchronous DNS lookup success for wpad causes QuickCheck to fail. -TEST_F(ProxyScriptDeciderQuickCheckTest, SyncSuccess) { +TEST_F(PacFileDeciderQuickCheckTest, SyncSuccess) { resolver_.set_synchronous_mode(true); resolver_.rules()->AddRule("wpad", "1.2.3.4"); @@ -364,7 +363,7 @@ // Fails if an asynchronous DNS lookup success for wpad causes QuickCheck to // fail. -TEST_F(ProxyScriptDeciderQuickCheckTest, AsyncSuccess) { +TEST_F(PacFileDeciderQuickCheckTest, AsyncSuccess) { resolver_.set_ondemand_mode(true); resolver_.rules()->AddRule("wpad", "1.2.3.4"); @@ -379,8 +378,8 @@ } // Fails if an asynchronous DNS lookup failure (i.e. an NXDOMAIN) still causes -// ProxyScriptDecider to yield a PAC URL. -TEST_F(ProxyScriptDeciderQuickCheckTest, AsyncFail) { +// PacFileDecider to yield a PAC URL. +TEST_F(PacFileDeciderQuickCheckTest, AsyncFail) { resolver_.set_ondemand_mode(true); resolver_.rules()->AddSimulatedFailure("wpad"); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); @@ -390,9 +389,9 @@ EXPECT_FALSE(decider_->effective_config().has_pac_url()); } -// Fails if a DNS lookup timeout either causes ProxyScriptDecider to yield a PAC -// URL or causes ProxyScriptDecider not to cancel its pending resolution. -TEST_F(ProxyScriptDeciderQuickCheckTest, AsyncTimeout) { +// Fails if a DNS lookup timeout either causes PacFileDecider to yield a PAC +// URL or causes PacFileDecider not to cancel its pending resolution. +TEST_F(PacFileDeciderQuickCheckTest, AsyncTimeout) { resolver_.set_ondemand_mode(true); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); ASSERT_TRUE(resolver_.has_pending_requests()); @@ -402,13 +401,13 @@ } // Fails if DHCP check doesn't take place before QuickCheck. -TEST_F(ProxyScriptDeciderQuickCheckTest, QuickCheckInhibitsDhcp) { - MockDhcpProxyScriptFetcher dhcp_fetcher; +TEST_F(PacFileDeciderQuickCheckTest, QuickCheckInhibitsDhcp) { + MockDhcpPacFileFetcher dhcp_fetcher; const char* kPac = "function FindProxyForURL(u,h) { return \"DIRECT\"; }"; base::string16 pac_contents = base::UTF8ToUTF16(kPac); GURL url("http://foobar/baz"); dhcp_fetcher.SetPacURL(url); - decider_.reset(new ProxyScriptDecider(&fetcher_, &dhcp_fetcher, NULL)); + decider_.reset(new PacFileDecider(&fetcher_, &dhcp_fetcher, NULL)); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); dhcp_fetcher.CompleteRequests(OK, pac_contents); EXPECT_TRUE(decider_->effective_config().has_pac_url()); @@ -417,20 +416,20 @@ // Fails if QuickCheck still happens when disabled. To ensure QuickCheck is not // happening, we add a synchronous failing resolver, which would ordinarily -// mean a QuickCheck failure, then ensure that our ProxyScriptFetcher is still +// mean a QuickCheck failure, then ensure that our PacFileFetcher is still // asked to fetch. -TEST_F(ProxyScriptDeciderQuickCheckTest, QuickCheckDisabled) { +TEST_F(PacFileDeciderQuickCheckTest, QuickCheckDisabled) { const char* kPac = "function FindProxyForURL(u,h) { return \"DIRECT\"; }"; resolver_.set_synchronous_mode(true); resolver_.rules()->AddSimulatedFailure("wpad"); - MockProxyScriptFetcher fetcher; - decider_.reset(new ProxyScriptDecider(&fetcher, &dhcp_fetcher_, NULL)); + MockPacFileFetcher fetcher; + decider_.reset(new PacFileDecider(&fetcher, &dhcp_fetcher_, NULL)); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); EXPECT_TRUE(fetcher.has_pending_request()); fetcher.NotifyFetchCompletion(OK, kPac); } -TEST_F(ProxyScriptDeciderQuickCheckTest, ExplicitPacUrl) { +TEST_F(PacFileDeciderQuickCheckTest, ExplicitPacUrl) { const char* kCustomUrl = "http://custom/proxy.pac"; config_.set_pac_url(GURL(kCustomUrl)); Rules::Rule rule = rules_.AddSuccessRule(kCustomUrl); @@ -442,7 +441,7 @@ EXPECT_EQ(rule.url, decider_->effective_config().pac_url()); } -TEST_F(ProxyScriptDeciderQuickCheckTest, ShutdownDuringResolve) { +TEST_F(PacFileDeciderQuickCheckTest, ShutdownDuringResolve) { resolver_.set_ondemand_mode(true); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); @@ -456,7 +455,7 @@ // Regression test for http://crbug.com/409698. // This test lets the state machine get into state QUICK_CHECK_COMPLETE, then // destroys the decider, causing a cancel. -TEST_F(ProxyScriptDeciderQuickCheckTest, CancelPartway) { +TEST_F(PacFileDeciderQuickCheckTest, CancelPartway) { resolver_.set_synchronous_mode(false); resolver_.set_ondemand_mode(true); EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING)); @@ -464,10 +463,10 @@ } // Fails at WPAD (downloading), but succeeds in choosing the custom PAC. -TEST(ProxyScriptDeciderTest, AutodetectFailCustomSuccess1) { +TEST(PacFileDeciderTest, AutodetectFailCustomSuccess1) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_auto_detect(true); @@ -477,7 +476,7 @@ Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ( OK, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_EQ(rule.text(), decider.script_data()->utf16()); @@ -488,10 +487,10 @@ // Fails at WPAD (no DHCP config, DNS PAC fails parsing), but succeeds in // choosing the custom PAC. -TEST(ProxyScriptDeciderTest, AutodetectFailCustomSuccess2) { +TEST(PacFileDeciderTest, AutodetectFailCustomSuccess2) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_auto_detect(true); @@ -504,7 +503,7 @@ TestCompletionCallback callback; TestNetLog log; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, &log); + PacFileDecider decider(&fetcher, &dhcp_fetcher, &log); EXPECT_EQ( OK, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_EQ(rule.text(), decider.script_data()->utf16()); @@ -522,40 +521,40 @@ EXPECT_EQ(10u, entries.size()); EXPECT_TRUE( - LogContainsBeginEvent(entries, 0, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsBeginEvent(entries, 0, NetLogEventType::PAC_FILE_DECIDER)); // This is the DHCP phase, which fails fetching rather than parsing, so // there is no pair of SET_PAC_SCRIPT events. EXPECT_TRUE(LogContainsBeginEvent( - entries, 1, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 1, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 2, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 2, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEvent( entries, 3, - NetLogEventType::PROXY_SCRIPT_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE, + NetLogEventType::PAC_FILE_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE, NetLogEventPhase::NONE)); // This is the DNS phase, which attempts a fetch but fails. EXPECT_TRUE(LogContainsBeginEvent( - entries, 4, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 4, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 5, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 5, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEvent( entries, 6, - NetLogEventType::PROXY_SCRIPT_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE, + NetLogEventType::PAC_FILE_DECIDER_FALLING_BACK_TO_NEXT_PAC_SOURCE, NetLogEventPhase::NONE)); // Finally, the custom PAC URL phase. EXPECT_TRUE(LogContainsBeginEvent( - entries, 7, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 7, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 8, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 8, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE( - LogContainsEndEvent(entries, 9, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsEndEvent(entries, 9, NetLogEventType::PAC_FILE_DECIDER)); } // Fails at WPAD (downloading), and fails at custom PAC (downloading). -TEST(ProxyScriptDeciderTest, AutodetectFailCustomFails1) { +TEST(PacFileDeciderTest, AutodetectFailCustomFails1) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_auto_detect(true); @@ -565,17 +564,17 @@ rules.AddFailDownloadRule("http://custom/proxy.pac"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ(kFailedDownloading, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_FALSE(decider.script_data()); } // Fails at WPAD (downloading), and fails at custom PAC (parsing). -TEST(ProxyScriptDeciderTest, AutodetectFailCustomFails2) { +TEST(PacFileDeciderTest, AutodetectFailCustomFails2) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_auto_detect(true); @@ -585,7 +584,7 @@ rules.AddFailParsingRule("http://custom/proxy.pac"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ(kFailedParsing, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_FALSE(decider.script_data()); @@ -594,10 +593,10 @@ // This is a copy-paste of CustomPacFails1, with the exception that we give it // a 1 millisecond delay. This means it will now complete asynchronously. // Moreover, we test the NetLog to make sure it logged the pause. -TEST(ProxyScriptDeciderTest, CustomPacFails1_WithPositiveDelay) { +TEST(PacFileDeciderTest, CustomPacFails1_WithPositiveDelay) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); @@ -606,7 +605,7 @@ TestCompletionCallback callback; TestNetLog log; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, &log); + PacFileDecider decider(&fetcher, &dhcp_fetcher, &log); EXPECT_EQ(ERR_IO_PENDING, decider.Start(config, base::TimeDelta::FromMilliseconds(1), true, callback.callback())); @@ -620,26 +619,26 @@ EXPECT_EQ(6u, entries.size()); EXPECT_TRUE( - LogContainsBeginEvent(entries, 0, NetLogEventType::PROXY_SCRIPT_DECIDER)); - EXPECT_TRUE(LogContainsBeginEvent( - entries, 1, NetLogEventType::PROXY_SCRIPT_DECIDER_WAIT)); - EXPECT_TRUE(LogContainsEndEvent(entries, 2, - NetLogEventType::PROXY_SCRIPT_DECIDER_WAIT)); - EXPECT_TRUE(LogContainsBeginEvent( - entries, 3, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); - EXPECT_TRUE(LogContainsEndEvent( - entries, 4, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + LogContainsBeginEvent(entries, 0, NetLogEventType::PAC_FILE_DECIDER)); + EXPECT_TRUE(LogContainsBeginEvent(entries, 1, + NetLogEventType::PAC_FILE_DECIDER_WAIT)); EXPECT_TRUE( - LogContainsEndEvent(entries, 5, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsEndEvent(entries, 2, NetLogEventType::PAC_FILE_DECIDER_WAIT)); + EXPECT_TRUE(LogContainsBeginEvent( + entries, 3, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); + EXPECT_TRUE(LogContainsEndEvent( + entries, 4, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); + EXPECT_TRUE( + LogContainsEndEvent(entries, 5, NetLogEventType::PAC_FILE_DECIDER)); } // This is a copy-paste of CustomPacFails1, with the exception that we give it // a -5 second delay instead of a 0 ms delay. This change should have no effect // so the rest of the test is unchanged. -TEST(ProxyScriptDeciderTest, CustomPacFails1_WithNegativeDelay) { +TEST(PacFileDeciderTest, CustomPacFails1_WithNegativeDelay) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); - DoNothingDhcpProxyScriptFetcher dhcp_fetcher; + RuleBasedPacFileFetcher fetcher(&rules); + DoNothingDhcpPacFileFetcher dhcp_fetcher; ProxyConfig config; config.set_pac_url(GURL("http://custom/proxy.pac")); @@ -648,7 +647,7 @@ TestCompletionCallback callback; TestNetLog log; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, &log); + PacFileDecider decider(&fetcher, &dhcp_fetcher, &log); EXPECT_EQ(kFailedDownloading, decider.Start(config, base::TimeDelta::FromSeconds(-5), true, callback.callback())); @@ -660,16 +659,16 @@ EXPECT_EQ(4u, entries.size()); EXPECT_TRUE( - LogContainsBeginEvent(entries, 0, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsBeginEvent(entries, 0, NetLogEventType::PAC_FILE_DECIDER)); EXPECT_TRUE(LogContainsBeginEvent( - entries, 1, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 1, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE(LogContainsEndEvent( - entries, 2, NetLogEventType::PROXY_SCRIPT_DECIDER_FETCH_PAC_SCRIPT)); + entries, 2, NetLogEventType::PAC_FILE_DECIDER_FETCH_PAC_SCRIPT)); EXPECT_TRUE( - LogContainsEndEvent(entries, 3, NetLogEventType::PROXY_SCRIPT_DECIDER)); + LogContainsEndEvent(entries, 3, NetLogEventType::PAC_FILE_DECIDER)); } -class SynchronousSuccessDhcpFetcher : public DhcpProxyScriptFetcher { +class SynchronousSuccessDhcpFetcher : public DhcpPacFileFetcher { public: explicit SynchronousSuccessDhcpFetcher(const base::string16& expected_text) : gurl_("http://dhcppac/"), expected_text_(expected_text) {} @@ -696,14 +695,14 @@ DISALLOW_COPY_AND_ASSIGN(SynchronousSuccessDhcpFetcher); }; -// All of the tests above that use ProxyScriptDecider have tested +// All of the tests above that use PacFileDecider have tested // failure to fetch a PAC file via DHCP configuration, so we now test // success at downloading and parsing, and then success at downloading, // failure at parsing. -TEST(ProxyScriptDeciderTest, AutodetectDhcpSuccess) { +TEST(PacFileDeciderTest, AutodetectDhcpSuccess) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); + RuleBasedPacFileFetcher fetcher(&rules); SynchronousSuccessDhcpFetcher dhcp_fetcher( base::WideToUTF16(L"http://bingo/!FindProxyForURL")); @@ -714,7 +713,7 @@ rules.AddFailDownloadRule("http://wpad/wpad.dat"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); EXPECT_EQ( OK, decider.Start(config, base::TimeDelta(), true, callback.callback())); EXPECT_EQ(dhcp_fetcher.expected_text(), decider.script_data()->utf16()); @@ -723,9 +722,9 @@ EXPECT_EQ(GURL("http://dhcppac/"), decider.effective_config().pac_url()); } -TEST(ProxyScriptDeciderTest, AutodetectDhcpFailParse) { +TEST(PacFileDeciderTest, AutodetectDhcpFailParse) { Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); + RuleBasedPacFileFetcher fetcher(&rules); SynchronousSuccessDhcpFetcher dhcp_fetcher( base::WideToUTF16(L"http://bingo/!invalid-script")); @@ -736,7 +735,7 @@ rules.AddFailDownloadRule("http://wpad/wpad.dat"); TestCompletionCallback callback; - ProxyScriptDecider decider(&fetcher, &dhcp_fetcher, NULL); + PacFileDecider decider(&fetcher, &dhcp_fetcher, NULL); // Since there is fallback to DNS-based WPAD, the final error will be that // it failed downloading, not that it failed parsing. EXPECT_EQ(kFailedDownloading, decider.Start(config, base::TimeDelta(), true, @@ -747,7 +746,7 @@ } class AsyncFailDhcpFetcher - : public DhcpProxyScriptFetcher, + : public DhcpPacFileFetcher, public base::SupportsWeakPtr<AsyncFailDhcpFetcher> { public: AsyncFailDhcpFetcher() = default; @@ -779,13 +778,13 @@ CompletionCallback callback_; }; -TEST(ProxyScriptDeciderTest, DhcpCancelledByDestructor) { +TEST(PacFileDeciderTest, DhcpCancelledByDestructor) { // This regression test would crash before // http://codereview.chromium.org/7044058/ // Thus, we don't care much about actual results (hence no EXPECT or ASSERT // macros below), just that it doesn't crash. Rules rules; - RuleBasedProxyScriptFetcher fetcher(&rules); + RuleBasedPacFileFetcher fetcher(&rules); std::unique_ptr<AsyncFailDhcpFetcher> dhcp_fetcher( new AsyncFailDhcpFetcher()); @@ -796,15 +795,15 @@ TestCompletionCallback callback; - // Scope so ProxyScriptDecider gets destroyed early. + // Scope so PacFileDecider gets destroyed early. { - ProxyScriptDecider decider(&fetcher, dhcp_fetcher.get(), NULL); + PacFileDecider decider(&fetcher, dhcp_fetcher.get(), NULL); decider.Start(config, base::TimeDelta(), true, callback.callback()); } // Run the message loop to let the DHCP fetch complete and post the results // back. Before the fix linked to above, this would try to invoke on - // the callback object provided by ProxyScriptDecider after it was + // the callback object provided by PacFileDecider after it was // no longer valid. base::RunLoop().RunUntilIdle(); }
diff --git a/net/proxy_resolution/pac_file_fetcher.h b/net/proxy_resolution/pac_file_fetcher.h index d19ed59..b6df177 100644 --- a/net/proxy_resolution/pac_file_fetcher.h +++ b/net/proxy_resolution/pac_file_fetcher.h
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// ProxyScriptFetcher is an async interface for fetching a proxy auto config +// PacFileFetcher is an async interface for fetching a proxy auto config // script. It is specific to fetching a PAC script; enforces timeout, max-size, // status code. @@ -21,10 +21,10 @@ // Interface for downloading a PAC script. Implementations can enforce // timeouts, maximum size constraints, content encoding, etc.. -class NET_EXPORT_PRIVATE ProxyScriptFetcher { +class NET_EXPORT_PRIVATE PacFileFetcher { public: // Destruction should cancel any outstanding requests. - virtual ~ProxyScriptFetcher() {} + virtual ~PacFileFetcher() {} // Downloads the given PAC URL, and invokes |callback| on completion. // Returns OK on success, otherwise the error code. If the return code is
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc index d0d107e..24ea807c 100644 --- a/net/proxy_resolution/pac_file_fetcher_impl.cc +++ b/net/proxy_resolution/pac_file_fetcher_impl.cc
@@ -82,8 +82,7 @@ } // namespace -ProxyScriptFetcherImpl::ProxyScriptFetcherImpl( - URLRequestContext* url_request_context) +PacFileFetcherImpl::PacFileFetcherImpl(URLRequestContext* url_request_context) : url_request_context_(url_request_context), buf_(new IOBuffer(kBufSize)), next_id_(0), @@ -96,26 +95,26 @@ DCHECK(url_request_context); } -ProxyScriptFetcherImpl::~ProxyScriptFetcherImpl() { +PacFileFetcherImpl::~PacFileFetcherImpl() { // The URLRequest's destructor will cancel the outstanding request, and // ensure that the delegate (this) is not called again. } -base::TimeDelta ProxyScriptFetcherImpl::SetTimeoutConstraint( +base::TimeDelta PacFileFetcherImpl::SetTimeoutConstraint( base::TimeDelta timeout) { base::TimeDelta prev = max_duration_; max_duration_ = timeout; return prev; } -size_t ProxyScriptFetcherImpl::SetSizeConstraint(size_t size_bytes) { +size_t PacFileFetcherImpl::SetSizeConstraint(size_t size_bytes) { size_t prev = max_response_bytes_; max_response_bytes_ = size_bytes; return prev; } -void ProxyScriptFetcherImpl::OnResponseCompleted(URLRequest* request, - int net_error) { +void PacFileFetcherImpl::OnResponseCompleted(URLRequest* request, + int net_error) { DCHECK_EQ(request, cur_request_.get()); // Use |result_code_| as the request's error if we have already set it to @@ -126,9 +125,9 @@ FetchCompleted(); } -int ProxyScriptFetcherImpl::Fetch(const GURL& url, - base::string16* text, - const CompletionCallback& callback) { +int PacFileFetcherImpl::Fetch(const GURL& url, + base::string16* text, + const CompletionCallback& callback) { // It is invalid to call Fetch() while a request is already in progress. DCHECK(!cur_request_.get()); DCHECK(!callback.is_null()); @@ -212,7 +211,7 @@ base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, - base::Bind(&ProxyScriptFetcherImpl::OnTimeout, weak_factory_.GetWeakPtr(), + base::Bind(&PacFileFetcherImpl::OnTimeout, weak_factory_.GetWeakPtr(), cur_request_id_), max_duration_); @@ -221,17 +220,17 @@ return ERR_IO_PENDING; } -void ProxyScriptFetcherImpl::Cancel() { +void PacFileFetcherImpl::Cancel() { // ResetCurRequestState will free the URLRequest, which will cause // cancellation. ResetCurRequestState(); } -URLRequestContext* ProxyScriptFetcherImpl::GetRequestContext() const { +URLRequestContext* PacFileFetcherImpl::GetRequestContext() const { return url_request_context_; } -void ProxyScriptFetcherImpl::OnShutdown() { +void PacFileFetcherImpl::OnShutdown() { url_request_context_ = nullptr; if (cur_request_) { @@ -240,8 +239,8 @@ } } -void ProxyScriptFetcherImpl::OnAuthRequired(URLRequest* request, - AuthChallengeInfo* auth_info) { +void PacFileFetcherImpl::OnAuthRequired(URLRequest* request, + AuthChallengeInfo* auth_info) { DCHECK_EQ(request, cur_request_.get()); // TODO(eroman): http://crbug.com/77366 LOG(WARNING) << "Auth required to fetch PAC script, aborting."; @@ -249,9 +248,9 @@ request->CancelAuth(); } -void ProxyScriptFetcherImpl::OnSSLCertificateError(URLRequest* request, - const SSLInfo& ssl_info, - bool fatal) { +void PacFileFetcherImpl::OnSSLCertificateError(URLRequest* request, + const SSLInfo& ssl_info, + bool fatal) { DCHECK_EQ(request, cur_request_.get()); // Revocation check failures are not fatal. if (IsCertStatusMinorError(ssl_info.cert_status)) { @@ -264,8 +263,7 @@ request->Cancel(); } -void ProxyScriptFetcherImpl::OnResponseStarted(URLRequest* request, - int net_error) { +void PacFileFetcherImpl::OnResponseStarted(URLRequest* request, int net_error) { DCHECK_EQ(request, cur_request_.get()); DCHECK_NE(ERR_IO_PENDING, net_error); @@ -300,8 +298,7 @@ ReadBody(request); } -void ProxyScriptFetcherImpl::OnReadCompleted(URLRequest* request, - int num_bytes) { +void PacFileFetcherImpl::OnReadCompleted(URLRequest* request, int num_bytes) { DCHECK_NE(ERR_IO_PENDING, num_bytes); DCHECK_EQ(request, cur_request_.get()); @@ -311,7 +308,7 @@ } } -void ProxyScriptFetcherImpl::ReadBody(URLRequest* request) { +void PacFileFetcherImpl::ReadBody(URLRequest* request) { // Read as many bytes as are available synchronously. while (true) { int num_bytes = request->Read(buf_.get(), kBufSize); @@ -328,8 +325,7 @@ } } -bool ProxyScriptFetcherImpl::ConsumeBytesRead(URLRequest* request, - int num_bytes) { +bool PacFileFetcherImpl::ConsumeBytesRead(URLRequest* request, int num_bytes) { if (fetch_time_to_first_byte_.is_null()) fetch_time_to_first_byte_ = base::TimeTicks::Now(); @@ -351,9 +347,9 @@ return true; } -void ProxyScriptFetcherImpl::FetchCompleted() { +void PacFileFetcherImpl::FetchCompleted() { if (result_code_ == OK) { - // Calculate duration of time for proxy script fetch to complete. + // Calculate duration of time for PAC file fetch to complete. DCHECK(!fetch_start_time_.is_null()); DCHECK(!fetch_time_to_first_byte_.is_null()); UMA_HISTOGRAM_MEDIUM_TIMES("Net.ProxyScriptFetcher.SuccessDuration", @@ -378,7 +374,7 @@ callback.Run(result_code); } -void ProxyScriptFetcherImpl::ResetCurRequestState() { +void PacFileFetcherImpl::ResetCurRequestState() { cur_request_.reset(); cur_request_id_ = 0; callback_.Reset(); @@ -388,7 +384,7 @@ fetch_time_to_first_byte_ = base::TimeTicks(); } -void ProxyScriptFetcherImpl::OnTimeout(int id) { +void PacFileFetcherImpl::OnTimeout(int id) { // Timeout tasks may outlive the URLRequest they reference. Make sure it // is still applicable. if (cur_request_id_ != id)
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.h b/net/proxy_resolution/pac_file_fetcher_impl.h index 3cea326..0b150d4 100644 --- a/net/proxy_resolution/pac_file_fetcher_impl.h +++ b/net/proxy_resolution/pac_file_fetcher_impl.h
@@ -26,20 +26,20 @@ class URLRequestContext; -// Implementation of ProxyScriptFetcher that downloads scripts using the +// Implementation of PacFileFetcher that downloads scripts using the // specified request context. -class NET_EXPORT ProxyScriptFetcherImpl : public ProxyScriptFetcher, - public URLRequest::Delegate { +class NET_EXPORT PacFileFetcherImpl : public PacFileFetcher, + public URLRequest::Delegate { public: - // Creates a ProxyScriptFetcher that issues requests through + // Creates a PacFileFetcher that issues requests through // |url_request_context|. |url_request_context| must remain valid for the - // lifetime of ProxyScriptFetcherImpl. + // lifetime of PacFileFetcherImpl. // Note that while a request is in progress, we will be holding a reference // to |url_request_context|. Be careful not to create cycles between the // fetcher and the context; you can break such cycles by calling Cancel(). - explicit ProxyScriptFetcherImpl(URLRequestContext* url_request_context); + explicit PacFileFetcherImpl(URLRequestContext* url_request_context); - ~ProxyScriptFetcherImpl() override; + ~PacFileFetcherImpl() override; // Used by unit-tests to modify the default limits. base::TimeDelta SetTimeoutConstraint(base::TimeDelta timeout); @@ -47,7 +47,7 @@ void OnResponseCompleted(URLRequest* request, int net_error); - // ProxyScriptFetcher methods: + // PacFileFetcher methods: int Fetch(const GURL& url, base::string16* text, const CompletionCallback& callback) override; @@ -129,9 +129,9 @@ // Factory for creating the time-out task. This takes care of revoking // outstanding tasks when |this| is deleted. - base::WeakPtrFactory<ProxyScriptFetcherImpl> weak_factory_; + base::WeakPtrFactory<PacFileFetcherImpl> weak_factory_; - DISALLOW_COPY_AND_ASSIGN(ProxyScriptFetcherImpl); + DISALLOW_COPY_AND_ASSIGN(PacFileFetcherImpl); }; } // namespace net
diff --git a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc index a2c030e..bce17bf 100644 --- a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc +++ b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
@@ -58,14 +58,14 @@ // TODO(eroman): // - Test canceling an outstanding request. -// - Test deleting ProxyScriptFetcher while a request is in progress. +// - Test deleting PacFileFetcher while a request is in progress. namespace net { namespace { const base::FilePath::CharType kDocRoot[] = - FILE_PATH_LITERAL("net/data/proxy_script_fetcher_unittest"); + FILE_PATH_LITERAL("net/data/pac_file_fetcher_unittest"); struct FetchResult { int code; @@ -122,13 +122,13 @@ }; #if !BUILDFLAG(DISABLE_FILE_SUPPORT) -// Get a file:// url relative to net/data/proxy/proxy_script_fetcher_unittest. +// Get a file:// url relative to net/data/proxy/pac_file_fetcher_unittest. GURL GetTestFileUrl(const std::string& relpath) { base::FilePath path; PathService::Get(base::DIR_SOURCE_ROOT, &path); path = path.AppendASCII("net"); path = path.AppendASCII("data"); - path = path.AppendASCII("proxy_script_fetcher_unittest"); + path = path.AppendASCII("pac_file_fetcher_unittest"); GURL base_url = FilePathToFileURL(path); return GURL(base_url.spec() + "/" + relpath); } @@ -209,9 +209,9 @@ DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); }; -class ProxyScriptFetcherImplTest : public PlatformTest { +class PacFileFetcherImplTest : public PlatformTest { public: - ProxyScriptFetcherImplTest() { + PacFileFetcherImplTest() { test_server_.AddDefaultHandlers(base::FilePath(kDocRoot)); context_.set_network_delegate(&network_delegate_); } @@ -223,8 +223,8 @@ }; #if !BUILDFLAG(DISABLE_FILE_SUPPORT) -TEST_F(ProxyScriptFetcherImplTest, FileUrl) { - ProxyScriptFetcherImpl pac_fetcher(&context_); +TEST_F(PacFileFetcherImplTest, FileUrl) { + PacFileFetcherImpl pac_fetcher(&context_); { // Fetch a non-existent file. base::string16 text; @@ -249,10 +249,10 @@ // Note that all mime types are allowed for PAC file, to be consistent // with other browsers. -TEST_F(ProxyScriptFetcherImplTest, HttpMimeType) { +TEST_F(PacFileFetcherImplTest, HttpMimeType) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); { // Fetch a PAC with mime type "text/plain" GURL url(test_server_.GetURL("/pac.txt")); @@ -283,10 +283,10 @@ } } -TEST_F(ProxyScriptFetcherImplTest, HttpStatusCode) { +TEST_F(PacFileFetcherImplTest, HttpStatusCode) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); { // Fetch a PAC which gives a 500 -- FAIL GURL url(test_server_.GetURL("/500.pac")); @@ -308,10 +308,10 @@ } } -TEST_F(ProxyScriptFetcherImplTest, ContentDisposition) { +TEST_F(PacFileFetcherImplTest, ContentDisposition) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); // Fetch PAC scripts via HTTP with a Content-Disposition header -- should // have no effect. @@ -325,10 +325,10 @@ } // Verifies that PAC scripts are not being cached. -TEST_F(ProxyScriptFetcherImplTest, NoCache) { +TEST_F(PacFileFetcherImplTest, NoCache) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour. GURL url(test_server_.GetURL("/cacheable_1hr.pac")); @@ -358,10 +358,10 @@ } } -TEST_F(ProxyScriptFetcherImplTest, TooLarge) { +TEST_F(PacFileFetcherImplTest, TooLarge) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); // Set the maximum response size to 50 bytes. int prev_size = pac_fetcher.SetSizeConstraint(50); @@ -400,11 +400,11 @@ } } -// The ProxyScriptFetcher should be able to handle responses with an empty body. -TEST_F(ProxyScriptFetcherImplTest, Empty) { +// The PacFileFetcher should be able to handle responses with an empty body. +TEST_F(PacFileFetcherImplTest, Empty) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); GURL url(test_server_.GetURL("/empty")); base::string16 text; @@ -415,10 +415,10 @@ EXPECT_EQ(0u, text.size()); } -TEST_F(ProxyScriptFetcherImplTest, Hang) { +TEST_F(PacFileFetcherImplTest, Hang) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); // Set the timeout period to 0.5 seconds. base::TimeDelta prev_timeout = @@ -450,13 +450,13 @@ } } -// The ProxyScriptFetcher should decode any content-codings +// The PacFileFetcher should decode any content-codings // (like gzip, bzip, etc.), and apply any charset conversions to yield // UTF8. -TEST_F(ProxyScriptFetcherImplTest, Encodings) { +TEST_F(PacFileFetcherImplTest, Encodings) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); // Test a response that is gzip-encoded -- should get inflated. { @@ -482,8 +482,8 @@ } } -TEST_F(ProxyScriptFetcherImplTest, DataURLs) { - ProxyScriptFetcherImpl pac_fetcher(&context_); +TEST_F(PacFileFetcherImplTest, DataURLs) { + PacFileFetcherImpl pac_fetcher(&context_); const char kEncodedUrl[] = "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R" @@ -520,8 +520,8 @@ } // Makes sure that a request gets through when the socket pool is full, so -// ProxyScriptFetcherImpl can use the same URLRequestContext as everything else. -TEST_F(ProxyScriptFetcherImplTest, Priority) { +// PacFileFetcherImpl can use the same URLRequestContext as everything else. +TEST_F(PacFileFetcherImplTest, Priority) { // Enough requests to exceed the per-pool limit, which is also enough to // exceed the per-group limit. int num_requests = 10 + ClientSocketPoolManager::max_sockets_per_pool( @@ -533,13 +533,13 @@ test_server_.SetConnectionListener(&connection_listener); ASSERT_TRUE(test_server_.Start()); - std::vector<std::unique_ptr<ProxyScriptFetcherImpl>> pac_fetchers; + std::vector<std::unique_ptr<PacFileFetcherImpl>> pac_fetchers; TestCompletionCallback callback; base::string16 text; for (int i = 0; i < num_requests; i++) { - std::unique_ptr<ProxyScriptFetcherImpl> pac_fetcher = - std::make_unique<ProxyScriptFetcherImpl>(&context_); + std::unique_ptr<PacFileFetcherImpl> pac_fetcher = + std::make_unique<PacFileFetcherImpl>(&context_); GURL url(test_server_.GetURL("/hung")); // Fine to use the same string and callback for all of these, as they should // all hang. @@ -557,10 +557,10 @@ EXPECT_TRUE(test_server_.ShutdownAndWaitUntilComplete()); } -TEST_F(ProxyScriptFetcherImplTest, OnShutdown) { +TEST_F(PacFileFetcherImplTest, OnShutdown) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); base::string16 text; TestCompletionCallback callback; int result = pac_fetcher.Fetch(test_server_.GetURL("/hung"), &text, @@ -582,10 +582,10 @@ EXPECT_THAT(result, IsError(ERR_CONTEXT_SHUT_DOWN)); } -TEST_F(ProxyScriptFetcherImplTest, OnShutdownWithNoLiveRequest) { +TEST_F(PacFileFetcherImplTest, OnShutdownWithNoLiveRequest) { ASSERT_TRUE(test_server_.Start()); - ProxyScriptFetcherImpl pac_fetcher(&context_); + PacFileFetcherImpl pac_fetcher(&context_); pac_fetcher.OnShutdown(); base::string16 text;
diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_config.h index 0ae0317..973fed7 100644 --- a/net/proxy_resolution/proxy_config.h +++ b/net/proxy_resolution/proxy_config.h
@@ -237,7 +237,7 @@ // If non-empty, indicates the URL of the proxy auto-config file to use. GURL pac_url_; - // If true, blocks all traffic in case fetching the pac script from |pac_url_| + // If true, blocks all traffic in case fetching the PAC script from |pac_url_| // fails. Only valid if |pac_url_| is non-empty. bool pac_mandatory_;
diff --git a/net/proxy_resolution/proxy_config_service_linux_unittest.cc b/net/proxy_resolution/proxy_config_service_linux_unittest.cc index 7aec908..6c155ae 100644 --- a/net/proxy_resolution/proxy_config_service_linux_unittest.cc +++ b/net/proxy_resolution/proxy_config_service_linux_unittest.cc
@@ -271,7 +271,7 @@ // This helper class runs ProxyConfigServiceLinux::GetLatestProxyConfig() on // the main TaskRunner and synchronously waits for the result. -// Some code duplicated from proxy_script_fetcher_unittest.cc. +// Some code duplicated from pac_file_fetcher_unittest.cc. class SyncConfigGetter : public ProxyConfigService::Observer { public: // Takes ownership of |config_service|.
diff --git a/net/proxy_resolution/proxy_list.h b/net/proxy_resolution/proxy_list.h index b01003b..e65057d2 100644 --- a/net/proxy_resolution/proxy_list.h +++ b/net/proxy_resolution/proxy_list.h
@@ -70,7 +70,7 @@ // Returns all proxy servers in the list. const std::vector<ProxyServer>& GetAll() const; - // Sets the list by parsing the pac result |pac_string|. + // Sets the list by parsing the PAC result |pac_string|. // Some examples for |pac_string|: // "DIRECT" // "PROXY foopy1"
diff --git a/net/proxy_resolution/proxy_resolver_factory.h b/net/proxy_resolution/proxy_resolver_factory.h index 7a9b66c..ea229ae 100644 --- a/net/proxy_resolution/proxy_resolver_factory.h +++ b/net/proxy_resolution/proxy_resolver_factory.h
@@ -38,15 +38,14 @@ // case of asynchronous completion |*request| is written to, and can be // deleted to cancel the request. All requests in progress are cancelled if // the ProxyResolverFactory is deleted. - virtual int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) = 0; + virtual int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) = 0; // The PAC script backend can be specified to the ProxyResolverFactory either // via URL, or via the javascript text itself. If |expects_pac_bytes| is true, - // then the ProxyResolverScriptData passed to CreateProxyResolver() should + // then the PacFileData passed to CreateProxyResolver() should // contain the actual script bytes rather than just the URL. bool expects_pac_bytes() const { return expects_pac_bytes_; }
diff --git a/net/proxy_resolution/proxy_resolver_mac.cc b/net/proxy_resolution/proxy_resolver_mac.cc index 6d13cbd..8570f98 100644 --- a/net/proxy_resolution/proxy_resolver_mac.cc +++ b/net/proxy_resolution/proxy_resolver_mac.cc
@@ -183,8 +183,7 @@ #pragma mark - ProxyResolverMac class ProxyResolverMac : public ProxyResolver { public: - explicit ProxyResolverMac( - const scoped_refptr<ProxyResolverScriptData>& script_data); + explicit ProxyResolverMac(const scoped_refptr<PacFileData>& script_data); ~ProxyResolverMac() override; // ProxyResolver methods: @@ -195,13 +194,12 @@ const NetLogWithSource& net_log) override; private: - const scoped_refptr<ProxyResolverScriptData> script_data_; + const scoped_refptr<PacFileData> script_data_; }; ProxyResolverMac::ProxyResolverMac( - const scoped_refptr<ProxyResolverScriptData>& script_data) - : script_data_(script_data) { -} + const scoped_refptr<PacFileData>& script_data) + : script_data_(script_data) {} ProxyResolverMac::~ProxyResolverMac() {} @@ -219,7 +217,7 @@ if (!query_url_ref.get()) return ERR_FAILED; base::ScopedCFTypeRef<CFStringRef> pac_ref(base::SysUTF8ToCFStringRef( - script_data_->type() == ProxyResolverScriptData::TYPE_AUTO_DETECT + script_data_->type() == PacFileData::TYPE_AUTO_DETECT ? std::string() : script_data_->url().spec())); base::ScopedCFTypeRef<CFURLRef> pac_url_ref( @@ -345,7 +343,7 @@ } int ProxyResolverFactoryMac::CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback, std::unique_ptr<Request>* request) {
diff --git a/net/proxy_resolution/proxy_resolver_mac.h b/net/proxy_resolution/proxy_resolver_mac.h index 866bb1a4..3577dc2c 100644 --- a/net/proxy_resolution/proxy_resolver_mac.h +++ b/net/proxy_resolution/proxy_resolver_mac.h
@@ -21,11 +21,10 @@ public: ProxyResolverFactoryMac(); - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override; + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override; private: DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryMac);
diff --git a/net/proxy_resolution/proxy_resolver_v8.cc b/net/proxy_resolution/proxy_resolver_v8.cc index 71072ea8..7eee9c4 100644 --- a/net/proxy_resolution/proxy_resolver_v8.cc +++ b/net/proxy_resolution/proxy_resolver_v8.cc
@@ -89,12 +89,12 @@ const char kPacUtilityResourceName[] = "proxy-pac-utility-script.js"; // External string wrapper so V8 can access the UTF16 string wrapped by -// ProxyResolverScriptData. +// PacFileData. class V8ExternalStringFromScriptData : public v8::String::ExternalStringResource { public: explicit V8ExternalStringFromScriptData( - const scoped_refptr<ProxyResolverScriptData>& script_data) + const scoped_refptr<PacFileData>& script_data) : script_data_(script_data) {} const uint16_t* data() const override { @@ -104,7 +104,7 @@ size_t length() const override { return script_data_->utf16().size(); } private: - const scoped_refptr<ProxyResolverScriptData> script_data_; + const scoped_refptr<PacFileData> script_data_; DISALLOW_COPY_AND_ASSIGN(V8ExternalStringFromScriptData); }; @@ -166,10 +166,11 @@ s.size()).ToLocalChecked(); } -// Converts a UTF16 base::string16 (warpped by a ProxyResolverScriptData) to a +// Converts a UTF16 base::string16 (wrapped by a PacFileData) to a // V8 string. v8::Local<v8::String> ScriptDataToV8String( - v8::Isolate* isolate, const scoped_refptr<ProxyResolverScriptData>& s) { + v8::Isolate* isolate, + const scoped_refptr<PacFileData>& s) { if (s->utf16().size() * 2 <= kMaxStringBytesForCopy) { return v8::String::NewFromTwoByte( isolate, reinterpret_cast<const uint16_t*>(s->utf16().data()), @@ -492,7 +493,7 @@ return OK; } - int InitV8(const scoped_refptr<ProxyResolverScriptData>& pac_script, + int InitV8(const scoped_refptr<PacFileData>& pac_script, JSBindings* bindings) { base::AutoReset<JSBindings*> bindings_reset(&js_bindings_, bindings); v8::Locker locked(isolate_); @@ -860,10 +861,9 @@ } // static -int ProxyResolverV8::Create( - const scoped_refptr<ProxyResolverScriptData>& script_data, - ProxyResolverV8::JSBindings* js_bindings, - std::unique_ptr<ProxyResolverV8>* resolver) { +int ProxyResolverV8::Create(const scoped_refptr<PacFileData>& script_data, + ProxyResolverV8::JSBindings* js_bindings, + std::unique_ptr<ProxyResolverV8>* resolver) { DCHECK(script_data.get()); DCHECK(js_bindings);
diff --git a/net/proxy_resolution/proxy_resolver_v8.h b/net/proxy_resolution/proxy_resolver_v8.h index 2b391c4..58490f82 100644 --- a/net/proxy_resolution/proxy_resolver_v8.h +++ b/net/proxy_resolution/proxy_resolver_v8.h
@@ -19,7 +19,7 @@ namespace net { class ProxyInfo; -class ProxyResolverScriptData; +class PacFileData; // A synchronous ProxyResolver-like that uses V8 to evaluate PAC scripts. class NET_EXPORT_PRIVATE ProxyResolverV8 { @@ -57,7 +57,7 @@ }; // Constructs a ProxyResolverV8. - static int Create(const scoped_refptr<ProxyResolverScriptData>& script_data, + static int Create(const scoped_refptr<PacFileData>& script_data, JSBindings* bindings, std::unique_ptr<ProxyResolverV8>* resolver);
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing.cc b/net/proxy_resolution/proxy_resolver_v8_tracing.cc index fbd268e9..8b96c07 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing.cc +++ b/net/proxy_resolution/proxy_resolver_v8_tracing.cc
@@ -99,10 +99,9 @@ std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings); // Called from origin thread. - void StartCreateV8Resolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolverV8>* resolver, - const CompletionCallback& callback); + void StartCreateV8Resolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolverV8>* resolver, + const CompletionCallback& callback); // Called from origin thread. void StartGetProxyForURL(const GURL& url, @@ -246,7 +245,7 @@ // State specific to CREATE_V8_RESOLVER. // ------------------------------------------------------- - scoped_refptr<ProxyResolverScriptData> script_data_; + scoped_refptr<PacFileData> script_data_; std::unique_ptr<ProxyResolverV8>* resolver_out_; // ------------------------------------------------------- @@ -353,10 +352,9 @@ CheckIsOnOriginThread(); } -void Job::StartCreateV8Resolver( - const scoped_refptr<ProxyResolverScriptData>& script_data, - std::unique_ptr<ProxyResolverV8>* resolver, - const CompletionCallback& callback) { +void Job::StartCreateV8Resolver(const scoped_refptr<PacFileData>& script_data, + std::unique_ptr<ProxyResolverV8>* resolver, + const CompletionCallback& callback) { CheckIsOnOriginThread(); resolver_out_ = resolver; @@ -423,7 +421,7 @@ CheckIsOnOriginThread(); if (pending_dns_) - return LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT; + return LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE; return LOAD_STATE_RESOLVING_PROXY_FOR_URL; } @@ -986,7 +984,7 @@ ~ProxyResolverV8TracingFactoryImpl() override; void CreateProxyResolverV8Tracing( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings, std::unique_ptr<ProxyResolverV8Tracing>* resolver, const CompletionCallback& callback, @@ -1007,7 +1005,7 @@ public: CreateJob(ProxyResolverV8TracingFactoryImpl* factory, std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings, - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolverV8Tracing>* resolver_out, const CompletionCallback& callback) : factory_(factory), @@ -1091,7 +1089,7 @@ } void ProxyResolverV8TracingFactoryImpl::CreateProxyResolverV8Tracing( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings, std::unique_ptr<ProxyResolverV8Tracing>* resolver, const CompletionCallback& callback,
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing.h b/net/proxy_resolution/proxy_resolver_v8_tracing.h index e95812e..7decd2c 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing.h +++ b/net/proxy_resolution/proxy_resolver_v8_tracing.h
@@ -72,7 +72,7 @@ virtual ~ProxyResolverV8TracingFactory() = default; virtual void CreateProxyResolverV8Tracing( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings, std::unique_ptr<ProxyResolverV8Tracing>* resolver, const CompletionCallback& callback,
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc index 22e05463..090f4acd 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc +++ b/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc
@@ -44,7 +44,7 @@ } }; -scoped_refptr<ProxyResolverScriptData> LoadScriptData(const char* filename) { +scoped_refptr<PacFileData> LoadScriptData(const char* filename) { base::FilePath path; PathService::Get(base::DIR_SOURCE_ROOT, &path); path = path.AppendASCII("net"); @@ -60,7 +60,7 @@ EXPECT_TRUE(ok) << "Failed to read file: " << path.value(); // Load the PAC script into the ProxyResolver. - return ProxyResolverScriptData::FromUTF8(file_contents); + return PacFileData::FromUTF8(file_contents); } class MockBindings {
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc index abe63381..cef1b8a 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc +++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc
@@ -147,7 +147,7 @@ default; int ProxyResolverFactoryV8TracingWrapper::CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback, std::unique_ptr<Request>* request) {
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h index e5a170b..b7423063 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h +++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h
@@ -38,11 +38,10 @@ ~ProxyResolverFactoryV8TracingWrapper() override; // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override; + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override; private: void OnProxyResolverCreated(
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc index 44acb35..8fdea68 100644 --- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc +++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc
@@ -51,7 +51,7 @@ } }; -scoped_refptr<ProxyResolverScriptData> LoadScriptData(const char* filename) { +scoped_refptr<PacFileData> LoadScriptData(const char* filename) { base::FilePath path; PathService::Get(base::DIR_SOURCE_ROOT, &path); path = path.AppendASCII("net"); @@ -67,7 +67,7 @@ EXPECT_TRUE(ok) << "Failed to read file: " << path.value(); // Load the PAC script into the ProxyResolver. - return ProxyResolverScriptData::FromUTF8(file_contents); + return PacFileData::FromUTF8(file_contents); } std::unique_ptr<ProxyResolverErrorObserver> ReturnErrorObserver(
diff --git a/net/proxy_resolution/proxy_resolver_v8_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_unittest.cc index 2acc464..f371f23 100644 --- a/net/proxy_resolution/proxy_resolver_v8_unittest.cc +++ b/net/proxy_resolution/proxy_resolver_v8_unittest.cc
@@ -123,9 +123,8 @@ } // Create the ProxyResolver using the PAC script. - return ProxyResolverV8::Create( - ProxyResolverScriptData::FromUTF8(file_contents), bindings(), - &resolver_); + return ProxyResolverV8::Create(PacFileData::FromUTF8(file_contents), + bindings(), &resolver_); } ProxyResolverV8& resolver() {
diff --git a/net/proxy_resolution/proxy_resolver_winhttp.cc b/net/proxy_resolution/proxy_resolver_winhttp.cc index ebe5fb8..40d46f9 100644 --- a/net/proxy_resolution/proxy_resolver_winhttp.cc +++ b/net/proxy_resolution/proxy_resolver_winhttp.cc
@@ -52,8 +52,7 @@ class ProxyResolverWinHttp : public ProxyResolver { public: - ProxyResolverWinHttp( - const scoped_refptr<ProxyResolverScriptData>& script_data); + ProxyResolverWinHttp(const scoped_refptr<PacFileData>& script_data); ~ProxyResolverWinHttp() override; // ProxyResolver implementation: @@ -76,12 +75,11 @@ }; ProxyResolverWinHttp::ProxyResolverWinHttp( - const scoped_refptr<ProxyResolverScriptData>& script_data) + const scoped_refptr<PacFileData>& script_data) : session_handle_(NULL), - pac_url_(script_data->type() == ProxyResolverScriptData::TYPE_AUTO_DETECT + pac_url_(script_data->type() == PacFileData::TYPE_AUTO_DETECT ? GURL("http://wpad/wpad.dat") - : script_data->url()) { -} + : script_data->url()) {} ProxyResolverWinHttp::~ProxyResolverWinHttp() { CloseWinHttpSession(); @@ -204,7 +202,7 @@ } int ProxyResolverFactoryWinHttp::CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, + const scoped_refptr<PacFileData>& pac_script, std::unique_ptr<ProxyResolver>* resolver, const CompletionCallback& callback, std::unique_ptr<Request>* request) {
diff --git a/net/proxy_resolution/proxy_resolver_winhttp.h b/net/proxy_resolution/proxy_resolver_winhttp.h index 663e76ec..f76576a4 100644 --- a/net/proxy_resolution/proxy_resolver_winhttp.h +++ b/net/proxy_resolution/proxy_resolver_winhttp.h
@@ -20,11 +20,10 @@ public: ProxyResolverFactoryWinHttp(); - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override; + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override; private: DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryWinHttp);
diff --git a/net/proxy_resolution/proxy_service.cc b/net/proxy_resolution/proxy_service.cc index 388cd9c..b85ba76 100644 --- a/net/proxy_resolution/proxy_service.cc +++ b/net/proxy_resolution/proxy_service.cc
@@ -250,11 +250,10 @@ ProxyResolverFactoryForNullResolver() : ProxyResolverFactory(false) {} // ProxyResolverFactory overrides. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) override { resolver->reset(new ProxyResolverNull()); return OK; } @@ -269,11 +268,10 @@ : ProxyResolverFactory(false), pac_string_(pac_string) {} // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) override { resolver->reset(new ProxyResolverFromPacString(pac_string_)); return OK; } @@ -361,7 +359,7 @@ // ProxyResolutionService::InitProxyResolver ---------------------------------- // This glues together two asynchronous steps: -// (1) ProxyScriptDecider -- try to fetch/validate a sequence of PAC scripts +// (1) PacFileDecider -- try to fetch/validate a sequence of PAC scripts // to figure out what we should configure against. // (2) Feed the fetched PAC script into the ProxyResolver. // @@ -379,7 +377,7 @@ quick_check_enabled_(true) {} ~InitProxyResolver() { - // Note that the destruction of ProxyScriptDecider will automatically cancel + // Note that the destruction of PacFileDecider will automatically cancel // any outstanding work. } @@ -388,8 +386,8 @@ // returned via |proxy_resolver| if the final result is OK. int Start(std::unique_ptr<ProxyResolver>* proxy_resolver, ProxyResolverFactory* proxy_resolver_factory, - ProxyScriptFetcher* proxy_script_fetcher, - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher, + PacFileFetcher* pac_file_fetcher, + DhcpPacFileFetcher* dhcp_pac_file_fetcher, NetLog* net_log, const ProxyConfig& config, TimeDelta wait_delay, @@ -398,18 +396,18 @@ proxy_resolver_ = proxy_resolver; proxy_resolver_factory_ = proxy_resolver_factory; - decider_.reset(new ProxyScriptDecider( - proxy_script_fetcher, dhcp_proxy_script_fetcher, net_log)); + decider_.reset( + new PacFileDecider(pac_file_fetcher, dhcp_pac_file_fetcher, net_log)); decider_->set_quick_check_enabled(quick_check_enabled_); config_ = config; wait_delay_ = wait_delay; callback_ = callback; - next_state_ = STATE_DECIDE_PROXY_SCRIPT; + next_state_ = STATE_DECIDE_PAC_FILE; return DoLoop(OK); } - // Similar to Start(), however it skips the ProxyScriptDecider stage. Instead + // Similar to Start(), however it skips the PacFileDecider stage. Instead // |effective_config|, |decider_result| and |script_data| will be used as the // inputs for initializing the ProxyResolver. A ProxyResolver instance will // be created using |proxy_resolver_factory| and returned via @@ -418,7 +416,7 @@ ProxyResolverFactory* proxy_resolver_factory, const ProxyConfig& effective_config, int decider_result, - ProxyResolverScriptData* script_data, + PacFileData* script_data, const CompletionCallback& callback) { DCHECK_EQ(STATE_NONE, next_state_); proxy_resolver_ = proxy_resolver; @@ -435,25 +433,25 @@ return DoLoop(OK); } - // Returns the proxy configuration that was selected by ProxyScriptDecider. + // Returns the proxy configuration that was selected by PacFileDecider. // Should only be called upon completion of the initialization. const ProxyConfig& effective_config() const { DCHECK_EQ(STATE_NONE, next_state_); return effective_config_; } - // Returns the PAC script data that was selected by ProxyScriptDecider. + // Returns the PAC script data that was selected by PacFileDecider. // Should only be called upon completion of the initialization. - const scoped_refptr<ProxyResolverScriptData>& script_data() { + const scoped_refptr<PacFileData>& script_data() { DCHECK_EQ(STATE_NONE, next_state_); return script_data_; } LoadState GetLoadState() const { - if (next_state_ == STATE_DECIDE_PROXY_SCRIPT_COMPLETE) { + if (next_state_ == STATE_DECIDE_PAC_FILE_COMPLETE) { // In addition to downloading, this state may also include the stall time // after network change events (kDelayAfterNetworkChangesMs). - return LOAD_STATE_DOWNLOADING_PROXY_SCRIPT; + return LOAD_STATE_DOWNLOADING_PAC_FILE; } return LOAD_STATE_RESOLVING_PROXY_FOR_URL; } @@ -470,8 +468,8 @@ private: enum State { STATE_NONE, - STATE_DECIDE_PROXY_SCRIPT, - STATE_DECIDE_PROXY_SCRIPT_COMPLETE, + STATE_DECIDE_PAC_FILE, + STATE_DECIDE_PAC_FILE_COMPLETE, STATE_CREATE_RESOLVER, STATE_CREATE_RESOLVER_COMPLETE, }; @@ -483,12 +481,12 @@ State state = next_state_; next_state_ = STATE_NONE; switch (state) { - case STATE_DECIDE_PROXY_SCRIPT: + case STATE_DECIDE_PAC_FILE: DCHECK_EQ(OK, rv); - rv = DoDecideProxyScript(); + rv = DoDecidePacFile(); break; - case STATE_DECIDE_PROXY_SCRIPT_COMPLETE: - rv = DoDecideProxyScriptComplete(rv); + case STATE_DECIDE_PAC_FILE_COMPLETE: + rv = DoDecidePacFileComplete(rv); break; case STATE_CREATE_RESOLVER: DCHECK_EQ(OK, rv); @@ -506,15 +504,15 @@ return rv; } - int DoDecideProxyScript() { - next_state_ = STATE_DECIDE_PROXY_SCRIPT_COMPLETE; + int DoDecidePacFile() { + next_state_ = STATE_DECIDE_PAC_FILE_COMPLETE; return decider_->Start( config_, wait_delay_, proxy_resolver_factory_->expects_pac_bytes(), base::Bind(&InitProxyResolver::OnIOCompletion, base::Unretained(this))); } - int DoDecideProxyScriptComplete(int result) { + int DoDecidePacFileComplete(int result) { if (result != OK) return result; @@ -555,9 +553,9 @@ ProxyConfig config_; ProxyConfig effective_config_; - scoped_refptr<ProxyResolverScriptData> script_data_; + scoped_refptr<PacFileData> script_data_; TimeDelta wait_delay_; - std::unique_ptr<ProxyScriptDecider> decider_; + std::unique_ptr<PacFileDecider> decider_; ProxyResolverFactory* proxy_resolver_factory_; std::unique_ptr<ProxyResolverFactory::Request> create_resolver_request_; std::unique_ptr<ProxyResolver>* proxy_resolver_; @@ -568,16 +566,16 @@ DISALLOW_COPY_AND_ASSIGN(InitProxyResolver); }; -// ProxyResolutionService::ProxyScriptDeciderPoller --------------------------- +// ProxyResolutionService::PacFileDeciderPoller --------------------------- // This helper class encapsulates the logic to schedule and run periodic // background checks to see if the PAC script (or effective proxy configuration) // has changed. If a change is detected, then the caller will be notified via // the ChangeCallback. -class ProxyResolutionService::ProxyScriptDeciderPoller { +class ProxyResolutionService::PacFileDeciderPoller { public: - typedef base::Callback<void(int, ProxyResolverScriptData*, - const ProxyConfig&)> ChangeCallback; + typedef base::Callback<void(int, PacFileData*, const ProxyConfig&)> + ChangeCallback; // Builds a poller helper, and starts polling for updates. Whenever a change // is observed, |callback| will be invoked with the details. @@ -586,11 +584,11 @@ // |proxy_resolver_expects_pac_bytes| the type of proxy resolver we expect // to use the resulting script data with // (so it can choose the right format). - // |proxy_script_fetcher| this pointer must remain alive throughout our - // lifetime. It is the dependency that will be used - // for downloading proxy scripts. - // |dhcp_proxy_script_fetcher| similar to |proxy_script_fetcher|, but for - // the DHCP dependency. + // |pac_file_fetcher| this pointer must remain alive throughout our + // lifetime. It is the dependency that will be used + // for downloading PAC files. + // |dhcp_pac_file_fetcher| similar to |pac_file_fetcher|, but for + // he DHCP dependency. // |init_net_error| This is the initial network error (possibly success) // encountered by the first PAC fetch attempt. We use it // to schedule updates more aggressively if the initial @@ -599,20 +597,19 @@ // This is the baseline used to determine when the // script's contents have changed. // |net_log| the NetLog to log progress into. - ProxyScriptDeciderPoller(ChangeCallback callback, - const ProxyConfig& config, - bool proxy_resolver_expects_pac_bytes, - ProxyScriptFetcher* proxy_script_fetcher, - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher, - int init_net_error, - const scoped_refptr<ProxyResolverScriptData>& - init_script_data, - NetLog* net_log) + PacFileDeciderPoller(ChangeCallback callback, + const ProxyConfig& config, + bool proxy_resolver_expects_pac_bytes, + PacFileFetcher* pac_file_fetcher, + DhcpPacFileFetcher* dhcp_pac_file_fetcher, + int init_net_error, + const scoped_refptr<PacFileData>& init_script_data, + NetLog* net_log) : change_callback_(callback), config_(config), proxy_resolver_expects_pac_bytes_(proxy_resolver_expects_pac_bytes), - proxy_script_fetcher_(proxy_script_fetcher), - dhcp_proxy_script_fetcher_(dhcp_proxy_script_fetcher), + pac_file_fetcher_(pac_file_fetcher), + dhcp_pac_file_fetcher_(dhcp_pac_file_fetcher), last_error_(init_net_error), last_script_data_(init_script_data), last_poll_time_(TimeTicks::Now()), @@ -651,8 +648,8 @@ DCHECK(!decider_.get()); base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, base::Bind(&ProxyScriptDeciderPoller::DoPoll, - weak_factory_.GetWeakPtr()), + FROM_HERE, + base::Bind(&PacFileDeciderPoller::DoPoll, weak_factory_.GetWeakPtr()), next_poll_delay_); } @@ -676,21 +673,21 @@ void DoPoll() { last_poll_time_ = TimeTicks::Now(); - // Start the proxy script decider to see if anything has changed. + // Start the PAC file decider to see if anything has changed. // TODO(eroman): Pass a proper NetLog rather than NULL. - decider_.reset(new ProxyScriptDecider( - proxy_script_fetcher_, dhcp_proxy_script_fetcher_, NULL)); + decider_.reset( + new PacFileDecider(pac_file_fetcher_, dhcp_pac_file_fetcher_, NULL)); decider_->set_quick_check_enabled(quick_check_enabled_); int result = decider_->Start( config_, TimeDelta(), proxy_resolver_expects_pac_bytes_, - base::Bind(&ProxyScriptDeciderPoller::OnProxyScriptDeciderCompleted, + base::Bind(&PacFileDeciderPoller::OnPacFileDeciderCompleted, base::Unretained(this))); if (result != ERR_IO_PENDING) - OnProxyScriptDeciderCompleted(result); + OnPacFileDeciderCompleted(result); } - void OnProxyScriptDeciderCompleted(int result) { + void OnPacFileDeciderCompleted(int result) { if (HasScriptDataChanged(result, decider_->script_data())) { // Something has changed, we must notify the ProxyResolutionService so it // can re-initialize its ProxyResolver. Note that we post a notification @@ -699,10 +696,9 @@ // the notification. base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(&ProxyScriptDeciderPoller::NotifyProxyServiceOfChange, + base::Bind(&PacFileDeciderPoller::NotifyProxyServiceOfChange, weak_factory_.GetWeakPtr(), result, - decider_->script_data(), - decider_->effective_config())); + decider_->script_data(), decider_->effective_config())); return; } @@ -716,7 +712,7 @@ } bool HasScriptDataChanged(int result, - const scoped_refptr<ProxyResolverScriptData>& script_data) { + const scoped_refptr<PacFileData>& script_data) { if (result != last_error_) { // Something changed -- it was failing before and now it succeeded, or // conversely it succeeded before and now it failed. Or it failed in @@ -736,10 +732,9 @@ return !script_data->Equals(last_script_data_.get()); } - void NotifyProxyServiceOfChange( - int result, - const scoped_refptr<ProxyResolverScriptData>& script_data, - const ProxyConfig& effective_config) { + void NotifyProxyServiceOfChange(int result, + const scoped_refptr<PacFileData>& script_data, + const ProxyConfig& effective_config) { // Note that |this| may be deleted after calling into the // ProxyResolutionService. change_callback_.Run(result, script_data.get(), effective_config); @@ -748,13 +743,13 @@ ChangeCallback change_callback_; ProxyConfig config_; bool proxy_resolver_expects_pac_bytes_; - ProxyScriptFetcher* proxy_script_fetcher_; - DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher_; + PacFileFetcher* pac_file_fetcher_; + DhcpPacFileFetcher* dhcp_pac_file_fetcher_; int last_error_; - scoped_refptr<ProxyResolverScriptData> last_script_data_; + scoped_refptr<PacFileData> last_script_data_; - std::unique_ptr<ProxyScriptDecider> decider_; + std::unique_ptr<PacFileDecider> decider_; TimeDelta next_poll_delay_; PacPollPolicy::Mode next_poll_mode_; @@ -768,14 +763,14 @@ bool quick_check_enabled_; - base::WeakPtrFactory<ProxyScriptDeciderPoller> weak_factory_; + base::WeakPtrFactory<PacFileDeciderPoller> weak_factory_; - DISALLOW_COPY_AND_ASSIGN(ProxyScriptDeciderPoller); + DISALLOW_COPY_AND_ASSIGN(PacFileDeciderPoller); }; // static const ProxyResolutionService::PacPollPolicy* - ProxyResolutionService::ProxyScriptDeciderPoller::poll_policy_ = NULL; + ProxyResolutionService::PacFileDeciderPoller::poll_policy_ = NULL; // ProxyResolutionService::Request -------------------------------------------- @@ -1217,11 +1212,11 @@ // this decision. If the contents of the PAC script change, or if the // result of proxy auto-discovery changes, this poller will notice it and // will trigger a re-initialization using the newly discovered PAC. - script_poller_.reset(new ProxyScriptDeciderPoller( + script_poller_.reset(new PacFileDeciderPoller( base::Bind(&ProxyResolutionService::InitializeUsingDecidedConfig, base::Unretained(this)), fetched_config_.value(), resolver_factory_->expects_pac_bytes(), - proxy_script_fetcher_.get(), dhcp_proxy_script_fetcher_.get(), result, + pac_file_fetcher_.get(), dhcp_pac_file_fetcher_.get(), result, init_proxy_resolver_->script_data(), NULL)); script_poller_->set_quick_check_enabled(quick_check_enabled_); @@ -1378,13 +1373,13 @@ return result_code; } -void ProxyResolutionService::SetProxyScriptFetchers( - std::unique_ptr<ProxyScriptFetcher> proxy_script_fetcher, - std::unique_ptr<DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher) { +void ProxyResolutionService::SetPacFileFetchers( + std::unique_ptr<PacFileFetcher> pac_file_fetcher, + std::unique_ptr<DhcpPacFileFetcher> dhcp_pac_file_fetcher) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); State previous_state = ResetProxyConfig(false); - proxy_script_fetcher_ = std::move(proxy_script_fetcher); - dhcp_proxy_script_fetcher_ = std::move(dhcp_proxy_script_fetcher); + pac_file_fetcher_ = std::move(pac_file_fetcher); + dhcp_pac_file_fetcher_ = std::move(dhcp_pac_file_fetcher); if (previous_state != STATE_NONE) ApplyProxyConfigIfAvailable(); } @@ -1394,15 +1389,15 @@ // because shutting it down also cancels its requests using the fetcher. if (init_proxy_resolver_) init_proxy_resolver_->OnShutdown(); - if (proxy_script_fetcher_) - proxy_script_fetcher_->OnShutdown(); - if (dhcp_proxy_script_fetcher_) - dhcp_proxy_script_fetcher_->OnShutdown(); + if (pac_file_fetcher_) + pac_file_fetcher_->OnShutdown(); + if (dhcp_pac_file_fetcher_) + dhcp_pac_file_fetcher_->OnShutdown(); } -ProxyScriptFetcher* ProxyResolutionService::GetProxyScriptFetcher() const { +PacFileFetcher* ProxyResolutionService::GetPacFileFetcher() const { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - return proxy_script_fetcher_.get(); + return pac_file_fetcher_.get(); } ProxyResolutionService::State ProxyResolutionService::ResetProxyConfig( @@ -1494,7 +1489,7 @@ const ProxyResolutionService::PacPollPolicy* ProxyResolutionService::set_pac_script_poll_policy( const PacPollPolicy* policy) { - return ProxyScriptDeciderPoller::set_policy(policy); + return PacFileDeciderPoller::set_policy(policy); } // static @@ -1556,8 +1551,8 @@ init_proxy_resolver_.reset(new InitProxyResolver()); init_proxy_resolver_->set_quick_check_enabled(quick_check_enabled_); int rv = init_proxy_resolver_->Start( - &resolver_, resolver_factory_.get(), proxy_script_fetcher_.get(), - dhcp_proxy_script_fetcher_.get(), net_log_, fetched_config_.value(), + &resolver_, resolver_factory_.get(), pac_file_fetcher_.get(), + dhcp_pac_file_fetcher_.get(), net_log_, fetched_config_.value(), wait_delay, base::Bind(&ProxyResolutionService::OnInitProxyResolverComplete, base::Unretained(this))); @@ -1568,7 +1563,7 @@ void ProxyResolutionService::InitializeUsingDecidedConfig( int decider_result, - ProxyResolverScriptData* script_data, + PacFileData* script_data, const ProxyConfig& effective_config) { DCHECK(fetched_config_); DCHECK(fetched_config_->HasAutomaticSettings());
diff --git a/net/proxy_resolution/proxy_service.h b/net/proxy_resolution/proxy_service.h index e7c867a..0bb7ab5 100644 --- a/net/proxy_resolution/proxy_service.h +++ b/net/proxy_resolution/proxy_service.h
@@ -36,14 +36,14 @@ namespace net { -class DhcpProxyScriptFetcher; +class DhcpPacFileFetcher; class NetLog; class NetLogWithSource; class ProxyDelegate; class ProxyResolver; class ProxyResolverFactory; -class ProxyResolverScriptData; -class ProxyScriptFetcher; +class PacFileData; +class PacFileFetcher; // This class can be used to resolve the proxy server to use when loading a // HTTP(S) URL. It uses the given ProxyResolver to handle the actual proxy @@ -190,12 +190,12 @@ // Returns the LoadState for this |request| which must be non-NULL. LoadState GetLoadState(const Request* request) const; - // Sets the ProxyScriptFetcher and DhcpProxyScriptFetcher dependencies. This + // Sets the PacFileFetcher and DhcpPacFileFetcher dependencies. This // is needed if the ProxyResolver is of type ProxyResolverWithoutFetch. - void SetProxyScriptFetchers( - std::unique_ptr<ProxyScriptFetcher> proxy_script_fetcher, - std::unique_ptr<DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher); - ProxyScriptFetcher* GetProxyScriptFetcher() const; + void SetPacFileFetchers( + std::unique_ptr<PacFileFetcher> pac_file_fetcher, + std::unique_ptr<DhcpPacFileFetcher> dhcp_pac_file_fetcher); + PacFileFetcher* GetPacFileFetcher() const; // Cancels all network requests, and prevents the service from creating new // ones. Must be called before the URLRequestContext the @@ -298,7 +298,7 @@ FRIEND_TEST_ALL_PREFIXES(ProxyServiceTest, UpdateConfigFromPACToDirect); friend class Request; class InitProxyResolver; - class ProxyScriptDeciderPoller; + class PacFileDeciderPoller; typedef std::set<scoped_refptr<Request>> PendingRequests; @@ -371,10 +371,9 @@ void InitializeUsingLastFetchedConfig(); // Start the initialization skipping past the "decision" phase. - void InitializeUsingDecidedConfig( - int decider_result, - ProxyResolverScriptData* script_data, - const ProxyConfig& effective_config); + void InitializeUsingDecidedConfig(int decider_result, + PacFileData* script_data, + const ProxyConfig& effective_config); // NetworkChangeNotifier::IPAddressObserver // When this is called, we re-fetch PAC scripts and re-run WPAD. @@ -415,21 +414,21 @@ // The fetcher to use when downloading PAC scripts for the ProxyResolver. // This dependency can be NULL if our ProxyResolver has no need for // external PAC script fetching. - std::unique_ptr<ProxyScriptFetcher> proxy_script_fetcher_; + std::unique_ptr<PacFileFetcher> pac_file_fetcher_; // The fetcher to use when attempting to download the most appropriate PAC // script configured in DHCP, if any. Can be NULL if the ProxyResolver has // no need for DHCP PAC script fetching. - std::unique_ptr<DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher_; + std::unique_ptr<DhcpPacFileFetcher> dhcp_pac_file_fetcher_; // Helper to download the PAC script (wpad + custom) and apply fallback rules. // - // Note that the declaration is important here: |proxy_script_fetcher_| and + // Note that the declaration is important here: |pac_file_fetcher_| and // |proxy_resolver_| must outlive |init_proxy_resolver_|. std::unique_ptr<InitProxyResolver> init_proxy_resolver_; // Helper to poll the PAC script for changes. - std::unique_ptr<ProxyScriptDeciderPoller> script_poller_; + std::unique_ptr<PacFileDeciderPoller> script_poller_; State current_state_; @@ -448,7 +447,7 @@ // The amount of time to stall requests following IP address changes. base::TimeDelta stall_proxy_auto_config_delay_; - // Whether child ProxyScriptDeciders should use QuickCheck + // Whether child PacFileDeciders should use QuickCheck bool quick_check_enabled_; // The method to use for sanitizing URLs seen by the proxy resolver.
diff --git a/net/proxy_resolution/proxy_service_unittest.cc b/net/proxy_resolution/proxy_service_unittest.cc index 53bc1b7..6af3466e 100644 --- a/net/proxy_resolution/proxy_service_unittest.cc +++ b/net/proxy_resolution/proxy_service_unittest.cc
@@ -963,9 +963,9 @@ EXPECT_EQ("foopy_valid:8080", info.proxy_server().ToURI()); } -TEST_F(ProxyServiceTest, ProxyScriptFetcherFailsDownloadingMandatoryPac) { - // Test what happens when the ProxyScriptResolver fails to download a - // mandatory PAC script. +TEST_F(ProxyServiceTest, PacFileFetcherFailsDownloadingMandatoryPac) { + // Test what happens when the ProxyResolver fails to download a mandatory PAC + // script. ProxyConfig config( ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"))); @@ -1026,10 +1026,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start resolve request. GURL url("http://www.google.com/"); @@ -1050,7 +1049,7 @@ EXPECT_FALSE(fetcher->has_pending_request()); ASSERT_EQ(0u, factory->pending_requests().size()); - // Since ProxyScriptDecider failed to identify a valid PAC and PAC was + // Since PacFileDecider failed to identify a valid PAC and PAC was // mandatory for this configuration, the ProxyResolutionService must not // implicitly fall-back to DIRECT. EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, @@ -1834,10 +1833,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 3 requests. @@ -1870,15 +1868,12 @@ // Nothing has been sent to the factory yet. EXPECT_TRUE(factory->pending_requests().empty()); - EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, - service.GetLoadState(request1)); - EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, - service.GetLoadState(request2)); - EXPECT_EQ(LOAD_STATE_DOWNLOADING_PROXY_SCRIPT, - service.GetLoadState(request3)); + EXPECT_EQ(LOAD_STATE_DOWNLOADING_PAC_FILE, service.GetLoadState(request1)); + EXPECT_EQ(LOAD_STATE_DOWNLOADING_PAC_FILE, service.GetLoadState(request2)); + EXPECT_EQ(LOAD_STATE_DOWNLOADING_PAC_FILE, service.GetLoadState(request3)); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -1928,7 +1923,7 @@ EXPECT_LE(info3.proxy_resolve_start_time(), info3.proxy_resolve_end_time()); } -// Test changing the ProxyScriptFetcher while PAC download is in progress. +// Test changing the PacFileFetcher while PAC download is in progress. TEST_F(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { const GURL url1("http://request1"); const GURL url2("http://request2"); @@ -1942,10 +1937,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 2 jobs. @@ -1967,16 +1961,15 @@ EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. // We now change out the ProxyResolutionService's script fetcher. We should // restart the initialization with the new fetcher. - fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Nothing has been sent to the factory yet. EXPECT_TRUE(factory->pending_requests().empty()); @@ -2004,10 +1997,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 3 requests. ProxyInfo info1; @@ -2046,7 +2038,7 @@ service.CancelRequest(request2); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -2105,10 +2097,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 2 requests. @@ -2189,10 +2180,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 2 requests. @@ -2266,10 +2256,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 2 jobs. @@ -2329,10 +2318,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 requests. @@ -2387,7 +2375,7 @@ // Delete the ProxyResolutionService while InitProxyResolver has an outstanding // request to the script fetcher. When run under valgrind, should not -// have any memory errors (used to be that the ProxyScriptFetcher was +// have any memory errors (used to be that the PacFileFetcher was // being deleted prior to the InitProxyResolver). TEST_F(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { ProxyConfig config = @@ -2399,10 +2387,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -2416,7 +2403,7 @@ // Check that nothing has been sent to the proxy resolver factory yet. ASSERT_EQ(0u, factory->pending_requests().size()); - // InitProxyResolver should have issued a request to the ProxyScriptFetcher + // InitProxyResolver should have issued a request to the PacFileFetcher // and be waiting on that to complete. EXPECT_TRUE(fetcher->has_pending_request()); EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); @@ -2497,7 +2484,7 @@ EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); // Successfully set the autodetect script. - EXPECT_EQ(ProxyResolverScriptData::TYPE_AUTO_DETECT, + EXPECT_EQ(PacFileData::TYPE_AUTO_DETECT, factory->pending_requests()[0]->script_data()->type()); factory->pending_requests()[0]->CompleteNowWithForwarder(OK, &resolver); @@ -2541,10 +2528,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), &log); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Disable the "wait after IP address changes" hack, so this unit-test can // complete quickly. @@ -2567,7 +2553,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -2664,10 +2650,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -2686,7 +2671,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. // // We simulate a failed download attempt, the proxy service should now @@ -2772,10 +2757,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -2794,7 +2778,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -2886,10 +2870,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -2908,7 +2891,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -2997,10 +2980,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -3019,7 +3001,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -3161,10 +3143,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); // Start 1 request. @@ -3183,7 +3164,7 @@ EXPECT_TRUE(factory->pending_requests().empty()); // At this point the ProxyResolutionService should be waiting for the - // ProxyScriptFetcher to invoke its completion callback, notifying it of + // PacFileFetcher to invoke its completion callback, notifying it of // PAC script download completion. fetcher->NotifyFetchCompletion(OK, kValidPacScript1); @@ -3538,10 +3519,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); ProxyInfo info; TestCompletionCallback callback; @@ -3572,10 +3552,9 @@ ProxyResolutionService service(base::WrapUnique(config_service), base::WrapUnique(factory), nullptr); - MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetchers( - base::WrapUnique(fetcher), - std::make_unique<DoNothingDhcpProxyScriptFetcher>()); + MockPacFileFetcher* fetcher = new MockPacFileFetcher; + service.SetPacFileFetchers(base::WrapUnique(fetcher), + std::make_unique<DoNothingDhcpPacFileFetcher>()); service.OnShutdown();
diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc index 2bfbec17..31fcc564 100644 --- a/net/url_request/url_request_ftp_job_unittest.cc +++ b/net/url_request/url_request_ftp_job_unittest.cc
@@ -44,11 +44,10 @@ MockProxyResolverFactory() : ProxyResolverFactory(false), resolver_(nullptr) {} - int CreateProxyResolver( - const scoped_refptr<ProxyResolverScriptData>& pac_script, - std::unique_ptr<ProxyResolver>* resolver, - const CompletionCallback& callback, - std::unique_ptr<Request>* request) override { + int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script, + std::unique_ptr<ProxyResolver>* resolver, + const CompletionCallback& callback, + std::unique_ptr<Request>* request) override { EXPECT_FALSE(resolver_); std::unique_ptr<MockAsyncProxyResolver> owned_resolver( new MockAsyncProxyResolver());
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 066b015..e433a22f 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc
@@ -69,7 +69,7 @@ #include "net/url_request/url_request_job_factory.h" #include "net/url_request/url_request_redirect_job.h" #include "net/url_request/url_request_throttler_manager.h" -#include "net/websockets/websocket_handshake_stream_base.h" +#include "net/url_request/websocket_handshake_userdata_key.h" #include "url/origin.h" #if defined(OS_ANDROID) @@ -552,8 +552,8 @@ priority_, &transaction_); if (rv == OK && request_info_.url.SchemeIsWSOrWSS()) { - base::SupportsUserData::Data* data = request_->GetUserData( - WebSocketHandshakeStreamBase::CreateHelper::DataKey()); + base::SupportsUserData::Data* data = + request_->GetUserData(kWebSocketHandshakeUserDataKey); if (data) { transaction_->SetWebSocketHandshakeStreamCreateHelper( static_cast<WebSocketHandshakeStreamBase::CreateHelper*>(data));
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc index 73d11c14..fb3c226 100644 --- a/net/url_request/url_request_http_job_unittest.cc +++ b/net/url_request/url_request_http_job_unittest.cc
@@ -39,7 +39,7 @@ #include "net/url_request/url_request_job_factory_impl.h" #include "net/url_request/url_request_status.h" #include "net/url_request/url_request_test_util.h" -#include "net/websockets/websocket_handshake_stream_base.h" +#include "net/url_request/websocket_handshake_userdata_key.h" #include "net/websockets/websocket_test_util.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -1581,7 +1581,7 @@ auto websocket_stream_create_helper = std::make_unique<TestWebSocketHandshakeStreamCreateHelper>(); - req_->SetUserData(WebSocketHandshakeStreamBase::CreateHelper::DataKey(), + req_->SetUserData(kWebSocketHandshakeUserDataKey, std::move(websocket_stream_create_helper)); req_->SetLoadFlags(LOAD_DISABLE_CACHE); req_->Start();
diff --git a/net/websockets/websocket_handshake_stream_base.h b/net/websockets/websocket_handshake_stream_base.h index d8abbc4..3a8f4f4 100644 --- a/net/websockets/websocket_handshake_stream_base.h +++ b/net/websockets/websocket_handshake_stream_base.h
@@ -18,7 +18,6 @@ #include "base/supports_user_data.h" #include "net/base/net_export.h" #include "net/http/http_stream.h" -#include "net/url_request/websocket_handshake_userdata_key.h" #include "net/websockets/websocket_deflate_parameters.h" #include "net/websockets/websocket_stream.h" @@ -43,11 +42,6 @@ // WebSocket connection. class NET_EXPORT_PRIVATE CreateHelper : public base::SupportsUserData::Data { public: - // Returns a key to use to lookup this object in a URLRequest object. It is - // different from any other key that is supplied to - // URLRequest::SetUserData(). - static const void* DataKey() { return kWebSocketHandshakeUserDataKey; } - ~CreateHelper() override {} // Create a WebSocketBasicHandshakeStream. This is called after the
diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc index b9c20733..9073045f 100644 --- a/net/websockets/websocket_stream.cc +++ b/net/websockets/websocket_stream.cc
@@ -21,6 +21,7 @@ #include "net/url_request/redirect_info.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" +#include "net/url_request/websocket_handshake_userdata_key.h" #include "net/websockets/websocket_errors.h" #include "net/websockets/websocket_event_interface.h" #include "net/websockets/websocket_handshake_constants.h" @@ -140,9 +141,8 @@ url_request_->set_initiator(origin); url_request_->set_site_for_cookies(site_for_cookies); - url_request_->SetUserData( - WebSocketHandshakeStreamBase::CreateHelper::DataKey(), - std::move(create_helper)); + url_request_->SetUserData(kWebSocketHandshakeUserDataKey, + std::move(create_helper)); url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_BYPASS_CACHE); connect_delegate_->OnCreateRequest(url_request_.get()); }
diff --git a/remoting/host/current_process_stats_agent.cc b/remoting/host/current_process_stats_agent.cc index 35ff5ac..8f4f5f1 100644 --- a/remoting/host/current_process_stats_agent.cc +++ b/remoting/host/current_process_stats_agent.cc
@@ -5,6 +5,13 @@ #include "remoting/host/current_process_stats_agent.h" #include "base/process/process_metrics.h" +#include "build/build_config.h" + +#if defined(OS_WIN) +#include <windows.h> // This include must come first. + +#include <psapi.h> +#endif namespace remoting { @@ -20,7 +27,15 @@ current.set_process_name(process_name_); current.set_processor_usage(metrics_->GetPlatformIndependentCPUUsage()); current.set_working_set_size(metrics_->GetWorkingSetSize()); - current.set_pagefile_size(metrics_->GetPagefileUsage()); + +// The concept of "Page File" is only well defined on Windows. +#if defined(OS_WIN) + PROCESS_MEMORY_COUNTERS pmc; + if (::GetProcessMemoryInfo(::GetCurrentProcess(), &pmc, sizeof(pmc))) { + current.set_working_set_size(pmc.PagefileUsage); + } +#endif + return current; }
diff --git a/services/network/proxy_resolver_factory_mojo.cc b/services/network/proxy_resolver_factory_mojo.cc index c397eed4..f819acc 100644 --- a/services/network/proxy_resolver_factory_mojo.cc +++ b/services/network/proxy_resolver_factory_mojo.cc
@@ -206,9 +206,8 @@ ProxyResolverMojo::Job::~Job() {} net::LoadState ProxyResolverMojo::Job::GetLoadState() { - return dns_request_in_progress() - ? net::LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT - : net::LOAD_STATE_RESOLVING_PROXY_FOR_URL; + return dns_request_in_progress() ? net::LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE + : net::LOAD_STATE_RESOLVING_PROXY_FOR_URL; } void ProxyResolverMojo::Job::OnConnectionError() { @@ -290,7 +289,7 @@ public ProxyResolverFactory::Request { public: Job(ProxyResolverFactoryMojo* factory, - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, + const scoped_refptr<net::PacFileData>& pac_script, std::unique_ptr<net::ProxyResolver>* resolver, const net::CompletionCallback& callback, std::unique_ptr<net::ProxyResolverErrorObserver> error_observer) @@ -356,14 +355,13 @@ ProxyResolverFactoryMojo::~ProxyResolverFactoryMojo() = default; int ProxyResolverFactoryMojo::CreateProxyResolver( - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, + const scoped_refptr<net::PacFileData>& pac_script, std::unique_ptr<net::ProxyResolver>* resolver, const net::CompletionCallback& callback, std::unique_ptr<net::ProxyResolverFactory::Request>* request) { DCHECK(resolver); DCHECK(request); - if (pac_script->type() != - net::ProxyResolverScriptData::TYPE_SCRIPT_CONTENTS || + if (pac_script->type() != net::PacFileData::TYPE_SCRIPT_CONTENTS || pac_script->utf16().empty()) { return net::ERR_PAC_SCRIPT_FAILED; }
diff --git a/services/network/proxy_resolver_factory_mojo.h b/services/network/proxy_resolver_factory_mojo.h index f3c86f5..d924158 100644 --- a/services/network/proxy_resolver_factory_mojo.h +++ b/services/network/proxy_resolver_factory_mojo.h
@@ -20,7 +20,7 @@ class HostResolver; class NetLog; class ProxyResolverErrorObserver; -class ProxyResolverScriptData; +class PacFileData; } // namespace net namespace network { @@ -39,11 +39,10 @@ ~ProxyResolverFactoryMojo() override; // ProxyResolverFactory override. - int CreateProxyResolver( - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, - std::unique_ptr<net::ProxyResolver>* resolver, - const net::CompletionCallback& callback, - std::unique_ptr<Request>* request) override; + int CreateProxyResolver(const scoped_refptr<net::PacFileData>& pac_script, + std::unique_ptr<net::ProxyResolver>* resolver, + const net::CompletionCallback& callback, + std::unique_ptr<Request>* request) override; private: class Job;
diff --git a/services/network/proxy_resolver_factory_mojo_unittest.cc b/services/network/proxy_resolver_factory_mojo_unittest.cc index fbc7ef3..03304f4b 100644 --- a/services/network/proxy_resolver_factory_mojo_unittest.cc +++ b/services/network/proxy_resolver_factory_mojo_unittest.cc
@@ -562,8 +562,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::ReturnResult(kScriptData, net::OK)); net::TestCompletionCallback callback; - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; ASSERT_EQ( net::OK, @@ -598,8 +598,7 @@ TEST_F(ProxyResolverFactoryMojoTest, CreateProxyResolver_Empty) { net::TestCompletionCallback callback; - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8("")); + scoped_refptr<net::PacFileData> pac_script(net::PacFileData::FromUTF8("")); std::unique_ptr<net::ProxyResolverFactory::Request> request; EXPECT_EQ( net::ERR_PAC_SCRIPT_FAILED, @@ -610,8 +609,8 @@ TEST_F(ProxyResolverFactoryMojoTest, CreateProxyResolver_Url) { net::TestCompletionCallback callback; - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromURL(GURL(kExampleUrl))); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromURL(GURL(kExampleUrl))); std::unique_ptr<net::ProxyResolverFactory::Request> request; EXPECT_EQ( net::ERR_PAC_SCRIPT_FAILED, @@ -626,8 +625,8 @@ net::ERR_PAC_STATUS_NOT_OK)); net::TestCompletionCallback callback; - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; EXPECT_EQ( net::ERR_PAC_STATUS_NOT_OK, @@ -643,8 +642,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::DropBoth(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -658,8 +657,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::DropClient(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -673,8 +672,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::DropResolver(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -689,8 +688,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::DropResolver(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -706,8 +705,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::WaitForClientDisconnect(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -725,8 +724,8 @@ mock_proxy_resolver_factory_->AddCreateProxyResolverAction( CreateProxyResolverAction::MakeDnsRequest(kScriptData)); - scoped_refptr<net::ProxyResolverScriptData> pac_script( - net::ProxyResolverScriptData::FromUTF8(kScriptData)); + scoped_refptr<net::PacFileData> pac_script( + net::PacFileData::FromUTF8(kScriptData)); std::unique_ptr<net::ProxyResolverFactory::Request> request; net::TestCompletionCallback callback; EXPECT_EQ( @@ -903,8 +902,7 @@ EXPECT_EQ(net::LOAD_STATE_RESOLVING_PROXY_FOR_URL, request->load_state()); host_resolver_.waiter().WaitForEvent(MockHostResolver::DNS_REQUEST); - EXPECT_EQ(net::LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, - request->load_state()); + EXPECT_EQ(net::LOAD_STATE_RESOLVING_HOST_IN_PAC_FILE, request->load_state()); mock_proxy_resolver_.ClearBlockedClients(); request->WaitForResult(); }
diff --git a/services/network/proxy_service_mojo.cc b/services/network/proxy_service_mojo.cc index e3daa18b..b52db8d7 100644 --- a/services/network/proxy_service_mojo.cc +++ b/services/network/proxy_service_mojo.cc
@@ -20,14 +20,14 @@ std::unique_ptr<net::ProxyResolutionService> CreateProxyServiceUsingMojoFactory( proxy_resolver::mojom::ProxyResolverFactoryPtr mojo_proxy_factory, std::unique_ptr<net::ProxyConfigService> proxy_config_service, - std::unique_ptr<net::ProxyScriptFetcher> proxy_script_fetcher, - std::unique_ptr<net::DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher, + std::unique_ptr<net::PacFileFetcher> pac_file_fetcher, + std::unique_ptr<net::DhcpPacFileFetcher> dhcp_pac_file_fetcher, net::HostResolver* host_resolver, net::NetLog* net_log, net::NetworkDelegate* network_delegate) { DCHECK(proxy_config_service); - DCHECK(proxy_script_fetcher); - DCHECK(dhcp_proxy_script_fetcher); + DCHECK(pac_file_fetcher); + DCHECK(dhcp_pac_file_fetcher); DCHECK(host_resolver); std::unique_ptr<net::ProxyResolutionService> proxy_resolution_service( @@ -41,8 +41,8 @@ net_log)); // Configure fetchers to use for PAC script downloads and auto-detect. - proxy_resolution_service->SetProxyScriptFetchers( - std::move(proxy_script_fetcher), std::move(dhcp_proxy_script_fetcher)); + proxy_resolution_service->SetPacFileFetchers( + std::move(pac_file_fetcher), std::move(dhcp_pac_file_fetcher)); return proxy_resolution_service; }
diff --git a/services/network/proxy_service_mojo.h b/services/network/proxy_service_mojo.h index 3930c02..9827ae0 100644 --- a/services/network/proxy_service_mojo.h +++ b/services/network/proxy_service_mojo.h
@@ -16,7 +16,7 @@ class NetLog; class NetworkDelegate; class ProxyConfigService; -class ProxyScriptFetcher; +class PacFileFetcher; class ProxyResolutionService; } // namespace net @@ -26,10 +26,10 @@ // to a Mojo proxy resolver service. This proxy service polls // |proxy_config_service| to notice when the proxy settings change. // -// |proxy_script_fetcher| specifies the dependency to use for downloading +// |pac_file_fetcher| specifies the dependency to use for downloading // any PAC scripts. // -// |dhcp_proxy_script_fetcher| specifies the dependency to use for attempting +// |dhcp_pac_file_fetcher| specifies the dependency to use for attempting // to retrieve the most appropriate PAC script configured in DHCP. // // |host_resolver| points to the host resolving dependency the PAC script @@ -39,8 +39,8 @@ std::unique_ptr<net::ProxyResolutionService> CreateProxyServiceUsingMojoFactory( proxy_resolver::mojom::ProxyResolverFactoryPtr mojo_proxy_factory, std::unique_ptr<net::ProxyConfigService> proxy_config_service, - std::unique_ptr<net::ProxyScriptFetcher> proxy_script_fetcher, - std::unique_ptr<net::DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher, + std::unique_ptr<net::PacFileFetcher> pac_file_fetcher, + std::unique_ptr<net::DhcpPacFileFetcher> dhcp_pac_file_fetcher, net::HostResolver* host_resolver, net::NetLog* net_log, net::NetworkDelegate* network_delegate);
diff --git a/services/network/url_request_context_builder_mojo.cc b/services/network/url_request_context_builder_mojo.cc index 9e83d08..6fd9636 100644 --- a/services/network/url_request_context_builder_mojo.cc +++ b/services/network/url_request_context_builder_mojo.cc
@@ -17,12 +17,12 @@ namespace network { URLRequestContextBuilderMojo::URLRequestContextBuilderMojo() - : dhcp_fetcher_factory_(new net::DhcpProxyScriptFetcherFactory()) {} + : dhcp_fetcher_factory_(new net::DhcpPacFileFetcherFactory()) {} URLRequestContextBuilderMojo::~URLRequestContextBuilderMojo() = default; void URLRequestContextBuilderMojo::SetDhcpFetcherFactory( - std::unique_ptr<net::DhcpProxyScriptFetcherFactory> dhcp_fetcher_factory) { + std::unique_ptr<net::DhcpPacFileFetcherFactory> dhcp_fetcher_factory) { dhcp_fetcher_factory_ = std::move(dhcp_fetcher_factory); } @@ -52,14 +52,14 @@ #if !defined(OS_IOS) if (mojo_proxy_resolver_factory_) { - std::unique_ptr<net::DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher = + std::unique_ptr<net::DhcpPacFileFetcher> dhcp_pac_file_fetcher = dhcp_fetcher_factory_->Create(url_request_context); - std::unique_ptr<net::ProxyScriptFetcher> proxy_script_fetcher = - std::make_unique<net::ProxyScriptFetcherImpl>(url_request_context); + std::unique_ptr<net::PacFileFetcher> pac_file_fetcher = + std::make_unique<net::PacFileFetcherImpl>(url_request_context); return CreateProxyServiceUsingMojoFactory( std::move(mojo_proxy_resolver_factory_), - std::move(proxy_config_service), std::move(proxy_script_fetcher), - std::move(dhcp_proxy_script_fetcher), host_resolver, net_log, + std::move(proxy_config_service), std::move(pac_file_fetcher), + std::move(dhcp_pac_file_fetcher), host_resolver, net_log, network_delegate); } #endif
diff --git a/services/network/url_request_context_builder_mojo.h b/services/network/url_request_context_builder_mojo.h index de7a09e6..4fd04b5 100644 --- a/services/network/url_request_context_builder_mojo.h +++ b/services/network/url_request_context_builder_mojo.h
@@ -37,10 +37,10 @@ URLRequestContextBuilderMojo(); ~URLRequestContextBuilderMojo() override; - // Overrides default DhcpProxyScriptFetcherFactory. Ignored if no + // Overrides default DhcpPacFileFetcherFactory. Ignored if no // proxy_resolver::mojom::ProxyResolverFactory is provided. void SetDhcpFetcherFactory( - std::unique_ptr<net::DhcpProxyScriptFetcherFactory> dhcp_fetcher_factory); + std::unique_ptr<net::DhcpPacFileFetcherFactory> dhcp_fetcher_factory); // Sets Mojo factory used to create ProxyResolvers. If not set, falls back to // URLRequestContext's default behavior. @@ -67,7 +67,7 @@ net::NetworkDelegate* network_delegate, net::NetLog* net_log) override; - std::unique_ptr<net::DhcpProxyScriptFetcherFactory> dhcp_fetcher_factory_; + std::unique_ptr<net::DhcpPacFileFetcherFactory> dhcp_fetcher_factory_; proxy_resolver::mojom::ProxyResolverFactoryPtr mojo_proxy_resolver_factory_;
diff --git a/services/proxy_resolver/proxy_resolver_factory_impl.cc b/services/proxy_resolver/proxy_resolver_factory_impl.cc index f2616fc5..cad31d42 100644 --- a/services/proxy_resolver/proxy_resolver_factory_impl.cc +++ b/services/proxy_resolver/proxy_resolver_factory_impl.cc
@@ -21,7 +21,7 @@ class ProxyResolverFactoryImpl::Job { public: Job(ProxyResolverFactoryImpl* parent, - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, + const scoped_refptr<net::PacFileData>& pac_script, net::ProxyResolverV8TracingFactory* proxy_resolver_factory, mojo::InterfaceRequest<mojom::ProxyResolver> request, mojom::ProxyResolverFactoryRequestClientPtr client, @@ -47,7 +47,7 @@ ProxyResolverFactoryImpl::Job::Job( ProxyResolverFactoryImpl* factory, - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, + const scoped_refptr<net::PacFileData>& pac_script, net::ProxyResolverV8TracingFactory* proxy_resolver_factory, mojo::InterfaceRequest<mojom::ProxyResolver> request, mojom::ProxyResolverFactoryRequestClientPtr client, @@ -122,7 +122,7 @@ // The Job will call RemoveJob on |this| when either the create request // finishes or |request| or |client| encounters a connection error. std::unique_ptr<Job> job = std::make_unique<Job>( - this, net::ProxyResolverScriptData::FromUTF8(pac_script), + this, net::PacFileData::FromUTF8(pac_script), proxy_resolver_impl_factory_.get(), std::move(request), std::move(client), service_ref_->Clone()); Job* job_ptr = job.get();
diff --git a/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc b/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc index 4984df5..6093d894 100644 --- a/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc +++ b/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc
@@ -67,7 +67,7 @@ ~TestProxyResolverFactory() override {} void CreateProxyResolverV8Tracing( - const scoped_refptr<net::ProxyResolverScriptData>& pac_script, + const scoped_refptr<net::PacFileData>& pac_script, std::unique_ptr<net::ProxyResolverV8Tracing::Bindings> bindings, std::unique_ptr<net::ProxyResolverV8Tracing>* resolver, const net::CompletionCallback& callback,
diff --git a/services/service_manager/public/cpp/test/common_initialization.cc b/services/service_manager/public/cpp/test/common_initialization.cc index c59692a..e7adb878 100644 --- a/services/service_manager/public/cpp/test/common_initialization.cc +++ b/services/service_manager/public/cpp/test/common_initialization.cc
@@ -23,10 +23,9 @@ namespace service_manager { -int InitializeAndLaunchUnitTests( - int argc, - char** argv, - const base::RunTestSuiteCallback& run_test_suite) { +int InitializeAndLaunchUnitTests(int argc, + char** argv, + base::RunTestSuiteCallback run_test_suite) { catalog::Catalog::SetDefaultCatalogManifest( service_manager::test::CreateTestCatalog()); @@ -44,7 +43,7 @@ ipc_thread.task_runner(), mojo::edk::ScopedIPCSupport::ShutdownPolicy::CLEAN); - return base::LaunchUnitTests(argc, argv, run_test_suite); + return base::LaunchUnitTests(argc, argv, std::move(run_test_suite)); } } // namespace service_manager
diff --git a/services/service_manager/public/cpp/test/common_initialization.h b/services/service_manager/public/cpp/test/common_initialization.h index 2549226e..a31fcbec 100644 --- a/services/service_manager/public/cpp/test/common_initialization.h +++ b/services/service_manager/public/cpp/test/common_initialization.h
@@ -13,10 +13,9 @@ // service tests. This method exists so that different test runners can use // different base::TestSuite instances, but still use the common mojo // initialization. -int InitializeAndLaunchUnitTests( - int argc, - char** argv, - const base::RunTestSuiteCallback& run_test_suite); +int InitializeAndLaunchUnitTests(int argc, + char** argv, + base::RunTestSuiteCallback run_test_suite); } // namespace service_manager
diff --git a/sql/connection.h b/sql/connection.h index 4d84bb8..528f1e9 100644 --- a/sql/connection.h +++ b/sql/connection.h
@@ -166,7 +166,7 @@ // // If no callback is set, the default action is to crash in debug // mode or return failure in release mode. - typedef base::Callback<void(int, Statement*)> ErrorCallback; + typedef base::RepeatingCallback<void(int, Statement*)> ErrorCallback; void set_error_callback(const ErrorCallback& callback) { error_callback_ = callback; } @@ -563,7 +563,7 @@ // Accessors for global error-expecter, for injecting behavior during tests. // See test/scoped_error_expecter.h. - typedef base::Callback<bool(int)> ErrorExpecterCallback; + typedef base::RepeatingCallback<bool(int)> ErrorExpecterCallback; static ErrorExpecterCallback* current_expecter_cb_; static void SetErrorExpecter(ErrorExpecterCallback* expecter); static void ResetErrorExpecter();
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc index c09106f..3042fd7 100644 --- a/sql/connection_unittest.cc +++ b/sql/connection_unittest.cc
@@ -90,8 +90,8 @@ sql::Connection& db, const char* function_name, int args, - base::Callback<void(sqlite3_context*,int,sqlite3_value**)> cb) - : db_(db.db_), function_name_(function_name), cb_(cb) { + base::RepeatingCallback<void(sqlite3_context*, int, sqlite3_value**)> cb) + : db_(db.db_), function_name_(function_name), cb_(std::move(cb)) { sqlite3_create_function_v2(db_, function_name, args, SQLITE_UTF8, this, &Run, NULL, NULL, NULL); } @@ -109,7 +109,7 @@ sqlite3* db_; const char* function_name_; - base::Callback<void(sqlite3_context*,int,sqlite3_value**)> cb_; + base::RepeatingCallback<void(sqlite3_context*, int, sqlite3_value**)> cb_; DISALLOW_COPY_AND_ASSIGN(ScopedScalarFunction); }; @@ -117,10 +117,8 @@ // Allow a test to add a SQLite commit hook in a scoped context. class ScopedCommitHook { public: - ScopedCommitHook(sql::Connection& db, - base::Callback<int(void)> cb) - : db_(db.db_), - cb_(cb) { + ScopedCommitHook(sql::Connection& db, base::RepeatingCallback<int()> cb) + : db_(db.db_), cb_(std::move(cb)) { sqlite3_commit_hook(db_, &Run, this); } ~ScopedCommitHook() { @@ -134,7 +132,7 @@ } sqlite3* db_; - base::Callback<int(void)> cb_; + base::RepeatingCallback<int(void)> cb_; DISALLOW_COPY_AND_ASSIGN(ScopedCommitHook); }; @@ -187,7 +185,7 @@ int error, sql::Statement* stmt) { // The ref count should not go to zero when changing the callback. EXPECT_GT(*counter, 0u); - db->set_error_callback(base::Bind(&IgnoreErrorCallback)); + db->set_error_callback(base::BindRepeating(&IgnoreErrorCallback)); EXPECT_GT(*counter, 0u); } @@ -414,7 +412,7 @@ int error = SQLITE_OK; { sql::ScopedErrorCallback sec( - &db(), base::Bind(&sql::CaptureErrorCallback, &error)); + &db(), base::BindRepeating(&sql::CaptureErrorCallback, &error)); EXPECT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); // Later versions of SQLite throw SQLITE_CONSTRAINT_UNIQUE. The specific @@ -432,7 +430,7 @@ EXPECT_EQ(SQLITE_OK, error); } - // base::Bind() can curry arguments to be passed by const reference + // base::BindRepeating() can curry arguments to be passed by const reference // to the callback function. If the callback function calls // re/set_error_callback(), the storage for those arguments can be // deleted while the callback function is still executing. @@ -444,8 +442,8 @@ { size_t count = 0; sql::ScopedErrorCallback sec( - &db(), base::Bind(&ErrorCallbackSetHelper, - &db(), &count, RefCounter(&count))); + &db(), base::BindRepeating(&ErrorCallbackSetHelper, &db(), &count, + RefCounter(&count))); EXPECT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); } @@ -454,8 +452,8 @@ { size_t count = 0; sql::ScopedErrorCallback sec( - &db(), base::Bind(&ErrorCallbackResetHelper, - &db(), &count, RefCounter(&count))); + &db(), base::BindRepeating(&ErrorCallbackResetHelper, &db(), &count, + RefCounter(&count))); EXPECT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); } @@ -733,9 +731,8 @@ ASSERT_TRUE(expecter.SawExpectedErrors()); } - db().set_error_callback(base::Bind(&RazeErrorCallback, - &db(), - SQLITE_CORRUPT)); + db().set_error_callback( + base::BindRepeating(&RazeErrorCallback, &db(), SQLITE_CORRUPT)); // When the PRAGMA calls in Open() raise SQLITE_CORRUPT, the error // callback will call RazeAndClose(). Open() will then fail and be @@ -1014,9 +1011,8 @@ // Test that poisoning the database during a transaction works (with errors). // RazeErrorCallback() poisons the database, the extra COMMIT causes // CommitTransaction() to throw an error while commiting. - db().set_error_callback(base::Bind(&RazeErrorCallback, - &db(), - SQLITE_ERROR)); + db().set_error_callback( + base::BindRepeating(&RazeErrorCallback, &db(), SQLITE_ERROR)); db().Close(); ASSERT_TRUE(db().Open(db_path())); EXPECT_TRUE(db().BeginTransaction()); @@ -1302,7 +1298,8 @@ // Function to inject pauses into statements. sql::test::ScopedScalarFunction scoper( - db(), "milliadjust", 1, base::Bind(&sqlite_adjust_millis, &time_mock)); + db(), "milliadjust", 1, + base::BindRepeating(&sqlite_adjust_millis, &time_mock)); base::HistogramTester tester; @@ -1340,7 +1337,8 @@ // Function to inject pauses into statements. sql::test::ScopedScalarFunction scoper( - db(), "milliadjust", 1, base::Bind(&sqlite_adjust_millis, &time_mock)); + db(), "milliadjust", 1, + base::BindRepeating(&sqlite_adjust_millis, &time_mock)); base::HistogramTester tester; @@ -1382,14 +1380,15 @@ // Function to inject pauses into statements. sql::test::ScopedScalarFunction scoper( - db(), "milliadjust", 1, base::Bind(&sqlite_adjust_millis, &time_mock)); + db(), "milliadjust", 1, + base::BindRepeating(&sqlite_adjust_millis, &time_mock)); base::HistogramTester tester; { // Make the commit slow. sql::test::ScopedCommitHook scoped_hook( - db(), base::Bind(adjust_commit_hook, &time_mock, 100)); + db(), base::BindRepeating(adjust_commit_hook, &time_mock, 100)); ASSERT_TRUE(db().BeginTransaction()); EXPECT_TRUE(db().Execute( "INSERT INTO foo VALUES (11, milliadjust(10))")); @@ -1643,7 +1642,7 @@ // DEATH tests not supported on Android, iOS, or Fuchsia. #if !defined(OS_ANDROID) && !defined(OS_IOS) && !defined(OS_FUCHSIA) if (DLOG_IS_ON(FATAL)) { - db().set_error_callback(base::Bind(&IgnoreErrorCallback)); + db().set_error_callback(base::BindRepeating(&IgnoreErrorCallback)); ASSERT_DEATH({ db().GetUniqueStatement("SELECT x"); }, "SQL compile error no such column: x");
diff --git a/sql/recovery_unittest.cc b/sql/recovery_unittest.cc index 75268822..66df819 100644 --- a/sql/recovery_unittest.cc +++ b/sql/recovery_unittest.cc
@@ -248,8 +248,8 @@ ASSERT_TRUE(Reopen()); int error = SQLITE_OK; - db().set_error_callback(base::Bind(&RecoveryCallback, &db(), db_path(), - kCreateTable, kCreateIndex, &error)); + db().set_error_callback(base::BindRepeating( + &RecoveryCallback, &db(), db_path(), kCreateTable, kCreateIndex, &error)); // This works before the callback is called. const char kTrivialSql[] = "SELECT COUNT(*) FROM sqlite_master"; @@ -307,8 +307,8 @@ ASSERT_TRUE(Reopen()); int error = SQLITE_OK; - db().set_error_callback(base::Bind(&RecoveryCallback, &db(), db_path(), - kCreateTable, kCreateIndex, &error)); + db().set_error_callback(base::BindRepeating( + &RecoveryCallback, &db(), db_path(), kCreateTable, kCreateIndex, &error)); // Index shows one less than originally inserted. const char kCountSql[] = "SELECT COUNT (*) FROM x";
diff --git a/sql/sqlite_features_unittest.cc b/sql/sqlite_features_unittest.cc index 867fe10..6585ce0 100644 --- a/sql/sqlite_features_unittest.cc +++ b/sql/sqlite_features_unittest.cc
@@ -54,7 +54,7 @@ // The error delegate will set |error_| and |sql_text_| when any sqlite // statement operation returns an error code. db().set_error_callback( - base::Bind(&CaptureErrorCallback, &error_, &sql_text_)); + base::BindRepeating(&CaptureErrorCallback, &error_, &sql_text_)); } void TearDown() override {
diff --git a/sql/statement_unittest.cc b/sql/statement_unittest.cc index 654629e..441781c 100644 --- a/sql/statement_unittest.cc +++ b/sql/statement_unittest.cc
@@ -66,7 +66,7 @@ int error = SQLITE_OK; sql::ScopedErrorCallback sec( - &db(), base::Bind(&sql::CaptureErrorCallback, &error)); + &db(), base::BindRepeating(&sql::CaptureErrorCallback, &error)); // Insert in the foo table the primary key. It is an error to insert // something other than an number. This error causes the error callback
diff --git a/sql/test/error_callback_support.h b/sql/test/error_callback_support.h index 21caef3..ed8e0ba 100644 --- a/sql/test/error_callback_support.h +++ b/sql/test/error_callback_support.h
@@ -13,7 +13,8 @@ // Helper to capture any errors into a local variable for testing. // For instance: // int error = SQLITE_OK; -// ScopedErrorCallback sec(db, base::Bind(&CaptureErrorCallback, &error)); +// ScopedErrorCallback sec(db, base::BindRepeating(&CaptureErrorCallback, +// &error)); // // Provoke SQLITE_CONSTRAINT on db. // EXPECT_EQ(SQLITE_CONSTRAINT, error); void CaptureErrorCallback(int* error_pointer, int error, sql::Statement* stmt);
diff --git a/sql/test/scoped_error_expecter.cc b/sql/test/scoped_error_expecter.cc index e19dc89c..77df678 100644 --- a/sql/test/scoped_error_expecter.cc +++ b/sql/test/scoped_error_expecter.cc
@@ -17,8 +17,8 @@ ScopedErrorExpecter::ScopedErrorExpecter() : checked_(false) { - callback_ = - base::Bind(&ScopedErrorExpecter::ErrorSeen, base::Unretained(this)); + callback_ = base::BindRepeating(&ScopedErrorExpecter::ErrorSeen, + base::Unretained(this)); Connection::SetErrorExpecter(&callback_); }
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 24dfb52f..7e7a91d2 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -3730,6 +3730,21 @@ "test": "viz_unittests" } ], + "isolated_scripts": [ + { + "isolate_name": "monochrome_apk_checker", + "name": "monochrome_apk_checker", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "device_os": "KTU84P", + "device_type": "hammerhead" + } + ] + } + } + ], "junit_tests": [ { "test": "base_junit_tests" @@ -11548,6 +11563,19 @@ ], "isolated_scripts": [ { + "isolate_name": "monochrome_apk_checker", + "name": "monochrome_apk_checker", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "device_os": "MMB29Q", + "device_type": "bullhead" + } + ] + } + }, + { "args": [ "--browser=android-chromium", "--device=android"
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index fd49138..8d29125 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -5675,26 +5675,6 @@ { "args": [ "--test-launcher-batch-limit=400", - "--deqp-egl-display-type=angle-vulkan" - ], - "name": "angle_deqp_gles2_vulkan_tests", - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3-384.90", - "os": "Ubuntu", - "pool": "Chrome-GPU" - } - ], - "shards": 4 - }, - "test": "angle_deqp_gles2_tests", - "use_xvfb": false - }, - { - "args": [ - "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], "name": "angle_deqp_gles31_gl_tests", @@ -15116,26 +15096,6 @@ { "args": [ "--test-launcher-batch-limit=400", - "--deqp-egl-display-type=angle-vulkan" - ], - "name": "angle_deqp_gles2_vulkan_tests", - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:1cb3-23.21.13.8816", - "os": "Windows-10", - "pool": "Chrome-GPU" - } - ], - "shards": 4 - }, - "test": "angle_deqp_gles2_tests", - "use_xvfb": false - }, - { - "args": [ - "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], "name": "angle_deqp_gles31_d3d11_tests", @@ -18287,26 +18247,6 @@ }, "test": "angle_deqp_gles2_tests", "use_xvfb": false - }, - { - "args": [ - "--test-launcher-batch-limit=400", - "--deqp-egl-display-type=angle-vulkan" - ], - "name": "angle_deqp_gles2_vulkan_tests", - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6613", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-GPU" - } - ], - "shards": 4 - }, - "test": "angle_deqp_gles2_tests", - "use_xvfb": false } ], "isolated_scripts": []
diff --git a/testing/buildbot/filters/fuchsia.net_unittests.filter b/testing/buildbot/filters/fuchsia.net_unittests.filter index e41481ad..35635a91 100644 --- a/testing/buildbot/filters/fuchsia.net_unittests.filter +++ b/testing/buildbot/filters/fuchsia.net_unittests.filter
@@ -5,7 +5,7 @@ -DiskCacheBackendTest.SimpleCacheDeleteQuickly # Exceeds FD limit, ZX-1127. --ProxyScriptFetcherImplTest.Priority +-PacFileFetcherImplTest.Priority # base::MakeFileUnreadable() doesn't work. https://crbug.com/759853 -HttpNetworkTransactionTest.UploadUnreadableFile
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 38903cb..5e4adb1 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -818,6 +818,21 @@ "label": "//mojo/android:mojo_test_apk", "type": "console_test_launcher", }, + "monochrome_apk_checker": { + "label": "//chrome/android/monochrome:monochrome_apk_checker", + "type": "script", + "script": "//chrome/android/monochrome/scripts/monochrome_apk_checker_wrapper.py", + "args": [ + "--script", + "../../chrome/android/monochrome/scripts/monochrome_apk_checker.py", + "--chrome-apk", + "apks/ChromeModernPublic.apk", + "--system-webview-apk", + "apks/SystemWebView.apk", + "--monochrome-apk", + "apks/MonochromePublic.apk", + ], + }, "monochrome_static_initializers": { "label": "//chrome/android:monochrome_static_initializers", "type": "additional_compile_target",
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index f927baa..752e7ba 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -1077,6 +1077,10 @@ 'services_unittests': {}, }, + 'monochrome_apk_checker_isolated_script': { + 'monochrome_apk_checker': {}, + }, + 'linux_chromeos_rel_mus_specific_gtests': { 'mus_ash_unittests': { 'args': [ @@ -2257,6 +2261,11 @@ 'win_specific_chromium_gtests', ], + 'marshmallow_isolated_scripts': [ + 'monochrome_apk_checker_isolated_script', + 'telemetry_perf_unittests_isolated_scripts', + ], + 'mojo_android_gtests': [ 'network_service_android_gtests', ],
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 31a9b52..a35d26db 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -186,6 +186,7 @@ 'test_suites': { 'gtest_tests': 'chromium_android_gtests', 'junit_tests': 'chromium_junit_tests', + 'isolated_scripts': 'monochrome_apk_checker_isolated_script', }, 'swarming': { 'dimension_sets': [ @@ -266,7 +267,7 @@ ], 'test_suites': { 'gtest_tests': 'chromium_android_gtests', - 'isolated_scripts': 'telemetry_perf_unittests_isolated_scripts', + 'isolated_scripts': 'marshmallow_isolated_scripts', }, 'swarming': { 'dimension_sets': [
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService b/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService index 4152c7eb..5c21c8f 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-features=NetworkService
@@ -9,7 +9,6 @@ Bug(none) external/wpt/content-security-policy/inside-worker/dedicated-script.html [ Failure Timeout ] Bug(none) external/wpt/cookies/secure/set-from-wss.https.sub.html [ Failure ] Bug(none) external/wpt/css/css-fonts/font-display/font-display.html [ Failure Timeout ] -Bug(none) external/wpt/fetch/api/request/destination/fetch-destination-iframe.https.html [ Failure ] Bug(none) external/wpt/html/browsers/offline/appcache/workers/appcache-worker.html [ Timeout ] Bug(none) external/wpt/service-workers/service-worker/claim-shared-worker-fetch.https.html [ Failure ] Bug(none) external/wpt/service-workers/service-worker/clients-get-client-types.https.html [ Failure ] @@ -137,41 +136,6 @@ crbug.com/764474 fast/loader/reload-zero-byte-plugin.html [ Failure ] crbug.com/764474 plugins/plugin-document-back-forward.html [ Crash Failure Timeout ] -# http/tests/fetch -crbug.com/778721 http/tests/fetch/referrer/origin-when-cross-origin-serviceworker-from-document.html [ Pass Crash ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/auth-base-https-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/cookie-nocors-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/cookie.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/cors-preflight.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/nocors-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/redirect-nocors.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/redirect-password.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/redirect.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker-proxied/thorough/scheme-blob.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/block-mixed-content-base-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/stream-reader.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/cors-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/redirect-credentials.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/redirect-loop-base-https-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/redirect-nocors.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/redirect-password-base-https-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/serviceworker/thorough/redirect-password-other-https.html [ Pass Failure Timeout ] -crbug.com/778721 http/tests/fetch/workers/stream-reader.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/access-control.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/auth-nocors-base-https-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/auth-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/cookie.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/cors-preflight-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/cors-preflight2-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/redirect-credentials-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/redirect-credentials.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/redirect-nocors-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/redirect-password-other-https.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/redirect-password.html [ Pass Failure ] -crbug.com/778721 http/tests/fetch/workers/thorough/scheme-blob.html [ Pass Failure ] - # Started flaking after test was rewritten in r517585. Bug(none) http/tests/devtools/service-workers/service-worker-agents.js [ Crash Pass ]
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 index 5df582a..95c562c 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
@@ -848,6 +848,8 @@ Bug(none) compositing/geometry/transformed-abs-position-inside-composited.html [ Failure ] Bug(none) fast/table/border-collapsing/001-vertical.html [ Failure ] Bug(none) fast/table/border-collapsing/001.html [ Failure ] +Bug(none) paint/invalidation/scroll/scroll-in-transformed-layer.html [ Failure ] +Bug(none) paint/invalidation/scroll/scroll-with-transformed-parent-layer.html [ Failure ] crbug.com/644358 paint/invalidation/selection/selection-after-delete.html [ Failure ] crbug.com/644358 paint/invalidation/selection/selection-after-remove.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/SlowTests b/third_party/WebKit/LayoutTests/SlowTests index 1ba9a61e..0ea3c8b7 100644 --- a/third_party/WebKit/LayoutTests/SlowTests +++ b/third_party/WebKit/LayoutTests/SlowTests
@@ -304,8 +304,10 @@ # Slow on Win Debug in part due to incremental linking. crbug.com/647192 [ Win Debug ] fast/css3-text/css3-word-break/word-break-all-ascii.html [ Slow ] -crbug.com/647192 [ Win Debug ] virtual/stable/webexposed/global-interface-listing.html [ Slow ] -crbug.com/647192 [ Win Debug ] webexposed/global-interface-listing.html [ Slow ] + +# Slow in Debug on all platforms. +crbug.com/819641 [ Debug ] virtual/stable/webexposed/global-interface-listing.html [ Slow ] +crbug.com/819641 [ Debug ] webexposed/global-interface-listing.html [ Slow ] # These tests are slow with our MESA backend. They may be less slow when we have # bots running tests on real hardware or maybe when using SwiftShader.
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 59761de7..0c789ee5 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -254,6 +254,8 @@ # ====== Layout team owned tests to here ====== +crbug.com/819617 [ Linux ] fast/text/descent-clip-in-scaled-page.html [ Failure ] + # ====== LayoutNG-only failures from here ====== # LayoutNG - is a new layout system for Blink. @@ -3317,7 +3319,7 @@ crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-av-framesize.html [ Failure Pass ] crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-av-video-bitrate.html [ Failure Pass ] crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-v-bitrate.html [ Failure Pass Timeout ] -crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-v-framerate.html [ Failure Pass ] +crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-v-framerate.html [ Failure Pass Timeout ] crbug.com/807110 external/wpt/media-source/mediasource-config-change-mp4-v-framesize.html [ Failure Pass ] # Failure and Pass for crbug.com/807110 and Timeout for crbug.com/727252. crbug.com/727252 external/wpt/media-source/mediasource-endofstream.html [ Failure Pass Timeout ] @@ -3359,15 +3361,11 @@ crbug.com/811977 virtual/new-remote-playback-pipeline/media/controls/picture-in-picture-interstitial.html [ Skip ] # Sheriff 2018-02-26 -# NOT FIXED - must be commented out to let temp disable below be committed: crbug.com/816475 [ Win7 ] external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Failure Pass ] +crbug.com/816475 [ Win7 ] external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Failure Pass ] crbug.com/816914 [ Mac ] fast/canvas/canvas-drawImage-live-video.html [ Failure Pass ] crbug.com/816766 [ Mac ] fast/dom/Window/window-focus-self.html [ Failure Pass ] crbug.com/817167 http/tests/devtools/oopif/oopif-cookies-refresh.js [ Failure Timeout Pass ] -# Temporary disable to allow webrtc bugfix to land -crbug.com/819118 external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Skip ] -crbug.com/819118 external/wpt/webrtc/RTCDTMFSender-insertDTMF.https.html [ Skip ] - # Sheriff 2018-03-01 crbug.com/817678 [ Win ] http/tests/devtools/console/console-group-similar.js [ Failure Pass ] @@ -3405,3 +3403,6 @@ # Sheriff 2018-03-06 crbug.com/681919 [ Linux Debug ] http/tests/media/media-src-suspend-after-have-metadata.html [ Timeout Pass ] crbug.com/681919 [ Linux Debug ] http/tests/media/media-src-suspend-before-have-metadata.html [ Timeout Pass ] + +# Sheriff 2018-03-07 +crbug.com/819591 virtual/threaded/animations/hit-testing/composited-with-hit-testing.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable-expected.txt deleted file mode 100644 index b52b0a9..0000000 --- a/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -PASS for LTR -PASS for RTL -foo bar baz qux quux -שוּרה שוּרה שוּרה שוּרה שוּרה
diff --git a/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable.html b/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable.html index 888fe4d..0916779 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable.html +++ b/third_party/WebKit/LayoutTests/editing/selection/extend-backward-by-word-over-non-editable.html
@@ -1,39 +1,35 @@ <!DOCTYPE html> -<pre id="log"></pre> - -<div id="ltrTextContainer" contenteditable>foo bar <span contenteditable=false>baz</span> qux quux</div> -<div id="rtlTextContainer" contenteditable dir="rtl">שוּרה שוּרה -<span contenteditable=false>שוּרה</span> -שוּרה שוּרה</div> - +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<script src="../assert_selection.js"></script> <script> -function log(s) { - document.getElementById("log").appendChild(document.createTextNode(s + "\n")); -} +selection_test( + [ + '<div contenteditable>', + 'foo bar <span contenteditable="false">baz</span>| qux quux', + '</div>', + ], + selection => selection.modify('extend', 'backward', 'word'), + [ + '<div contenteditable>', + 'foo bar |<span contenteditable="false">baz</span>^ qux quux', + '</div>', + ], + '1 LTR extend backward word'); -function placeCursorAfterFirstNoneditableChild(container) { - for (var i = 0; i < container.childNodes.length; i++) { - var node = container.childNodes[i]; - if (node.isContentEditable !== undefined && !node.isContentEditable) { - getSelection().collapse(node.nextSibling, 0); - return node; - } - } - throw "Couldn't find noneditable child of " + container.textContent; -} - -function extendBackwardByWord(container, bidiName) { - noneditableChild = placeCursorAfterFirstNoneditableChild(container); - getSelection().modify("extend", "backward", "word"); - if (getSelection().toString() === noneditableChild.textContent) - log("PASS for " + bidiName); - else - log("FAIL for " + bidiName + ", selection is \"" + getSelection() + "\" but should be \"" + noneditableChild.textContent + "\""); -} - -extendBackwardByWord(document.getElementById("ltrTextContainer"), "LTR"); -extendBackwardByWord(document.getElementById("rtlTextContainer"), "RTL"); - -if (window.testRunner) - testRunner.dumpAsText(); +const kWord = '\u05E9\u05D5\u05BC\u05E8\u05D4'; +selection_test( + [ + '<div contenteditable>', + `${kWord} ${kWord} `, + `<span contenteditable="false">${kWord}</span>| ${kWord} ${kWord}`, + '</div>', + ], + selection => selection.modify('extend', 'backward', 'word'), + [ + '<div contenteditable>', + `${kWord} ${kWord} |<span contenteditable="false">${kWord}</span>^ ${kWord} ${kWord}`, + '</div>', + ], + '2 RTL extend backward word'); </script>
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index c368320..29a9cf4 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -108354,21 +108354,11 @@ {} ] ], - "css/css-fonts/support/AD.woff": [ - [ - {} - ] - ], "css/css-fonts/support/README": [ [ {} ] ], - "css/css-fonts/support/Revalia.woff": [ - [ - {} - ] - ], "css/css-fonts/support/bar_with_corner_dot.png": [ [ {} @@ -121229,26 +121219,11 @@ {} ] ], - "css/css-text/i18n/reference/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], "css/css-text/i18n/support/BPG-Ucnobi-U.woff": [ [ {} ] ], - "css/css-text/i18n/support/GentiumPlus-R.woff": [ - [ - {} - ] - ], - "css/css-text/i18n/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], "css/css-text/letter-spacing/reference/letter-spacing-control-chars-001.ref.html": [ [ {} @@ -121354,16 +121329,6 @@ {} ] ], - "css/css-text/line-break/reference/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], - "css/css-text/line-break/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], "css/css-text/line-breaking/reference/line-breaking-001-ref.html": [ [ {} @@ -121484,11 +121449,6 @@ {} ] ], - "css/css-text/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], "css/css-text/support/pattern-grg-rgr-grg.png": [ [ {} @@ -126794,16 +126754,6 @@ {} ] ], - "css/css-writing-modes/reference/support/sileot-webfont.woff": [ - [ - {} - ] - ], - "css/css-writing-modes/reference/support/tcu-font.woff": [ - [ - {} - ] - ], "css/css-writing-modes/reference/svg-aliasing-001-ref.html": [ [ {} @@ -127399,26 +127349,6 @@ {} ] ], - "css/css-writing-modes/support/adobe-fonts/CSSFWOrientationTest.otf": [ - [ - {} - ] - ], - "css/css-writing-modes/support/adobe-fonts/CSSHWOrientationTest.otf": [ - [ - {} - ] - ], - "css/css-writing-modes/support/adobe-fonts/LICENSE": [ - [ - {} - ] - ], - "css/css-writing-modes/support/adobe-fonts/README.md": [ - [ - {} - ] - ], "css/css-writing-modes/support/bg-red-1col-2row-320x320.png": [ [ {} @@ -127734,11 +127664,6 @@ {} ] ], - "css/css-writing-modes/support/mplus-1p-regular.woff": [ - [ - {} - ] - ], "css/css-writing-modes/support/opaque-square-40x160.png": [ [ {} @@ -127949,11 +127874,6 @@ {} ] ], - "css/css-writing-modes/support/sileot-webfont.woff": [ - [ - {} - ] - ], "css/css-writing-modes/support/swatch-aqua.png": [ [ {} @@ -127999,11 +127919,6 @@ {} ] ], - "css/css-writing-modes/support/tcu-font.woff": [ - [ - {} - ] - ], "css/css-writing-modes/support/test-bl.png": [ [ {} @@ -128714,11 +128629,6 @@ {} ] ], - "css/cssom/CSSKeyframeRule-expected.txt": [ - [ - {} - ] - ], "css/cssom/CSSKeyframesRule-expected.txt": [ [ {} @@ -129049,396 +128959,6 @@ {} ] ], - "css/fonts/CSSTest/LICENSE": [ - [ - {} - ] - ], - "css/fonts/CSSTest/README": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-ascii.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-basic-bold.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-basic-bolditalic.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-basic-italic.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-basic-regular.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-fallback.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-familyname-bold.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-familyname-funkyA.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-familyname-funkyB.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-familyname-funkyC.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-familyname.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-verify.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-100.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-1479-w1.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-1479-w4.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-1479-w7.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-1479-w9.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-15-w1.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-15-w5.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-200.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-24-w2.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-24-w4.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-2569-w2.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-2569-w5.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-2569-w6.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-2569-w9.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-258-w2.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-258-w5.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-258-w8.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-300.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-3589-w3.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-3589-w5.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-3589-w8.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-3589-w9.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-400.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-47-w4.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-47-w7.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-500.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-600.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-700.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-800.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-900.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w1.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w2.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w3.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w4.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w5.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w6.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w7.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w8.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights-full-w9.ttf": [ - [ - {} - ] - ], - "css/fonts/CSSTest/csstest-weights.ttf": [ - [ - {} - ] - ], - "css/fonts/NotoSansDeseret-Regular.ttf": [ - [ - {} - ] - ], - "css/fonts/adobe-fonts/CSSFWOrientationTest.otf": [ - [ - {} - ] - ], - "css/fonts/adobe-fonts/CSSHWOrientationTest.otf": [ - [ - {} - ] - ], - "css/fonts/adobe-fonts/LICENSE": [ - [ - {} - ] - ], - "css/fonts/adobe-fonts/README.md": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_Ahem!.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_MissingNormal.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_SmallCaps.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_WhiteSpace.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_cursive.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_default.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_fantasy.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_inherit.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_initial.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_monospace.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_sans-serif.TTF": [ - [ - {} - ] - ], - "css/fonts/ahem-extra/AHEM_serif.TTF": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansAdlam-hinted/README": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ - [ - {} - ] - ], - "css/fonts/noto/NotoSansCypriot-hinted/README": [ - [ - {} - ] - ], "css/geometry/DOMMatrix2DInit-validate-fixup-expected.txt": [ [ {} @@ -132804,6 +132324,11 @@ {} ] ], + "custom-elements/custom-element-registry/upgrade-expected.txt": [ + [ + {} + ] + ], "custom-elements/historical-expected.txt": [ [ {} @@ -136224,21 +135749,446 @@ {} ] ], + "fonts/AD.woff": [ + [ + {} + ] + ], "fonts/Ahem.ttf": [ [ {} ] ], + "fonts/CSSTest/LICENSE": [ + [ + {} + ] + ], + "fonts/CSSTest/README": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-ascii.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-basic-bold.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-basic-bolditalic.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-basic-italic.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-basic-regular.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-fallback.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-familyname-bold.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-familyname-funkyA.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-familyname-funkyB.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-familyname-funkyC.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-familyname.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-verify.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-100.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-1479-w1.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-1479-w4.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-1479-w7.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-1479-w9.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-15-w1.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-15-w5.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-200.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-24-w2.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-24-w4.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-2569-w2.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-2569-w5.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-2569-w6.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-2569-w9.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-258-w2.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-258-w5.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-258-w8.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-300.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-3589-w3.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-3589-w5.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-3589-w8.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-3589-w9.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-400.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-47-w4.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-47-w7.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-500.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-600.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-700.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-800.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-900.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w1.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w2.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w3.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w4.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w5.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w6.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w7.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w8.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights-full-w9.ttf": [ + [ + {} + ] + ], + "fonts/CSSTest/csstest-weights.ttf": [ + [ + {} + ] + ], "fonts/CanvasTest.ttf": [ [ {} ] ], + "fonts/CanvasTest.ttf.sub.headers": [ + [ + {} + ] + ], + "fonts/GentiumPlus-R.woff": [ + [ + {} + ] + ], "fonts/README.md": [ [ {} ] ], + "fonts/Revalia.woff": [ + [ + {} + ] + ], + "fonts/adobe-fonts/CSSFWOrientationTest.otf": [ + [ + {} + ] + ], + "fonts/adobe-fonts/CSSHWOrientationTest.otf": [ + [ + {} + ] + ], + "fonts/adobe-fonts/LICENSE": [ + [ + {} + ] + ], + "fonts/adobe-fonts/README.md": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_Ahem!.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_MissingItalicOblique.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_MissingNormal.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_SmallCaps.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_WhiteSpace.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_cursive.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_default.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_fantasy.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_inherit.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_initial.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_monospace.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_sans-serif.TTF": [ + [ + {} + ] + ], + "fonts/ahem-extra/AHEM_serif.TTF": [ + [ + {} + ] + ], + "fonts/mplus-1p-regular.woff": [ + [ + {} + ] + ], + "fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ + [ + {} + ] + ], + "fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ + [ + {} + ] + ], + "fonts/noto/NotoSansAdlam-hinted/README": [ + [ + {} + ] + ], + "fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ + [ + {} + ] + ], + "fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ + [ + {} + ] + ], + "fonts/noto/NotoSansCypriot-hinted/README": [ + [ + {} + ] + ], + "fonts/noto/NotoSansDeseret-Regular.ttf": [ + [ + {} + ] + ], + "fonts/sileot-webfont.woff": [ + [ + {} + ] + ], + "fonts/tcu-font.woff": [ + [ + {} + ] + ], "fullscreen/OWNERS": [ [ {} @@ -136339,16 +136289,6 @@ {} ] ], - "generic-sensor/generic-sensor-feature-policy-test.sub.js": [ - [ - {} - ] - ], - "generic-sensor/generic-sensor-tests.js": [ - [ - {} - ] - ], "geolocation-API/OWNERS": [ [ {} @@ -146469,6 +146409,11 @@ {} ] ], + "html/semantics/forms/autofocus/first-when-later-but-before-expected.txt": [ + [ + {} + ] + ], "html/semantics/forms/categories/.gitkeep": [ [ {} @@ -149869,11 +149814,6 @@ {} ] ], - "interfaces/generic-sensor.idl": [ - [ - {} - ] - ], "interfaces/geolocation-sensor.idl": [ [ {} @@ -149944,6 +149884,11 @@ {} ] ], + "interfaces/sensors.idl": [ + [ + {} + ] + ], "interfaces/touchevents.idl": [ [ {} @@ -151814,6 +151759,11 @@ {} ] ], + "payment-request/payment-request-ctor-pmi-handling.https-expected.txt": [ + [ + {} + ] + ], "payment-request/payment-response/helpers.js": [ [ {} @@ -151939,6 +151889,11 @@ {} ] ], + "preload/link-header-on-subresource-expected.txt": [ + [ + {} + ] + ], "preload/link-header-preload-delay-onload.html.headers": [ [ {} @@ -151959,6 +151914,16 @@ {} ] ], + "preload/onload-event-expected.txt": [ + [ + {} + ] + ], + "preload/preload-with-type-expected.txt": [ + [ + {} + ] + ], "preload/resources/A4.ogv": [ [ {} @@ -151969,16 +151934,6 @@ {} ] ], - "preload/resources/CanvasTest.ttf": [ - [ - {} - ] - ], - "preload/resources/CanvasTest.ttf.sub.headers": [ - [ - {} - ] - ], "preload/resources/dummy-preloads-subresource.css": [ [ {} @@ -152089,6 +152044,11 @@ {} ] ], + "preload/single-download-preload-expected.txt": [ + [ + {} + ] + ], "presentation-api/OWNERS": [ [ {} @@ -155219,6 +155179,16 @@ {} ] ], + "sensors/generic-sensor-feature-policy-test.sub.js": [ + [ + {} + ] + ], + "sensors/generic-sensor-tests.js": [ + [ + {} + ] + ], "server-timing/OWNERS": [ [ {} @@ -184823,6 +184793,12 @@ {} ] ], + "custom-elements/custom-element-registry/upgrade.html": [ + [ + "/custom-elements/custom-element-registry/upgrade.html", + {} + ] + ], "custom-elements/disconnected-callbacks.html": [ [ "/custom-elements/disconnected-callbacks.html", @@ -190751,18 +190727,6 @@ {} ] ], - "generic-sensor/SensorErrorEvent-constructor.https.html": [ - [ - "/generic-sensor/SensorErrorEvent-constructor.https.html", - {} - ] - ], - "generic-sensor/idlharness.https.html": [ - [ - "/generic-sensor/idlharness.https.html", - {} - ] - ], "geolocation-API/PositionOptions.https.html": [ [ "/geolocation-API/PositionOptions.https.html", @@ -197443,6 +197407,30 @@ {} ] ], + "html/semantics/forms/autofocus/first-when-later-but-before.html": [ + [ + "/html/semantics/forms/autofocus/first-when-later-but-before.html", + {} + ] + ], + "html/semantics/forms/autofocus/first-when-later.html": [ + [ + "/html/semantics/forms/autofocus/first-when-later.html", + {} + ] + ], + "html/semantics/forms/autofocus/first.html": [ + [ + "/html/semantics/forms/autofocus/first.html", + {} + ] + ], + "html/semantics/forms/autofocus/not-on-first-task.html": [ + [ + "/html/semantics/forms/autofocus/not-on-first-task.html", + {} + ] + ], "html/semantics/forms/constraints/form-validation-checkValidity.html": [ [ "/html/semantics/forms/constraints/form-validation-checkValidity.html", @@ -223959,6 +223947,18 @@ {} ] ], + "sensors/SensorErrorEvent-constructor.https.html": [ + [ + "/sensors/SensorErrorEvent-constructor.https.html", + {} + ] + ], + "sensors/idlharness.https.html": [ + [ + "/sensors/idlharness.https.html", + {} + ] + ], "server-timing/cross_origin.html": [ [ "/server-timing/cross_origin.html", @@ -241519,7 +241519,7 @@ "support" ], "./lint.whitelist": [ - "6c1dd41264f5c2a5da6f801b99c98ab154d172eb", + "a1eb236548d5575af5bb623615175586218dc594", "support" ], "./update-built-tests.sh": [ @@ -248215,7 +248215,7 @@ "support" ], "accelerometer/Accelerometer-disabled-by-feature-policy.https.html": [ - "96e5a86bf78239f3aa4a79b32bb4308de0d5f60e", + "5bce003a7ab3b5016011d35c715d7968c09a89a4", "testharness" ], "accelerometer/Accelerometer-disabled-by-feature-policy.https.html.headers": [ @@ -248227,7 +248227,7 @@ "support" ], "accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "f20f89a31daf399a7946b928e8deca9651d38487", + "df5fc463567201131aeee4f8f975e39135058aab", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https-expected.txt": [ @@ -248235,7 +248235,7 @@ "support" ], "accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html": [ - "7ce8c39f0af6c932d1e6b6f75843c090f7274b80", + "fbea6404a3a380b43b2f006cb1dddadcabeb666f", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy.https-expected.txt": [ @@ -248243,7 +248243,7 @@ "support" ], "accelerometer/Accelerometer-enabled-by-feature-policy.https.html": [ - "dbda7cfa838c1f2d4296b545034d42f0064f331a", + "67193bd17d281423d7f6e84b0166b5a4c0409be3", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy.https.html.headers": [ @@ -248255,7 +248255,7 @@ "support" ], "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html": [ - "b8fb07cdd23dce9690de719387b9d505382772f5", + "69ced186024bf92e077eccac49a66e8f86d81c96", "testharness" ], "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -248267,11 +248267,11 @@ "support" ], "accelerometer/Accelerometer.https.html": [ - "3ff5f61b25c52142e9796f3903d7f2bcaa30314c", + "f70ee583dce5ed3019e900163d5d559d70d05fb2", "testharness" ], "accelerometer/Accelerometer_insecure_context.html": [ - "82be1b9a5c6e75291fdc1aabe230af28e22823a8", + "b9837873e39416c65e8ac05f2049bfa406ba4264", "testharness" ], "accelerometer/Accelerometer_onerror-manual.https-expected.txt": [ @@ -248279,7 +248279,7 @@ "support" ], "accelerometer/Accelerometer_onerror-manual.https.html": [ - "c82f9595dc2582b2da40549a358da1c3fc2ff820", + "c8b76601f465d0f5b26a9bc27dac503f02887448", "manual" ], "accelerometer/LinearAccelerationSensor-shake-threshold-manual.https-expected.txt": [ @@ -248299,7 +248299,7 @@ "support" ], "accelerometer/idlharness.https.html": [ - "223375903efaf082b8c4a24f9bf103eaabd90d05", + "f6da2046a4bc1c31a7ad2169c51e22c74105b989", "testharness" ], "accname/description_from_content_of_describedby_element-manual-expected.txt": [ @@ -275399,31 +275399,31 @@ "reftest" ], "css/css-fonts/first-available-font-001-ref.html": [ - "b908d93443cee9e64628e85a29d288d567f19e5a", + "7f6bdc4dcb91cdf976631216a72ec0557234a6c2", "support" ], "css/css-fonts/first-available-font-001.html": [ - "b766a6b03eda1f84317330e4144efda1fe11877e", + "e5d465af675e4e8ed0b385c9c582972afbf12589", "reftest" ], "css/css-fonts/first-available-font-002-ref.html": [ - "1d2b31f4624182d4e1451a7af73e11a049faba75", + "e20de16dd79f19ba3cc8ab153e58943c2f1d38cf", "support" ], "css/css-fonts/first-available-font-002.html": [ - "85d82a4b714deac3ab2dc15cf1c90d340039ea0e", + "d4319ca7427caedc4a98a497e5107fa7036af10d", "reftest" ], "css/css-fonts/first-available-font-003-ref.html": [ - "561cd0ffcb017ae0a5cd8489cc335afaa43fd95d", + "9f0d8131b33bf2518d4fdd2ca6b2d431f399e700", "support" ], "css/css-fonts/first-available-font-003.html": [ - "60fa4838cce77f2516689b368cf9058adcab22e9", + "4cb0dd859869131d2f8315bb7715489098bb3eaa", "reftest" ], "css/css-fonts/first-available-font-004.html": [ - "449a20a6fecb03821cdb5253fa09a70340b8321c", + "e0eed6c8c03ced906244b45599e3cb8727cf89ad", "reftest" ], "css/css-fonts/first-available-font-005-ref.html": [ @@ -275431,15 +275431,15 @@ "support" ], "css/css-fonts/first-available-font-005.html": [ - "6c4d33aa1d766da74c5d0ad6cbcda3793c3df926", + "a6f3b6817f3a2c12a26564f64d384d76f30beb35", "reftest" ], "css/css-fonts/first-available-font-006.html": [ - "9cf39bd6493745a35b586046ffb3ad98334ba1b7", + "b4f86f9904cdbf7bb0b66a7d313b849bfc4e251d", "reftest" ], "css/css-fonts/first-available-font-007.html": [ - "955b6034a43ed937c87df87b35e37d6cdb4f1e0d", + "e87329b2839deefa389385115023f783c0f29775", "reftest" ], "css/css-fonts/font-default-01-ref.html": [ @@ -276439,7 +276439,7 @@ "manual" ], "css/css-fonts/format-specifiers-variations.html": [ - "c1b5da785d1edae191e564500904daa1819b4d76", + "d773f016699bcdcbe54f196118de13fbdbd60a69", "testharness" ], "css/css-fonts/language-specific-01.html": [ @@ -276526,18 +276526,10 @@ "415b835abaaab822aab11880354296e7356bbb0a", "support" ], - "css/css-fonts/support/AD.woff": [ - "2bff1f1a01ce7c959341300952b2467e87e60dd5", - "support" - ], "css/css-fonts/support/README": [ "c46bfcee920aef0b9167764ec78c699ed217c8f2", "support" ], - "css/css-fonts/support/Revalia.woff": [ - "f2b20022818e53e9c9c5f22bcc52703c6858eb1c", - "support" - ], "css/css-fonts/support/bar_with_corner_dot.png": [ "76cb66964d085f70c0c91635c9369ea8fb41f2a3", "support" @@ -289519,19 +289511,19 @@ "support" ], "css/css-text-decor/reference/text-decoration-line-010-ref.xht": [ - "ba55218db818b208176448c9ae0adb4ee101ea53", + "44ebf0ef5d9b1c21dd210409a28499b5b6d40d58", "support" ], "css/css-text-decor/reference/text-decoration-line-011-ref.xht": [ - "6e3f84128746f95b967ff8d9cab76248e3eff95d", + "346a91530566a26ee4525ce8842a2046f069bd71", "support" ], "css/css-text-decor/reference/text-decoration-line-012-ref.xht": [ - "ace0ca545a17b17082b53b4f442bfd126a668b3a", + "7dade853c29d425fb4ce462cb01f679ac61f337f", "support" ], "css/css-text-decor/reference/text-decoration-line-013-ref.xht": [ - "065a1c1af6c12c7d2043c3d318330ba3028cdd87", + "d44b01891adbb2aa6db95788f35c320bed3196bd", "support" ], "css/css-text-decor/reference/text-decoration-line-recalc-ref.html": [ @@ -289647,23 +289639,23 @@ "reftest" ], "css/css-text-decor/text-decoration-line-010.xht": [ - "f6c9486f8482db4566b88ccaa4ace97dec8062b1", + "90d9175973efc66707dff920ea7a1eb4cfab43e6", "reftest" ], "css/css-text-decor/text-decoration-line-011.xht": [ - "8c99c10093fb1825f842d3cd781d71624ef0bf51", + "09a702f02619b0318bf4ac29dff8c63deb957db1", "reftest" ], "css/css-text-decor/text-decoration-line-012.xht": [ - "156f01c1d1fb2496313632c828a972c744da0e8e", + "0c61733fea2d7ecb2bc5f23faa5d2003378c3310", "reftest" ], "css/css-text-decor/text-decoration-line-013.xht": [ - "b82a9087d89bc3b9c7f8d10597627014fccd8165", + "7b30cca14361028696c2889ae79be02c196e73e2", "reftest" ], "css/css-text-decor/text-decoration-line-014.xht": [ - "e0d6dbb039133f5aee07cc8dd3d96942727bdec0", + "a6503fae99fa1b74d3bf5c6ac1dfb341a8c1fc2b", "manual" ], "css/css-text-decor/text-decoration-line-recalc.html": [ @@ -289863,11 +289855,11 @@ "reftest_node" ], "css/css-text/astral-bidi/support/adlam.css": [ - "83d24d6c948fe4a68423b2892ff1e75c765ec98a", + "7a0da401a15200ede7612aef8733b96b93e4dd63", "support" ], "css/css-text/astral-bidi/support/cypriot.css": [ - "0e32370ffc7e03a76dd32301ec9e25ee53e8bd51", + "76e7b2c5a8bf2e54d8448654e4d719d5544d0a00", "support" ], "css/css-text/hanging-punctuation/hanging-punctuation-allow-end-001.xht": [ @@ -290375,3373 +290367,3361 @@ "testharness" ], "css/css-text/i18n/css3-text-line-break-jazh-001.html": [ - "d1b924a217afb3b7c4ad8a856a13a7881432414f", + "f426817be550e629ed173b60b7b789643cc28aa0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-002.html": [ - "7899cfc65d2dcfcf296aeac4210bfa37e58cd4a0", + "29f3c1d8d6a83f99133ced8a57c8dadc6580bf46", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-003.html": [ - "339516c3102af7dce92aed38bf135abeb4274802", + "fadd98f564d4b5de868dbb1e55e759caf0501b5f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-004.html": [ - "af4e4ec4a633199908f425d0d3eb661ea5d6b0ce", + "22bcabbe10b970b7cb4d2370a7dcc6077b6e470c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-005.html": [ - "8eb16ba7a6b6523d6ef356a095fd64434927e62d", + "79467be775aaffcef6fd6e45dd6684f0c9c4d689", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-006.html": [ - "2366c1eb61d7d40b8eef172f877d2eeee28a2d70", + "875bcc0e828ee9df252043a4e4485bea0ddbd279", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-007.html": [ - "296bd9d8dc7095a76057f5a19b7e2a9f7a084b70", + "14609a65e3996c2811941cece89823451151c14d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-008.html": [ - "ebdf96e389b71b5e3c611841fb56b83fa699ebb6", + "c383f36be42fec8f72448f7b3bc08eebebfd99ea", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-009.html": [ - "12089c59fe77e2382894ce0b46ce6b0537621130", + "5748ccd82b9429d81109b76ae1ec898122f36802", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-010.html": [ - "99369ce295beb32191f0cbf0b3182d09f99c42f5", + "25970df157a3ca67c3fa3ec56be081d5b0774e59", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-011.html": [ - "97055befeecc8f22a2ba86984c47fc1cc5271b1f", + "54d603da6086f4d3a8527e662a51e0f844e6ad41", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-012.html": [ - "8a0756e0163ea19e1a006ccadc18fd76df265d94", + "28373f1462fd26139f33e2eb326a4e032298ab34", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-013.html": [ - "07c32098a5742c98aeb0ff17394cfcb2fc370522", + "36913ac2d6beacafa1054968e25a5a88f9c6e87c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-014.html": [ - "6771093cba1c78979210e08978d04b07d9c8d1e5", + "63e71f1b36431c82fd80f9eb98a7be796a6597c7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-015.html": [ - "836c8f641ab6af6c969d9eb82cfdd701d53d65a0", + "842c6ef69885f17ebc8408f8e92a6eb976bfbcf3", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-016.html": [ - "fa16198608d7e86162f0cdc605421f6f0b245fc0", + "ff9f5fcb4e8c9d7c54c412f4bf0f4f81169b2120", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-017.html": [ - "5784f822651484d2d7ee86aced271752ee8900c3", + "51362ba8540db772ab4e97b13995e80bb126daaa", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-018.html": [ - "1f627c083129e132f9d9bcc920bd0ca5e3c47f3c", + "c56a8413147104b0c79b411f713461ebce73ae24", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-019.html": [ - "104e78d88b518f19d06de0abd021106b08d894b9", + "b3d306420b2b6489b1a5cc1e8be636fbf53c40f0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-020.html": [ - "bff87f83ce89b6869fb9c99c4e4abbdc92a7844a", + "9bf753423de951710b4c8a4916e8d697d03ff25d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-021.html": [ - "3dce06d68fd0ebe77bb79274132d0b85cc1b28a8", + "378e4aebe41f60dfa3bfbf2e78da9ce7b2055d52", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-022.html": [ - "9583e9f777e8809e7cf854db9526c0500bee7389", + "53099242d95802f94bf1f56ba66d43bdd855d804", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-023.html": [ - "7ef92021242c8c346ac245a5a0b369e7ce2a7263", + "5843549b742fb2eb8822c4302f5c60d035418c59", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-024.html": [ - "dbe2cd0086c853ba8cb578e694122accfeb864ae", + "add86f36ab212aa220d0436039210c0016c2f584", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-025.html": [ - "4ac31ff55bb090d60e68e3f9758a240e46b44cd9", + "8d96ee8836152622ae733d5002de27e0ad664170", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-026.html": [ - "44848c4b5992fcf04877a00efd214ee9880e12c3", + "ac1935cb29251286e8fe81f50d241825b203916a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-027.html": [ - "c468a42b7ee894e2e719605b785423dab77cad82", + "8fbae802341eb148712d9e3c837ff85300c57d41", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-028.html": [ - "306954070af4e7d5e1c807a5292ba63da658e9b2", + "c97f9e8f87a50a908708d85666ee848a3d29ead0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-029.html": [ - "ec1b6b77339937811cdad0c8e2b3d175d97926df", + "7a6b964503fe9ead8534591051e6800f1b35c2f7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-030.html": [ - "847de92a2f3215bc61b66235c4b86615083f833c", + "d6ac7eda7d48b4aa09dfbda5912c948085120a0b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-031.html": [ - "2a730dccadd5383bd016a0c547d9ad960f7e8168", + "637121b86cdcd4e1ae4a66338b8ff389938577a1", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-032.html": [ - "477884bd0bb2f82d8af0b7ec11af33e19ca02038", + "e96fcfb75f2fe95501c025bd3b42b34a76fd18d0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-033.html": [ - "1c62f5f0f69f52e6e20dba11c975670d878fe432", + "fa17ee09a2eb7be7808bc8fa7be1b76c87ab95cd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-034.html": [ - "2313bff46018bf6d8e00c7950196c129e6607623", + "116b3cfa2fac10d2759d16a1324f40cd8e069dd0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-035.html": [ - "ab00ec260fda87cd0fb46f3c182ca5f2923b8ee5", + "53788449cbd03428cd4f6d6b04fce4b92c0dffd9", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-036.html": [ - "b9fb1bb40c6e579f2f739c79086b43002ed2d41f", + "9762e79dd83e469ccc923a28b13bdef069c10dba", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-037.html": [ - "e228360622fad7b95ee5e23d34344141eedf586c", + "9bb80b156a49350f9991f7abafdad870457f98f7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-038.html": [ - "f0c958a44cbe1873c5b4dabc2f50f01fce238f4e", + "f6ede3c4d9a2430626affaf18077e6b51e0b347f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-039.html": [ - "73e8e7c7ba15dc0bdc85de37ceff66807da10c73", + "9a5c24666f218b92e5e95cb3f643c68adf40f282", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-040.html": [ - "dc4dd7957a3be324126a13e151c3b54971938b54", + "60b3c87f25b080fb2521d3ed0249daeb0a10d1ca", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-041.html": [ - "c8c72052185c3218ddc75e03ab49b531a8156e91", + "db5755843745fed73be92511d3f301b24b25598d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-042.html": [ - "a069fb01c5cfef5b72fdea02ab0f89049cd4d9c3", + "9097870882f665beae507655174d939fc0adc05c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-043.html": [ - "2bf28676c1e2de67c695034727473aa6f0683b8e", + "ab0579bd3f32da1cec5f4175d19873021f8fc2c5", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-044.html": [ - "a7acbcdfab095e5fd6265a7a74d2508d847c93c9", + "dce1bc25e9421897c937d2fddf89a25b2ce88597", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-045.html": [ - "a5e9c9c3297e7d84c4061dc0c2afd2a3d357c047", + "8f423f4d270aefdee56ff7896784d38a407c29ee", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-046.html": [ - "9fb7e24c4941ce431af25cddf12a0085b52edd6c", + "67dcca62710211a3b53e3847c58711f3d1b4560d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-047.html": [ - "ba5d907c4191c09fef9a73ea2519f9c56586356a", + "a5a3a3001d79d41c1cd89a5d866c4543300a9309", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-048.html": [ - "45e28db1a023362f51bee1386e81740af55305f0", + "994f5d1cb097150107ceead8f35008c3c61ec346", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-049.html": [ - "baa330799254af3c7cad81b6b5e4b251e1ed5b47", + "1d12e3c9e88dc2ea7f19a836a2724495b1172db4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-050.html": [ - "6f2128097e55b12f2ae5dd225c50b0dc1f80c9f8", + "e801e898d908a64945074a85f9623e54cea695f3", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-051.html": [ - "57b6d38f64ea79a847decc3c0e0f9297ee20f564", + "05e7e0fe6e9a176939805aa8b3a93e7fedc823bf", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-052.html": [ - "be0d0386c69ec868afe07f075af140f226f77b2b", + "008e4207b808339dcfeb599416749e894e6ca261", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-054.html": [ - "f249b0551761e27b05d30f4fa6f5248371138eb6", + "ba2943deff7e939b096514a80b7a9ea7b5aaf6cf", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-055.html": [ - "9bee54d5cd5b1349e8716a6cfd2e7cae00ccb83a", + "85e2603ebdf277d4e1d10b744857e4edc039ce71", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-056.html": [ - "347d8882eb2c08236f0e596cc408be4d7b24ba1a", + "23227c4107b25fe907d1603fb9e1589597070492", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-057.html": [ - "9a14927fee59fcf9a4c27550763b207983049c59", + "656f81f469cde861e4bb90f3fbb61a5c5bc096f0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-058.html": [ - "8db502c3d4c0bb32eed1149b14a0fd7b378678dc", + "35d40a925a531cd96f83d564871c892e5098a23a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-059.html": [ - "61a24d7f198ef0d89dee80e3b02a6d2bf81ee935", + "033c0b8506ed4d7faf463fd1df54cb3dc528a816", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-060.html": [ - "6858db684b5f4337c738864c647c0b1f244acf43", + "f11154e01acd757e2b3d864a1eddf48ab1886472", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-101.html": [ - "41260161b915c66155f63f613c2e3a31aac5801d", + "ad474ea548eb965d7279a04c01841079d8f84dfb", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-102.html": [ - "8d16bfa42392dcd9230226869acd2586295455dc", + "7d4512ba3ca548ab5e43e73c38b04249cb6e0a03", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-103.html": [ - "68d6e9ce07c87046c87954e0bb987be80d52f5b1", + "1cb926a5ac471e8cf1b3b1494339551aac679b24", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-104.html": [ - "ac40d41cb1bccc177fee867faa45130bae608e4b", + "f49d10e1cfbef02fb80b823d48f4f18c4012ac10", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-105.html": [ - "95c06f201e692ec697c2a9bdc8ebd8b7b679d113", + "314e23856caaf06b4f408c2a8bcc1a0eb16ec24c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-106.html": [ - "7d4dfc8f5654a68ca70cb764f79464efce3e9cff", + "bedc68ba9ec89e86083da2e262a1ebc9be41654d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-107.html": [ - "fcf3f56dcb1232c9c8366e0731e9bc4b42d54351", + "d8aa9684894c95de195ac2d6b207776f9c212052", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-108.html": [ - "a4a7308d0c9b3ead3b86b44ba31e592ef46511f0", + "07078155447d7992f1de4abfab8105b6b0d48ffd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-109.html": [ - "14091dfba4c622ad0493d1f326094de0fdc9ab13", + "cda8ee8e807031140368daeff2e22ad734e2030f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-110.html": [ - "1c2bf19c025ba84bfca7836a3d176ea4d66979a4", + "b434d8de95026289312b96a7d984650a00e528e2", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-111.html": [ - "cb36711d8f7bf008542b78819671fe123a09fedd", + "36b4ffd32746a739e48aef4a8edc332c15759528", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-112.html": [ - "0b61ac08932ff58e995848a4d5c35afab9d996aa", + "2466fac54cdf61a4e74d272921462acf5ba796dd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-113.html": [ - "1ee6d8b9a90d82a29a8d6c0e9fe1a192bf5443a6", + "c4a65fcd3a1d4b2c27d34c2db728aa642fa3334a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-114.html": [ - "cbeb49169d3535c4ca4a2ca0b27a74f1c53b4158", + "a5f4183dc67f2b1bdf6ab40c75005ff28bf327c0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-115.html": [ - "3860d9bc3a408753b4c05f73c5231315edc1e75c", + "461c7d6686d6033bbee9ef360cbd4f515a570cac", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-116.html": [ - "d1de5d3d1811025c4ba96cfbf97a2a581ce92655", + "b7f77c7182dd590467f9bc1f86d6f484e460c6ba", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-117.html": [ - "3597373f5900f78a7ab7a637325f4737474db5e2", + "3a721213ec95a98f173e09b03f38943c6f7fb24e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-118.html": [ - "444cef8f21cd73a1e3a063b7695021ad4db4d997", + "cdad73d65fc87e1406226487d91d654c83e90d37", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-119.html": [ - "c6a915646d273a8aa274e13a76dc5c68006f03c7", + "bca37b7aecf60e061c547de23ebfb20eef738b26", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-120.html": [ - "d37a415bc8a729f5f4ed280aa2e675e103c50bb0", + "2d9171ce08c5161da1ab8657221b31409f16ce70", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-121.html": [ - "e6a08b8df48f9d39fc5425d14519f2c64fff2aa9", + "671813fa77d2606e83a58de6086278618e5fcc6d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-122.html": [ - "246a58d1384c930db0903d918947801533984a06", + "6d0e978d2072f971aedd072ecb00fdcb8273480a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-123.html": [ - "6fe624d6aeeb8165be55244b415b37ec8f5884aa", + "d8c98d84aa3d6f6723d3f818b2f2fd2020c73f4e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-124.html": [ - "ec855f0a3a89a3f990f0f400972375ec4e73e6b4", + "aa086a0869ad74414d16138bea740625b9416119", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-125.html": [ - "2cb83eb9ed55248d76c3196e6095019212ec9189", + "35303766a4e67440ffaebf9705f9751d6eaa22c5", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-126.html": [ - "9cd2d9ec0bde0724818d25c93d52fc73d115d75d", + "4d597c7d1443fc16d6ce3ff57bedfdb6360753a7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-127.html": [ - "19037d5fafaa3c416a0cf2f32f59c2ca698ab00a", + "c9a4b346995496113775cf2dff007f9361bccd17", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-128.html": [ - "8108f29939d94afe05fc20f560169713796ee999", + "f4ea082fe98894a1c470d5f3f36ed1bf864d45e0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-129.html": [ - "5d65b5a4e5d9cc914c4b2c14dd4ea497a18c10ff", + "ac35d414c189fe98db7ae3100726fbd618616cf8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-130.html": [ - "0dd7e6cfc83fe7552ee51f68cd8df5f0ea0499cc", + "ee5a96088d26ae76dec98f64d0349d366f313854", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-131.html": [ - "0952a96caab13bdbaad595c5da237d047d991113", + "1299849ec7ffdbdfc91d4a81bb4a4b5d1878c64f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-132.html": [ - "8a3c0035eb911ac35194f25b0f413f072c4c9926", + "8bdb7c0beec6800b9ffa2d65524ca95857293cdc", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-133.html": [ - "bfe4da96804d25ce29ecf9d2d3c40a4a3e6e2bdf", + "1c2108579c3dbde4e17116013fa3b75b1348be95", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-134.html": [ - "f12b04ffb0f31462d14c0fdef7d3c72b1231b839", + "a667a736753fad3d360d7f30d6e2e058edaf0ea0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-135.html": [ - "e628966638c01b0056a81359819f23ca1b46db81", + "3f078d210e402c35543b3ff02c9fa7e22ec57895", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-138.html": [ - "cc6c2159ad667f85c798ba97ba0f2d675f498153", + "ffc06850ae4e5f18001f8b6443ba7a1b7a0efab9", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-139.html": [ - "a32424efd8919af3f914ea5a2333092a2500804f", + "eb44959f8bda7fd34f0bb05924fd870595a3365d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-140.html": [ - "6e6e79cbb1652c0702358298c1527279a0d3f88c", + "7dce5eceeb318c9d8c171a6cb3fbb282478853d5", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-141.html": [ - "fcb97f65dc888e9b2939362a887b86dfd5093d45", + "1c8287edc50d9142e3012d1d9805e4f06b90932c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-144.html": [ - "8e33ac0d04665f126cb1e96d9d2cd7b0fe9350f2", + "826cb9ec7951e3f8d612cddaded0e8b23c60ab98", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-145.html": [ - "20776fa1e47cf6222cfd0b1723af60565cc68bee", + "4883682fa63088a9741a06f45ae8287ad8104881", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-146.html": [ - "40b8ee6b810c8d72627c8b1eacf5c579e98df3c4", + "01d57e1fb1891f7683ccdbd6ebd81c605727be6a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-147.html": [ - "73b84fd92c491a5e96e48acfc67c5a90e9d8097e", + "77c5b92d25ac589a9aa0b0141cec80d89e64e090", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-148.html": [ - "2a4feed517af4fed06a925ee44a6605c90879ea6", + "062e7e0608e75fbc6bc1f00a458faa29424ad596", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-149.html": [ - "085886eb38662fa7764bcbb282f6f1d38e3ad49c", + "7d0dbce9aa9e2f780f16d67d846189aa28c8d8dc", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-152.html": [ - "7e18020c08b336734342e979413a24b1ffd61c06", + "e6ad978e2e2a90a903dd5c3267ad6bf5b6ce06a2", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-154.html": [ - "15fbd45272d16e76f4350670db6bf49033eedd8b", + "0c7b53e14a8405049fd3e6d87809ab11ce537307", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-155.html": [ - "fcf6fd883c63fa037121c88e3647af2a2c06f291", + "aa768417fd1f06aa347a0f0cc502c755062cfc12", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-156.html": [ - "f37b19862915aa6bd33e0ce3fa7ad47910057601", + "3674ad0533b71277fa5f68aec3a781668d8d6904", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-157.html": [ - "3c67e50b91e9fcdbb1db04acf764615370dd8121", + "0340ce5745e802fd99603924b371819fd878a773", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-158.html": [ - "9ee46a943d56e22516a7d9d47823876690c52093", + "c849273b4eb2602dce52977bb5617dc69e0c87ca", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-159.html": [ - "be8d6127288ae3e2e17f47b3e5801113b9ba2498", + "f841c0560c6776fcc6457f73e307ea11a5688d94", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-160.html": [ - "58958a0e8f5fa9a4838a59eb8e862ffb24daf81e", + "a58b1a31d000686f01963f3b4b71e293eb2e6002", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-201.html": [ - "e71ef9834c093bfc5f67fe3660fec7e258ba9951", + "406059301374b27396ac79012277df891b11894e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-202.html": [ - "0e7c2646fc56d026422192fe4121607eec28d612", + "43a3220751f38df24d50300df4bfd84421ea8f85", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-203.html": [ - "d229443138d5e0ade5233fdeaccbb11c82b44737", + "4640c16ea820ca562434e9c23e686c4e96dd362f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-204.html": [ - "4de6583229b26463220d19650203af5700a9a27b", + "a57f39c5813cb897aa74cdadcc319206ef8708f9", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-205.html": [ - "88589c4883789ff6c8ea9c5dcd05a1cd61c73f0e", + "f8ab56a03f87460169865561d204cd3dc87190f7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-206.html": [ - "1d754df33b17eac1b80210e34233a604d1a2cddf", + "c389fc7da43695deeecebeb02203aedb8090f49c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-207.html": [ - "0be6fb2ac8474db7a0898b3245cecb3d816c395d", + "76f7d889e143b1171a321a31b8e3873fc7e99a15", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-208.html": [ - "0ac856ad8187ba3f716991240a837a5c8cbb12eb", + "d1d6a069447e003dbfba646d930ea95ab5bfc2fd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-209.html": [ - "fd00fa0bb0cfb476fc8b93ed1d2e1662c16f40fd", + "d8d8beca0c0cc178146fd6776850e65ef931638b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-210.html": [ - "c1e381d9eccfb98bf53627bdd7a685a04f0b0787", + "f88bd161249d6ae5d5a65d53e1d58235b797d7b4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-211.html": [ - "0c4ece8a4ae2ef97361e1d9e35d6caf2b3386f97", + "cd5c57474a580ae1ef037a347db1f3b457675e9a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-212.html": [ - "d3731275534b7d090c56968a57f8c2d30b3d1d72", + "6940463b8719dfd7477b8a1e450faa4a67bf2fcb", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-213.html": [ - "18e3fd64ec2d20d8e08523c45b7cbe5bd6f7f211", + "0fd9fcad8051217686ee1b36f44b5e8b78187a5c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-214.html": [ - "aedde66e0fc069d3aa993fab5865bfa35d77d304", + "980eebe884c0e854f4b760fb3df84890560f671f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-215.html": [ - "8de2b79da2b22068b5b1d2b62f6624b7af9a3e1f", + "0bb745f9c2a91aef56e3c4cd9a08530a28733d69", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-216.html": [ - "f3ecb2ef59db856f3eceeb1af5172bf43606bb5f", + "c5f1e8d8fe86da2dae923fb32efa946087d0cf6f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-217.html": [ - "e18781f28b55db165e2d1bcf1d057203703ac64d", + "b7d38abc74237ccad6cc53044cf290c118c16bfa", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-218.html": [ - "4c070e70b06490b84d17ac73990e58aea827ae35", + "d2baf83bc64f0ea0de89fa41f9e940a19aba8438", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-219.html": [ - "e254f3f3d5ee4d3a5633052cf50390a8043ea8eb", + "d8b63ac18f59058547096370a20e4782e0695d35", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-220.html": [ - "0568ac3c7162706bf4b6e3e621a213522362f379", + "32e4ee8615c7c5c88dab7b34b77cfa52375b4f53", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-221.html": [ - "4804a8c02011cd0de6928e74ef0b0fcac098dcdf", + "6981a9aeb87e7aaed1d043c71091e3eec6440bf4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-222.html": [ - "0064ecd0f4c26203a529e727b88000c87da46c17", + "e81873e2979456aebf01c74ad679efa95c803275", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-223.html": [ - "954101d128ed86de3c18123508c6309743f76631", + "a28b4ee84b926d58a8a6f85e443c17da8ef86822", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-224.html": [ - "8a9daa1e70c465eca607bfe994e05d9e219686b8", + "5abc7e372ec9bdeed1e5861b63206263f2ed6a32", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-225.html": [ - "8a16a2ac08c6aba363292be87d68a6fa554f8e87", + "26087215700487d1b95183c3ba5d4bde6fe29a25", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-226.html": [ - "6fb141f164e11993d8d431b610d2b230f774865a", + "c86fbef301c59e8274cc47fd9201960449f6b1ce", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-227.html": [ - "f3c18c8cc6bdd7a94d0e2bee840a42e0257d176e", + "8c6fecf565fe53a1ff37d6019929516248052539", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-228.html": [ - "109cfa061ea41351aecc54f045fe7dc3c0616428", + "8f4bfa08b2ef19b4d1618346fb91e0016fe99a48", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-229.html": [ - "eb3793b9b0d8c7676f4a11c11422ffe688c02b77", + "837b29fa7e894b9e8dfd8b1337094583fa7598a6", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-230.html": [ - "56034a3ae67e31ccee553fc370c00d43670ec492", + "2796dff8ed933e00f6e615c3f83f1dde983fce93", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-231.html": [ - "3ed99547f0661ade3c73733aedeaf4b0f0ea0a1b", + "780db65d99ac182583c00307052ff3eeeae4e2a2", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-232.html": [ - "0bade641664aaa5093890ac0fbf20d3c4e3be35a", + "30274c14bc1a1dab1c50f44eba2a10ad20653aa0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-233.html": [ - "74f73634d546fc5079f751b4f2b0018898bf75cb", + "3ad5446fc28d763487ee6ab0d8ffa4d4d47cbd47", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-234.html": [ - "664f18a8f59cea4ce98c48cfd8de268e9da22a70", + "f86c30ecd70ab032f56da0a72e2fb3f90412cfbc", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-235.html": [ - "468c451e34670fa70d943b3553c5e6298156bbee", + "4a890c73a80eaaaf2c4d6ac64c798fc631748bdd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-236.html": [ - "49880550568c94f65e7080f25cbcbffe4150ed41", + "e20ea697e820a8887b5da69a28d7e26f50aaa8ee", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-237.html": [ - "aba5f81bbdaf44a9273b1caa705c4810d44b8f39", + "2a0983812afd0cce881b5f3e82ddfcb48357c1b6", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-238.html": [ - "9b37726f3f4dc89d3bace157009a8b4af6cb7f63", + "0ee9e741d492a5fccd31976f426e1d9237a88208", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-239.html": [ - "c23836880b4be96fbe1da5a51fdecd66c5846a1a", + "b55acf8f2a0d5e3d239c286d1ebb2aa3bcc4d10b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-240.html": [ - "76889f0be39a4855241495c1bfd34ff651adadfe", + "bc1038797a734d5a9b92a211948d3270912087db", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-241.html": [ - "882fa12e862328532f40d7a5bcb1cc677ede7c77", + "f0591cc33bb809ef13e2586a544e3add94de08e2", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-242.html": [ - "84e199499e2210e5b2cf42ac4e98bb67f628221a", + "2fcf14c2852f46d168ab279f8fd267ee47a178e4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-243.html": [ - "e714828bc360c601a4753a6d5f26ed627e137b48", + "c09cc01b923ab760cd8a9548fe00c528ac544680", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-244.html": [ - "1b2df4fe76d35b9b793789a2b6c913a5e15d5984", + "0a5785b65dcf371edd81f526bcaacc09bdd41035", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-245.html": [ - "201da7bd65da6807814b626624397b6dd40e413d", + "408504e62f189c42771fe01fdebd97fe69157be6", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-246.html": [ - "d3371aa8018de27c2c42c3726a761ebde9ab0083", + "324708c2ed3f11636c5f21801b041a6313681e03", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-247.html": [ - "e79c279aa2bbf824cbb155789a8ebadb78228b35", + "7dfb259f8505812a0e20a984d0780f022ee1cf04", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-248.html": [ - "91de91a3611ac94eb0a7e9a456f31e584dd930f9", + "dc05f394cfa2c9c689f6cbdd0262fb7d0007ee85", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-249.html": [ - "d795d74acc9861e61c17c5a093345f7177170ebe", + "a58d622d6911b79f9f85aa3a61481620b5a3c6cf", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-250.html": [ - "8d72a9de6c247a263a01d3677e5f9b2de045c159", + "f24838c01a9686d8f4fb63151188c01a8e568d6a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-251.html": [ - "9569af66e94dd1a2e8550b512e97582c4bc5f7ec", + "65780894f094eab19a49a7b1bf534061d7af5768", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-252.html": [ - "b7558ce1f45208e50c1e0eb4d9d18d0a983e9ee0", + "092dabd04de90066dc0da7fbc4c3ed6828dd4965", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-254.html": [ - "605d81436edae8ae8ea57cef267d223481164376", + "7b0fd2b6a2d116b04d24f054180096e667ac39cb", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-255.html": [ - "d907250bae982cbbf07103c8d2e30105e05a1aca", + "1d72672b23926d019cf3209fb45da3bc30c29805", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-256.html": [ - "148d6f27023954be2f291b4a0d5ce87d1eded514", + "7548e04e9712f778edd0997bf6758ab19fd543b5", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-257.html": [ - "cf97ec1d32b4c4ed319eb46ef61ed2460a0f0394", + "98e3baa5111c25724e8656c3670d6f1f67075a84", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-258.html": [ - "e6cfc831720301fd149fe33f894caeabc5690ec0", + "200e56c06e42f53b2fb4d41c33a9348aca79c224", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-259.html": [ - "1eaa17b6d3d882c7109c7eb4850b1d817c548a0a", + "2ca8563d82c3cdb8ba8e50619b519f7099a662e8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-260.html": [ - "3ce8df77741902d525fc88add761aa14ce0b1083", + "7b522e4f0f244f2a99b008a4f46cde72b62fb24f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-301.html": [ - "2bcd54939a8ce48bf698e1ef8c3c7dc684688e40", + "eca4709b8d2ec228ff1e8938b01431ac167212fd", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-302.html": [ - "4aa645f33a39b0311d0c5cb9d62f9a126a9c405a", + "4de6638da581613010a36a3a4f5053ad47fa8f5f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-303.html": [ - "2be35173b02cdf0aa73accbcf0e86fc33fa4700e", + "47c5b2e2ca679f51e3232bf2ac918d0d1b2bfab8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-304.html": [ - "0dc4f6d4739201bf7768106959185049a180fd69", + "d81a2c716c1fd65a38caf904d390f2e913cfec72", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-305.html": [ - "c847f78499892eb2eaa054313ea4c2c7a52f44b6", + "5f9848b5d8c59c2acdd6cb56d20f006672fbbd88", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-306.html": [ - "8c08341d25c58cbd395bf98593fce3e9989d440e", + "3a8fdf6b93c0bec8fba830e046894f4b40c25053", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-307.html": [ - "0a3c1f415c5885e5939a9b99d3117b164f877590", + "7c0990a79bc50abbb5a08f70862b59ef51aadc51", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-308.html": [ - "01e31e7b076655683aec91e3608682907810ee98", + "e4ad155567233e551d2a173ea881f118322e33fa", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-309.html": [ - "c672fb8e3df5430924898a0ddd2d5d52391a2e19", + "1871f5d18b1076352e3bdfa05c4dceee1d47b9ff", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-310.html": [ - "9b5dbb985f0fcc51b32f4f12a5fe8bfc967fbf2f", + "19a740083fb32966c063dea393c8f4cf408f5df0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-311.html": [ - "c705771a2d983557634a7e036c8f07080a51ac90", + "2697aade8005f2c9cc16603da82f22af6b37afaa", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-312.html": [ - "1ed3223b680f408dd7d00e381261c1e7404c1568", + "95d29c8dd609d7cde67ac0b59c374a38aa232f4e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-313.html": [ - "ac901f1a5d07e368fd8dea34e6d598c6ca0c53bd", + "8c5ab80114e83157ab5dd5deba2b7cf3b846c5c6", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-314.html": [ - "6d2d640b19c01f29cdc33ae829774aeacf8416cd", + "461ed6c890bcf2c070e6f94f439514d1aac6d323", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-315.html": [ - "23db1e8d48559aec297b49c41b92902f4fb325dd", + "5238ccb1d5c7d84f8904878b83879778f1b2b80c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-316.html": [ - "cf26e5f549045c4d32a6eb0d3b7e92dba5f9d687", + "0e8b55bd30a6b047af70fde3614c0d5e135afd9b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-317.html": [ - "f68e6f2e90453559d42164ca1d526370496c4f2b", + "3a717515995422f9efd47cfd3065a2b05250efc8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-318.html": [ - "c0d606138700b0cf558d37fbdf823bb9b69b8879", + "f235a95225f753b8c96b13514d17b40a12030c69", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-319.html": [ - "810ddfcdb7c4f00c04cca55e6f5becba5f12309d", + "c92fa8e6f774790243635c659b5328f562cc7b12", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-320.html": [ - "221ebb07d95a0e847e20312aa3f4775e7716cf94", + "fc541b496fb3eb927abd1646ac6d03b9cf573a92", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-321.html": [ - "db10b9ae316874737b657072a3d84e091989abff", + "a80faa3a6ce684d002f18dcbec47f9f9b78a7ad4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-322.html": [ - "7acfcb1d3ce7dd844593caba52023462ce4ac700", + "798c8fd8a8abd73cdba6d57194af7dc6090e79af", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-323.html": [ - "ce529ec86a792074cf2cb76c71082506685849ba", + "0b612ad0fc89150450517b7a606bb97f84aab3d8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-324.html": [ - "b847e63d87593b779d8a476373afe27c77c9ab94", + "cfcb8b0666171c3ddf4a96179fe6b4e1bdc23a95", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-325.html": [ - "9ccce7c20cf07bd0ee9d417280fe624c9dd6b77a", + "4d03f59520b2096fcc1634b5180adc98e7e2f067", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-326.html": [ - "5b5f2e76122e40842f8e7ec81fe31ed6607db33b", + "7a1fc831287e84e6fb29e508e00ac11abcc6edbc", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-327.html": [ - "f8ea1396d5158dca427566017aa8a6d8f5f860d2", + "e8c46ed6f5264cc8c0d82aeb0015a69d812d248c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-351.html": [ - "82fc564b1f3e19bc2b8ee3e02bfdffca52aa9a6f", + "f6608f9cfa78b79d2f8078b077f67bb89b6bec22", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-352.html": [ - "274bc5d4c6ef98aaa6acf56e38cd3e130f3b58c0", + "59616afeb12c9477b8f94fcd2003d8d851573f92", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-353.html": [ - "cb0e1d10e120972544be8b58c6c4daf9e45e6e07", + "1948faff80fa83d5f428c5e556c47fc39b17c40b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-354.html": [ - "1aafe93593bc6c6a4ff3c26198f06aa3d8ba3613", + "d0bef1a24cbec2c64270db95533574e5e77d6482", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-355.html": [ - "876e776bf378ae802a3be9d9ab353177cecec8ec", + "fa6374e32800540a15b0cc9eaeae0e3a6ddb279a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-358.html": [ - "9e186fe239433777968e005e27f996025f7aef55", + "76dbd687824970516763e17616d010acc8da45de", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-359.html": [ - "754e39219230782ab590eec7757a3a0ad8d2617f", + "e6f679dc474df4294d8cb24cef6c120380c0a118", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-362.html": [ - "a671ef16766ff405c05ddc4a97896821ddfddcf3", + "b12c125c0183cd448e6fe7ba582d4281e816519a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-363.html": [ - "1360552c76a4d37373fbf30b532a003f1221468e", + "7aab6e4a95409844a1db1cb354a6a5e73112cce4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-364.html": [ - "111e07827bf61289e8fd16fdd2570c50b2c8c988", + "f40dfc10d16c004f5e9f0ccb90e769698848c4f7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-365.html": [ - "8a3ea334a4b7678ae5e957f949b4350526380fe6", + "599eb53ca5de6c0ee3d3a03d9dbf4e05b24a87be", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-366.html": [ - "bbeec70ef8889fb5b4dc2babbeacbd1d356d0c15", + "534db6bd793dbd397bcf5e593b40eccebfdf221b", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-367.html": [ - "4bd63c6253bcd863b3de5f4d676998346677fb61", + "37d78f57b37b5b9166e33fa459484a3b164fa54f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-370.html": [ - "050fbe1c84a2fda8fa1848c9bedf65bd3b1e62b9", + "3941df8b3ea51a35d727d20ef5433efc21a42d61", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-372.html": [ - "0935fa360b977fb6488833143bd89cf69654a657", + "cd5fee25cefc1460612d6d7bb706d02b46814997", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-373.html": [ - "2c7a1daac5f2ecbc4f00ca80f49616dc1032c58c", + "59ea250625540fb34345fafb318905d662c7ca93", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-374.html": [ - "8c986cd576df8b73e66e6a02b0c4a49948aa5274", + "53e504f13eaaf3bee683a916313e5b1388963113", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-375.html": [ - "e23dc3a9c4ca6859316b059a144b91b685c43f2e", + "b33c9bf846db94bda458e60fe01bb216670c0a40", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-376.html": [ - "cc50e00aa5d284e74310a34874fd0e1bead2c461", + "3d39d23d7572526c4f2f1553237aa1050f1d574e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-377.html": [ - "7ac290f365f7a7e771c622cbaa050c913c77c2fc", + "fbe53fe8a348d06971c42b67e5229dee257b754c", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-401.html": [ - "e63306ecff469d0aaacc6ed0b491816f537731d3", + "b1b6954a99626b74003d1725684acda4a8461117", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-402.html": [ - "0edfac2f871ddb24bd9bb38ff7394009734c0964", + "645b00bf5270f23e64ba46efbbfd7f795ca26dd1", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-403.html": [ - "19887332be0913e525089f80427b9ab50d402ea2", + "73cbed926e9896c89d92867e92fdac1faf8bd518", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-404.html": [ - "32ec9aa9a913cd962174d5d5efff824f0c2c85c1", + "82c277d41a006c8ca638dcf05b41808aa6fa43a8", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-405.html": [ - "498b162a3acbed1b044efb115752d471a235f9bb", + "4d5e951916bb97e4ec56cf3237a7bd591977e114", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-406.html": [ - "c372b48de173d4cf478710f8d80c38b8302cc61b", + "b4bc645819f6952de3767f8e04f6b3de8e553dd9", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-407.html": [ - "a84c073f965044053ec837b817331aed80ee3860", + "b4a3539626cfc0490d5ea06a4039b8043ac5e674", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-408.html": [ - "ac04cd1ec6deb9a61fc153d805e9495911be0048", + "4dee41961ff32c4c0f4fddab9e2062a4eddde00a", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-409.html": [ - "aa9d5cedfd421a9d7e0b8e71dad901f612e998f8", + "0b7b36f6f6b01dbea6abe7a6595622959f45a139", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-410.html": [ - "abaddca372d3894922f5b7182390f5c3f8725e29", + "39cd031d703f8a67043d948912f517ef16ecac0d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-411.html": [ - "0ab40c70d10c2ef90fbc32adae39aff68c99e6d3", + "a1151873c07115318f65a50ea9a9ace12b5ecac7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-412.html": [ - "37f992d82880bde54e4c98ed2a53c5a82e422f27", + "f4dfa3a18edd8bd76d76294902911f4ae7cb2098", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-413.html": [ - "19a8c12321111ba903c378d589fd274b40dbab8d", + "38f2fcded2377df63db14e1477d76d163aae575d", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-414.html": [ - "0b276f9e23b13592e385152005f5dc424e0d54e0", + "8ac56fbd710cd8cc1d084464363a7ba018751d71", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-415.html": [ - "c088c545315b8338e72da36cfeee15d5276eb9a5", + "cb5cd48a47433aee89e3a01ee6665cca70ea48e3", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-416.html": [ - "15bb106e9a6a40c195429729519c8b8f90747113", + "0109186ec42cc0c4ef5b1918968d0b8d45461d30", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-417.html": [ - "3bb4c1c867b3336c93e5768eebcb6c8bc75078f2", + "46fbf4aacc5b9f0d246dadb52a919716a8d75bf7", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-418.html": [ - "537c26c8f0dbab068fbecdd1bb06bb3a259b060c", + "113805a7406842b2a10e5ee7b930492f0272b0c4", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-419.html": [ - "90e092d8354d8f615d1f6eeeba54ed0ed27e3e10", + "547f4b57e1a766c91168542b58884b0b19dba769", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-420.html": [ - "632a20ba72e4108301dcef1cb0536971cbb0f1e7", + "7b3d72bc17191aa09fc4f9f77d8473b372d37d2f", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-421.html": [ - "68fe5aa041887cac09c4f7110f0b8516cf5f458b", + "44a74294713d196e131e9c37784b32a181b48901", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-422.html": [ - "d35adea058c8bc1cddcbfc319fb282a685d66a1e", + "99d8555d2651dce472c55143713b40fc56c3bd97", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-423.html": [ - "e43a579f4aab1768841eb68c2706d5ae2d3e068e", + "6f6a94679d52a9c7fa7e028326dbf2758ea65623", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-424.html": [ - "fed4fa7fee626b56fdf45f73bbc544843b261a5b", + "9a457bc38662d468ec39949cfa4ef2d25b6ab70e", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-425.html": [ - "c37375e4df71e457f5398dc3cba173da9e384392", + "519d827b508fde5a6491b167cbb83d9878f61af0", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-426.html": [ - "62e031c0a83e27eb8b0ad4c3f2899ea6c995f33e", + "65db5c8280892a8c4d73559dc71d5bc6530e0181", "reftest" ], "css/css-text/i18n/css3-text-line-break-jazh-427.html": [ - "1ad99e0ee580c64506d88cee1043eae98177f380", + "44ce7c534458356c4f660b731f96af9419a47dee", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-001.html": [ - "a522f2eb3ba9010ae5a197b9840cf8a74da0bbde", + "e9ce226584b398456ed0921db7a7835897ee92d4", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-002.html": [ - "02db3eb72387471d20503a0c0e04d5deb50bcacb", + "b9d632509ee2603829a554740d04b11606caa723", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-003.html": [ - "343841b2c83882bd57d25f2db91453fd7b2dae2a", + "0881c73ae6b3086e1d2d0ad41b21392fb96b690c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-004.html": [ - "7d40237edd4a25e9cae1db394549f0ac540927a0", + "0ef443a7d78f04e76ccf7e4cb10ac053c2699567", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-005.html": [ - "6d906e5c88b008f226d8b1b87e0133c112d963f1", + "5a57672abeb19ce0e27f91b0c7f5ecf8ff36fedd", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-006.html": [ - "0027bc0c396de9ea2d7941558c482f70bc3f8cc5", + "b2b5d7f259219af01d7435071136d25507de23c0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-007.html": [ - "8eafa52597f2ace97b31ac6e4dd1e0d709e6f96d", + "8baacf3d01c3ca2ed3797a659b451855413fa662", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-008.html": [ - "56170bed270fbdc0d9a79ca504f243876a59a34e", + "1f3f1d50f8f7241311156aceacae297a9deaf1b4", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-009.html": [ - "e62e0954ce86d9bc9280870be303b3f63bd34500", + "08217f4d04a96e461efa3d292e7421922cab06b9", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-010.html": [ - "01d8a60f7494fa3d725310495213fc0c516fba03", + "37092ff1ae1147f1b48a93f5c0cc4da4efb1229a", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-011.html": [ - "c210432124fdd81f2ac484eb03f49e6175cac30c", + "51b409cb5b55bf0947e37b297266e8e7e0012494", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-012.html": [ - "1629e06e19f521686205ae78e97c0d6686eceecb", + "8d5809ae7986bdc493e290cc31068b478a7f4d18", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-013.html": [ - "c9ed41ed02420dc192446aac73aaabd3f9a45e79", + "def397265dafefa00bed7ef9b122667867244ee6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-014.html": [ - "869d96b59176fd4a9698d7c297065ae51aa6848d", + "22e41aff080c6dcc577660d36142aef3230c3feb", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-015.html": [ - "630c6971e8979f0c2973737b05076cb50304b49c", + "d80a80b4396750e82b41387fb339c53ada1a981e", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-016.html": [ - "37262f125eb176046e9c21e1fc21afeee59495fe", + "343388c4bdc25a184a82839395b522b730c60c2b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-017.html": [ - "d8e056f8a102bf364570e1c8306d999dff50121d", + "51568c3856a8e84179c58bba50827dd631a38977", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-018.html": [ - "c3893de678faf8cc921aaa3b139a2d5c45b03050", + "536a64c597389939dda686b52f1b030fd0303bc0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-019.html": [ - "711e7fe244b917748206dcf1527486011dc25294", + "75712bd032156320f534dfd7d1a6f21ba9117103", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-020.html": [ - "025b5f6f3646ba61fba99150af67ffb0c0b51854", + "a464a679f7ad87aa85b60d9237047498a6504db3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-021.html": [ - "820af2cf9d1f4fefefd6194d7bf23c5c0ee751e1", + "431dab59e435171a00a914f688c00bc2352fe630", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-022.html": [ - "bb0fb6255ea49e6a1bef69e893f97f48203b3bbb", + "de5fb2cc6d16636f6d29c52416f72d61f130ec23", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-023.html": [ - "465570533d6cc7b43b1beb81ad19f9cde8adc853", + "d43b3de93f3d84a3a81cbd84302de805d9d86b3c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-024.html": [ - "cf9bf536bd73e7f978de4399c02c0a7c8a6e0a56", + "548acd7b6d14027ab5c48c49d30d7af87dab02fa", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-025.html": [ - "db6cafc9cbacb17ccf431c9b22d6ee19d8cae3c0", + "9b9276295db7d88abd8c37b8c33e316cc64efd0d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-026.html": [ - "8dfe95af58271dd2d88def6fddcf952e0c1c17c1", + "16bbc0b203157095f317b41260a429af07ca2ad0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-027.html": [ - "2459c953fdc8bd751c67299ed7f3f5e67a0e36fa", + "f4b2fe2206bffee0225f37e316094d673fd6dd8e", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-028.html": [ - "0b3fdb2612aa501c16ef4111554bdcd1637c1ead", + "2b4959879a832aaab78dfc691e2f363e2072eb54", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-029.html": [ - "5df768c30ff5b86a0d8b31ac3795052f1794db95", + "105a6b1e8306f34e78478bbddfd468cb75a74c12", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-030.html": [ - "0cf3ebfc3e3bda69730280fae6009a9b477c99d2", + "7f5991446766212d93ad94279c7e5fe66cb36e09", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-031.html": [ - "b0ebd49e44ab5c44c886965f3378c02e7adfcc98", + "9d4aabf32558ba0b03668ebabb34b70b6666ae66", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-032.html": [ - "dea2ac118c1884478ca54d54fa6fc4f4c5a98ff4", + "e0518d709e256c272c1e9c08787cfd2072431767", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-033.html": [ - "8e2c9359d6f940c2b205466ac2e18e65cbadfb1b", + "07a4892ecf13b28c749a3339b696e4e516ebb902", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-034.html": [ - "e04a2856dc7a2be6757c09b1a146fc91f36dc47b", + "9762ff2c54c7fc54ad392c241b95058ecdc80b7b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-035.html": [ - "05c951c4abc2ff850dfe80e94086518431ebaff8", + "dfbc56b2d335dc95560d6ed1583f143bdd6dfaaa", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-036.html": [ - "7ff59a4d6ae659dbe894973a1ae5a8265cb2ac7e", + "4872ed4ccf7ed485fbd741256d9d931639a93531", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-037.html": [ - "6fceb38f7add59e85cccffb00c108a5dce010612", + "6feafb7e34799c4832cc49d69e446f56c3383e3b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-038.html": [ - "0a45a7dbf61ad2662c2c0c90da0c3f0989d49074", + "596e5d966aac4b8274961ef5d6b644fc41a95f69", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-039.html": [ - "329bbc5c9d7d65f937156dd60cd378da3f126850", + "28ca0248603e105e5df0643bd79448b7e1ba283e", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-040.html": [ - "6483e9c673acc150c70d6246fa254170d6ef38be", + "d4179485e703f42c898e2e65c8660eb129df9d2d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-041.html": [ - "71a23e81a4d8c660a0f8c43fa480cd7c96e81af7", + "5ac747913c3b54e169bae7a7e3b11bf8ee22d6bb", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-042.html": [ - "32efccc1a6a254d33ed9ce56c4652aee8a1ba44f", + "810bdfbe05f04b0ef32c2bd4ff5792386a52bdf4", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-043.html": [ - "b85726cf931183c08d198214f6ffb58f6c5e1ea5", + "f59624ed2a3eb567e6a0d2d970afd38e2522a3bc", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-044.html": [ - "5e17a21318704a7dae4ab47d7c5fd839efffd0fd", + "13bb390a65243b025b942e83fcc4a075c9514d79", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-045.html": [ - "46d1253d18c725268724020e53dd7ed95553c587", + "ab820a07095c923496ceb53dd2ee9626ae8e943b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-046.html": [ - "939dcc725eeae199edfdbf9e1feb54749790bf56", + "6d2c3e7f3677189fb7e610183536c8916f4993b6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-047.html": [ - "f16844d91c6207b88c5bb18ee97341843ede4f09", + "a2dd7fd232c02b5edb2c9dc372bd3c4e2ef9864d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-048.html": [ - "bb837355a2bc985b6b48299220245f894d4c8bdf", + "b54e6fe470f6bccfa0802d99e2e56b093fd6b834", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-049.html": [ - "e5ffd7a2b13467f2ad6281494a526a8f52fb3fc0", + "fe9971b88c54ad8c06adff6eb2d674e1ffbe8e77", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-050.html": [ - "de0ca41f88444897b57bb5728d7bd39f0142d2c1", + "a6df78c6ae3294f6fa0ad202c6996132442aaade", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-051.html": [ - "0e6f427f3ae686a50d1847ca70f888595136c6c8", + "94824e2862e78281773fa08e151d91de901f89f0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-052.html": [ - "ea269735315bbf1972b0a78027a27b54e4a4ef00", + "a2b2cb0a2ea9f15691b39b521c2d6d9972cb5ae8", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-053.html": [ - "c227eaa3ae2f872d0d679834c2e54639e3f13699", + "dcb4dbd96362c0f3338df9e86aff5cb8397ed6c1", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-054.html": [ - "76410ac3bc626066c102cb44c9b43ea7cbab19dd", + "f54a409d14b02ca7cc4463b068348897fbf3ee2a", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-055.html": [ - "72437047562a59b1a2c068b02e8dd1584c16155a", + "19fd7f6748b712a2aab27b3f06f96f0b90611476", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-056.html": [ - "02b6198c85911df7bd43c49d783a65e6fd449d42", + "2ee600a42af7eb493f1d088a2b8af90844771a59", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-057.html": [ - "2237a29c5bbcd18033079849d5000c6290f1212c", + "86ec4b658c0586bb420a61a09cce310b47c550ed", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-058.html": [ - "b62fe3f5e1ec6faab7d192c0205e78cb749ee2b8", + "6b85f71c98a7d49bd64c812fe0036045168bed7e", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-059.html": [ - "4f8fe5bc0aa5021786d8eda0674cb830d09cd26c", + "49bb4f654c9c5138768efff091a2c858814ee5bd", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-060.html": [ - "d985e9fb8ca02c3399213c9b6ff0afb7a772dc07", + "647412766316bc4793d5ee93c52d630cc2576a45", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-061.html": [ - "7e51bd0d283eb7dfce1787186328244d2adfa3db", + "f2d0cd8362282f0ffd20dd7a0ea7cddc4a75bf4c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-062.html": [ - "31a3d3ab615e9b1912cc4b20c8346b0b3620271e", + "26c6b66d9a6d570f1fc6273081b670f63264f487", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-063.html": [ - "75a49fdf92271a240c3c904bb1e528a067e90dee", + "6a9f9798cbe7068ba35294880332fe2a89f1362a", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-064.html": [ - "bebb8adf08dbacb739564baea0dc6441979ab97b", + "ec3bbeb57ec0c00b8cb56fa644031f0ddcb89b81", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-065.html": [ - "ce6054c72d4772e6000be891f529e9025635fccb", + "ce1dc1b9b6f9ce694dc5cbd36591d322c4dc3f7c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-100.html": [ - "e5b2dfd9a1224b45f15d0a1dc7cec79c02b302c4", + "4884d1db296f31e089cd9294cd92174d09e70d00", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-101.html": [ - "c1f32ab0f144f0a5e50651364ef2634b937cec35", + "b1755fe53f807122076e7bbaecc7b252119a07d6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-102.html": [ - "fb9c1e8997322507a729aab7582efa767678be11", + "539a37b8bb5fdc3892c13b2a4db01f9123b2567b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-103.html": [ - "0dac41df962a3607538c4161b46298199a3e7de1", + "f27c28f78f97b14f5110d908d7392e2cf7512c08", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-104.html": [ - "7293ba97e053ee4750c0c3d41985ff44b7382879", + "bc2bda99c91199da32fd6e45055533e9ce4bfdb6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-105.html": [ - "f0df411bf4ab28fc602d8db6b0d806c24364ff91", + "c2e631401b0e988c01ebe9f142eb8058622a2922", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-106.html": [ - "91cb923effcfff5694111c478b5933783e24b23c", + "1d15b9d64b105795d08cd4298a07d38a1e1137a8", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-107.html": [ - "5442c6b5b9073c2ec08b23e368e25323e8785b68", + "c26278a39c0bbad47ae46dc592d32f72fdc3b2c3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-108.html": [ - "60e904e82de447b1c34d03da1fd96efac5a56483", + "b9ba4f1f1a8b10919ee9355386b5f2eb2c514fef", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-109.html": [ - "7eb2e21b8942efac5256aabc8e4714e2e8cb4f5a", + "3c98931783fae90e3e6eb37859017c3596333c47", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-110.html": [ - "ff9de18bd82ef34dbf13e809d3473eb2cb12c1b3", + "8768ea8d2c43198381e68f9cb8e118de34ac3423", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-111.html": [ - "ebe515e578779fbd1ef3e692e6bb70077ddb046e", + "71636fef106c1f8a85e1d654accdd4f652880fd0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-112.html": [ - "a4df8ae83cdfc2d5831b978724169095d31d8ce3", + "83d6d79f0dd766b2d7fd1b440af5ce522515ddd6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-113.html": [ - "fbec5c236ba230b966b458d6e5788e19eb04d91c", + "4f6611cc82778fa6c0783f337476f29751abb324", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-114.html": [ - "bcaceb598a530cc54931876b1d9343c42e3e7bb0", + "ae91e00899e8be84f05e139787ea6fc98f6282d2", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-115.html": [ - "667ee09f98847429b48e2829dead587be7919c82", + "5c15851eb11d42fa3759220a47c5648b44863aa3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-116.html": [ - "0e25d53b2d9624905b42e4c01c35b15d31df6615", + "7024fc166472f89bec9078c36cecd681ee4c9554", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-117.html": [ - "b2fadc7ec6da943725bc64e443da766607409fd1", + "aaa7d66b89731d200b1f4b7091dda82c469929e3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-118.html": [ - "0ab846ba9ff4fb3520957fce8f4b3065d50ef5ef", + "2be0fd76f62c127556a749d8b159c7c29b603628", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-119.html": [ - "e53ebb831a00c27b029e61481a8bfc574e0e80c7", + "0f093970f64ea84b1246ea4d2c5d8e60667bdafe", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-120.html": [ - "38a0a85dd3a82f76cdd9bd2061987ca1674476e0", + "04b6ea9d0d6497b466e143e7488f87e0453fd9c3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-121.html": [ - "750a8d01b9bde0c1853688de19ac12d5d75c974f", + "b061debdecbf391f0309a777c4d97cbab16125b5", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-122.html": [ - "62270c71c83b7feb6e1e42f73d02234cfbc75c15", + "6738c7029300ab0af5276600188d2e6659a0b9ec", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-123.html": [ - "e6c61832c6cf89c23e0d054d874aa90f3da07c0d", + "6fe62a24127334687cfda93bfaaf9e52abb14854", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-124.html": [ - "d97e984faddc4868eb32d1a2d69ed064c542c796", + "9d283fd94bee92f3dcff525493aaa2ea43492974", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-125.html": [ - "8427a2d3ec4952fa7257facab197c5fc9489cf67", + "47d4b10aac9d9e982858cc45682615b277413c6c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-126.html": [ - "fd54351c7b5b01f05fc8eafaa7b5f114fc89cc77", + "8a557af5c2ab5086c4687104515381cd541f7ac8", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-127.html": [ - "f70d861d5b7b5d98a53e5d08516383e89d168c39", + "9ccef20e0890ab90600cfb1ed93360c61168d702", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-128.html": [ - "d0766e0299a85dec78894bd611c9b4286a9e46b8", + "ceb2d43e4e33fd454e6d49f72737a62b75fbc10d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-129.html": [ - "3caedfabda46f00381cfe761c744f660af8eecac", + "56c5e67f6237a80367929dca45f156ea8b6b83e9", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-130.html": [ - "fc2a8c9b093b035babe00ace0439026670d32248", + "015755baf400d239f74bdfe7934f6e33e761dc38", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-131.html": [ - "256a955bd2567c09693c0cf39647b3225667b7e2", + "85f7f23e74c1706fc3e4c7a8dba9b397784c8c31", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-132.html": [ - "45da3d63f492495dd462090f8b69e527ce78a6b9", + "e734485ee2aa126cf0adce468b6c638cfb98906d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-133.html": [ - "9573f92b2285aea7f282c4c6c612052ef0ecead2", + "38409a60566f5281cca6f70bcde22cfc355fad28", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-134.html": [ - "9a54feaf6d42707f68039ff502fc3e6d544d80f0", + "eb9c521125cb83c59cacc858f6cb123cec0f8903", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-135.html": [ - "f6dab78fd842936876394921d9d444937edee2e3", + "fb6a963afea080f9c3ec22dfac01397408b2b932", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-136.html": [ - "26f9d278ec993ac58474eb570ccafa93f4fb2c3c", + "9201d537662d9fd4857a943ef85bc2869837f690", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-137.html": [ - "d19eb5bb1aae5e794bb617c6c3547f4bc3025d29", + "f83e2cdb2a5e3a72dadac468525d92491fdf6b5f", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-138.html": [ - "fc5da7c2aa17dce3f1e97e2be2ddbb4e2da5dd30", + "9dcc6638a84ebf15939b3eeaf6b755bc2594a4dc", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-139.html": [ - "c010f740d1928f7369e474cd8a8d9101cad84116", + "944a434d4a07ba08dab4f42a7c45c5f4ff010d51", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-140.html": [ - "ef04dbb3544fd9f055f1c4cb0c472b27b1096479", + "cae89ec31b41a7067c271493a993d425bfa698b8", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-141.html": [ - "4eb3b9d51ab920b051ec029713b9aac935abc0d5", + "b0e0ed91f7d3e5f66198041d4263eff1a1f57b81", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-142.html": [ - "95b0e8c23c0f2470a307d3f1d6b4a9ce1bbc19ce", + "f80ea059e6f420e74ff82c19f6e2d181c7da8d14", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-143.html": [ - "62537f5fdaa944edecb7b1cd0beae3609e30ae90", + "f045a3a7ca129aa6ae9f1d6f03825fd75ed6218e", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-144.html": [ - "3951172666c7af1056ee9c046f488c0613d2a910", + "f3280a6a9407d921bb69c7d195caafa06096d199", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-145.html": [ - "e58dd3dae908a136e4b396c09c896018b1bfcf83", + "2c13c4d187e0e9dade5dd5c2b995694b2c1ef529", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-146.html": [ - "f56ab99d221a34ad18c2213da614bd20accc80e9", + "e2723c089d8a4c67d70359569ed9f20b6e35b0ef", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-147.html": [ - "65de696862b29a71e12069bc665f2640eaa72664", + "ea3027ce72f1e7d0065af6279fad368acefbb146", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-148.html": [ - "7fc5e1ed08c7b4e8fca451eea5e84eafaa0dc6bf", + "45395319b412f27e7b79da3bab159b07b6076fbc", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-149.html": [ - "86098ca9b692190b4f594861f1396c1584a1d723", + "493a77b56e1bf233dfafe66c188becefdb5e76ec", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-150.html": [ - "841506a46b93226d3149ad2eff91267daa35a6d7", + "1bdd0e18d4a26d1d087569ff505d2610a635b32d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-151.html": [ - "ddc5f98028c5531b0dd73ada7b8d4c59f4def92c", + "fc200106cf3674c24b88e8b47dd5d18817869648", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-152.html": [ - "161ca3d3c5c59c6f89467b106ab085a39883cd9c", + "3e950ed3282bc3e5fc90aeba5bd0dc9011170b17", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-153.html": [ - "4e84434fac6d2d441510bd9da14140e5aa2a2b3a", + "29f3c50088569d88a654234d89ad4370165f89e3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-154.html": [ - "ea1e9b3a97d197514a064c0a261f44760792c2f7", + "3ad85f1ae1907eb7d84fca3e72d00cf8030adbfc", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-155.html": [ - "4d3ac4de24e7fb230ccd439ccb275b16c7e8dd03", + "a7761d9e1602484a87506326ea69043f675a6b89", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-156.html": [ - "1e9853987cc6765a96f8826fac1e0689a5f33071", + "fe52526988122d0f010ac35d568d010353cc14d5", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-157.html": [ - "c4fb953e641df4195884a6de26737981d79a9c82", + "83ed8a58afbd5ba9c1bdeb0fa17cb7d7122ab033", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-158.html": [ - "5e432b9f5aa96ba06540aea40280ee0c21894a32", + "49dc55efc0002d562b72434d24b4b80d9a5cca5f", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-159.html": [ - "ded276367c0c52a8a4b8a4aab385b38c8ad46aa4", + "77ad1a84f89ec70545514623205145ab72728036", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-160.html": [ - "9c6139234639a3d5903cbe60b87243a48b924c30", + "a9b488feb842121f3ace164265df982124a4e575", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-161.html": [ - "f6e912febb4f3034eaa64615a13e1b1a419e68a3", + "8edd6b530955d20baea3e47b376256c6f27d3929", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-162.html": [ - "ea1024b005ddd378294e54ef3552e888f52a4198", + "9f0c403530f9d02019cf1c420cc2a1b36e36a8dd", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-163.html": [ - "9828fd5bb5eab4a3f2b082cc84bb98783a10d19c", + "4912c47c06c53cc6704e0d942a5e8fb71518c048", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-164.html": [ - "e33c1796066fb42ddd494dac3686c7fea82df5cd", + "7785301b8ba88c1980f0a6d79aa313591cfe643a", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-165.html": [ - "2ec3f2e72fc8045a482808c5b1d60605651ce58a", + "1360e7ca33839057babed45fa150d147bfc2e1f0", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-166.html": [ - "8dadb94d731ab6add5be035f141ebb4267d5e458", + "4d31ac1cbf075be3f5f050814656b5ddef6d4e1d", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-167.html": [ - "d872edfaf34c67dd8881a103498f123ef77c0e35", + "b9bce8e8966680ccc8a47d071a1bd28bcc280c82", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-168.html": [ - "ce400e9cccad7a88980cc187ea73d5640e640cf9", + "a0c1e1f68ed90bbb1f2a15b5fff807c9eb31a566", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-169.html": [ - "a8f78cb4c1aa568dedaff37b4531e37c0b993e18", + "463e609ebc48163950a32bc0e436b1de78df5306", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-170.html": [ - "a578f808f298222bec659d38ec9a7f4a1cf10b88", + "41c311420d7bf6791c470d73edae37f2324e9bfb", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-171.html": [ - "1a96be9f3a3c53ca69d5f0e0a81e14e9e945a585", + "3cc4e29bb49ca23b59a115177a62dec185d1b4df", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-200.html": [ - "4d5b53d7a152131f3f9093f11bb004c74725d308", + "209b2d4c89e1ea0b37581dbfeab820b180a1460b", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-201.html": [ - "3af767e84442bee057e248fec5c7f22c631b6331", + "42855ad1fa7d03d3b4ffbc6b37af9f3df332ac04", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-202.html": [ - "0cb4e9559422532b5e45f2b0a6b018727ec9dba3", + "3bcc0c36b47d5c3d038861bbb1efba9e2e9d9729", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-203.html": [ - "c9e92576c76b44b42e9da9c63140a85aff6b5135", + "23ee4db75d000bbe6686a9417d91f152149b9e6f", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-204.html": [ - "f7cc33c4e3b186f314827c43908819e1d61fe6b2", + "5b0960de6a0ff9468bcd187d33f40cbd0a19f1a8", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-205.html": [ - "583141eb922f0a0a5db318cf8b532e2c0001da97", + "c193cdb20eef2235d25b40bc2168cb65ae6ba058", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-206.html": [ - "124c4e1ed91945f0a0208e5d59a38e7bacb967fa", + "5c235dd2a459ec0e78dbb05b7aba65ac0dd0d804", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-207.html": [ - "86835b33c46eb03388ee324f6b65537f97c0d899", + "b0862e7b6d36187e519f30223027b301dc3adf8c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-208.html": [ - "f8d8ef976403f8effd9b170a406111b61c368271", + "aae9ede6fd610b5b9eee748aa5e9b8d56130a694", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-209.html": [ - "01daaf009fa2eb6c69b6b4ebc5edbd9b156dec36", + "373e9a1071a671b688e7c5ee9c50a21881974c62", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-210.html": [ - "013e1075231548a145b0e3d6a1425164932e5f92", + "bd3b4ae77dadc659e5606dc9f0833cc7bdd16e47", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-211.html": [ - "ea48328afae9b691c969fb7fbb31504315e27e25", + "716c458acfeeb242f0c55cabbcb92d3f668e2fc6", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-212.html": [ - "a5a587aba45f9560cef3cd6f9464abf2aaadc38f", + "195bc890550074ee17af8b40437f4928e3fb3452", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-213.html": [ - "fc4666584b653ab591b7292339fc0c6a235ce693", + "e8d63177c88eea09a39fd62db83e383930ea0fb3", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-214.html": [ - "9fe7eec471218c49a61cc47c3ae1ebc51507ff20", + "8b768cee224367d47c3e537bf69b7343505ad133", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-215.html": [ - "9dd0479e2dad9d4b1e4df5f604df2b05b0b37e9a", + "559f33d4579d496a16877f4ce02578347dbf74c1", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-216.html": [ - "79dc2f9f43b8460f6f74e20d75308f180525f6fa", + "a4bd3e721b66e12ec309e87649f97b7e0fbdebf9", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-217.html": [ - "7f5c4e5b9b1e358eac24f9dcaa41dd9c8ea678a4", + "88de4809077f221e3f12f8a2d3b4d3d05625c27c", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-218.html": [ - "5aab717351b1764c4b807ead2ab3ee97ddd77848", + "a48221df25300988b9d3dd4120d5924283615d26", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-219.html": [ - "6d6e8066a00e5b99f35b588388bf884d920b8b7e", + "805c3e16f9a839f1fb5dc7933a6bdbce99676e47", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-220.html": [ - "d1308088ba964073a7c92be98951b9a645da4dba", + "628de42d820be0e902310f4c7eb5a6996fd67784", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-221.html": [ - "ed5386a47e610380729ad550b123d1b533e7ee28", + "234b4856ae0203fc328d6b230b2dde066853f729", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-222.html": [ - "ac50e0b4aea2412c17a19c7fac6cf3bb5bf68f80", + "369b4ee448fdde05ca7cba493674188f9fbc22b1", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-223.html": [ - "c83c7f6b7dd60277d3f5b954b033b52d7e3e1375", + "8dabbc687db8e345f813add7637b021b222030fc", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-224.html": [ - "d1ec2f2d0ff80124b73ce830b4f0797ea558b877", + "7918d0d8ad4661fa7f7068eb0b3d0e5db647c295", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-225.html": [ - "65a9bff2c016c96903604cac36475b5c82b9d155", + "4baee0c9306bd759257c53af174dfde8be54b5ee", "reftest" ], "css/css-text/i18n/css3-text-line-break-opclns-226.html": [ - "7002c8b61605fbfe6036ba34b037e5fd79cedd2d", + "afdab8c40309ab8e8979b6a63d5208b5203a4de3", "reftest" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-001-ref.html": [ - "dfca6f69babcadd02e98b4175d04be157e350f02", + "6082da942350ad61f25ba3cf4a5800b631ce03c9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-002-ref.html": [ - "28a53488d7f77adf1a18f5ed7a0b2730960df130", + "98509802545c076aa32e887ddec0834d24991f40", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-003-ref.html": [ - "93767044b10fc4b3995014777d8907ba880eb44b", + "10cc60507bfde888fccdcbd1cdb7fac967f1a30a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-004-ref.html": [ - "b3a2e27766df5e3b4503ba89136f7acde042e590", + "bc20bc21004e4815d1e42c1503ebf0104664e515", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-005-ref.html": [ - "30641fc7d7e60e880f90e0253fb0a6094540d216", + "00e99ed73aff2f1423026be50099a08b5553eee2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-006-ref.html": [ - "82da52832aedb902f925c36ef4c4991b1589cc52", + "2597b3c0dfe9a31289610c13b9f82e9980cc4126", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-007-ref.html": [ - "021b8b1bdff93144aaf0f1415bd1e237b67b33ca", + "8ac890dd9ed4a20e85f0966d63cf04f220a69c69", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-008-ref.html": [ - "2544e05204670d031b14004921dfef6a5bfc30d5", + "fa1057da6a4b427daea8da253ab670bf9593ff7b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-009-ref.html": [ - "2f6e8861202d135276fc9b71139172d3b7e4664e", + "b4f0445889d41adf106b74de9a326d38b302d311", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-010-ref.html": [ - "e7937ca6aa9d076f3cbd1e31aa137e8ee2778344", + "f211eb3333692e58f73e068f3ee7581705efae82", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-011-ref.html": [ - "ed0cc6a26665382e10161d647428849642259317", + "4e5618fa12ac294c2b2d51ddd4eb1ea100a57421", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-012-ref.html": [ - "30d1b35adc80f6040865fc7fbd98bc271f1dc398", + "1da362d45d6e74bdc95a5bb344481bfd7f98d3ce", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-013-ref.html": [ - "71ac1b68f1aa993593db933ad1661abae8609e2f", + "79c0bd7585ca052df34605273e27518488cb096f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-014-ref.html": [ - "91f41bef1f07b3ca226a5c14e2dd1f6288b54e49", + "47b9521eb666d56f90dcdf9edfd557c3a56ea5d3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-015-ref.html": [ - "ccf1be90843f8d58e7009e35cd02d96dbaea0bf8", + "21222f83cd4fdbf9f79286c782304245f73ef469", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-016-ref.html": [ - "fe5ee74788df370fe862f72df20e987c5e282384", + "b5f499b4ece6cc8b319225dd0feb68ef4b5c9e40", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-017-ref.html": [ - "1692962f4584eedf7796f49ed470940447fde445", + "2b25105b56662dbf62366726047d9f2a80db366e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-018-ref.html": [ - "26efc38942f48855ff83f19b6594225962c2cc97", + "cb2fdea0f97da6e09477528725d0e89b9f1059ff", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-019-ref.html": [ - "387cd46f47818257d8b551edd5189b61fe931cf1", + "e3428d62e780b0f171642d0e98146a4ada7dfc9d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-020-ref.html": [ - "789954411efd3daf2da8f978f8df26a364654fa0", + "7831461c2ffbd13a39786f304670d3f0ee6319fe", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-021-ref.html": [ - "f2e5bc0a61b9f1a6a14a2cb2a7dbd175c26412b4", + "1e9d161d6fcdb76a6b8157bdc24e61b26fcbea9c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-022-ref.html": [ - "97e05cbc871285d454fa5e7d85a182abe379a88a", + "24651dc892e1457bd557ed9a8581bfb0740ed08f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-023-ref.html": [ - "9821da11083d10a689005390e656561c6ced9c21", + "80329ad9eb33147a85e7ce9d5ff543817f398155", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-024-ref.html": [ - "97072be75812fdbc2430d18a515c80c5b803833b", + "6d2053ff35ffc0e2f56c02d980909a91f0063869", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-025-ref.html": [ - "dc4067b2ee989c0b6a77aba8e145e34be09615c1", + "f5bd48ad1e47e10790cf78e8c6fb1b65cebac77a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-026-ref.html": [ - "2288d24b2d8df271850d0f8c52d2629a216ed37d", + "b79e8e028baa7226905d5600a21ed3c9e0606096", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-027-ref.html": [ - "841187becfa423b656db005b8a270fec7fa5ef6d", + "d2d7472534459b943fa159d31a2294d024bc1189", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-028-ref.html": [ - "49b3b973a9e74ad9482fb581c7d0aba0f81c22d8", + "92336d4693630e440008cae5bd4bf70ca0ba9f09", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-029-ref.html": [ - "90431351d1eb83112a10c1c7ea39ce14ee41ea64", + "7b57bcfc353a011751d300c2155663a2d9c1970a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-030-ref.html": [ - "ff16132f7620be1c3058743181e26de028f8946f", + "e9bd2382ba0d7e610f253e488e4784a61ab97986", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-031-ref.html": [ - "22f4248e14b82cbe087713a36510d4931e6274dd", + "edd5b91dd8046dd51ea5d8cc2eade1d890096381", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-032-ref.html": [ - "954d325ab1d4f0ac5b3eb650d0e6f1ecbdc604f5", + "f285a4e48de799fe2797bcabe6b7d06a5937bb67", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-033-ref.html": [ - "9d9a62d4c03775e4f5683f49a020e905bc502c6f", + "dc95ba77328b25209ffca0134d9b93358b868459", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-034-ref.html": [ - "34e60b8d0e4a721ed78f59d3a21f2ed9e3108278", + "3a743d8ff8e76ab1f55d3af8280e562ed6633a8a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-035-ref.html": [ - "5677f204846bede2ce5985b984cc713ca9196678", + "91868387dc188b7c7ee5527b33c830a2cfc055a1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-036-ref.html": [ - "37f93ef75d7444bf2883404d75257f181c61d870", + "1a23ce165f8f90b6d34f07a2c8ae83b5012bcf37", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-037-ref.html": [ - "76eec8d9e7f849779c6e0bb11074c294434dccab", + "f34760887c4a5189b2a7b17134e1910bcfb86973", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-038-ref.html": [ - "ed200844d2a43eec7b582fb209b247baf1fdfd26", + "c30fe7be3aaf69d599b5db77f6dc6246756e5d9e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-039-ref.html": [ - "cdcebf2225f49bae6a67d71820acf3ea8d4109e2", + "448efca398956294f9d4be0e03a44c945072de08", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-040-ref.html": [ - "3f0d889ba820e7c6e49d2b465da720dd55aee3d2", + "ac18876a34eac294c9fa2331a912c5287d294cc5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-041-ref.html": [ - "7a08ab078fa3fc2ed3ea92ffbf807c103655f5cc", + "1e2c82bf554445c7f5230cb7c2553761e030c51d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-042-ref.html": [ - "53ec5e04059edffe546558364e3b7c8af92c73d5", + "00f985c71bff25df8f9c021dd2b28d2f2fcd1c76", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-043-ref.html": [ - "21aa8b04136be703c06841611090490ff681a200", + "266ec275f687b82a58b1c1c148a468ce5a27a90f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-044-ref.html": [ - "ba0d6024ac3b211199680664518412fb27d76afe", + "1501b2c86f72be38b95b92eaae78214dc13d4983", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-045-ref.html": [ - "34aa79125f291e00353b5d40ab10617533bad6e0", + "7d540ee8adfe495c0dcfdcaf7b4d8e8b4be33392", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-046-ref.html": [ - "1e7ecfc3a1f830e895d1498145dd20645efe57a3", + "73b574c31f0586ab54f4bed00d6ad21e59713563", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-047-ref.html": [ - "c9151197ef4210876198ad96657fa5da7b658602", + "1ee8188e8a23827cf0057341251cb7b7f23ea669", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-048-ref.html": [ - "f7ddc4ae51b15aa91c455d63e75447684e96f664", + "43440a4d4c5b7fca758aa928ab49165c6d1f64f7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-049-ref.html": [ - "5007d8ca278ebaa71943b78bd435a67a458d3809", + "ec8e85543eeebbbc8f77387e4fe7c78ef8a8d1f9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-050-ref.html": [ - "2081ff797171ececbd773ed98ee521362bc15fef", + "bec922830e7d39091572334955bc9d5ddc08a6da", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-051-ref.html": [ - "5c9a646fffb9ce4ee3045506147585ce3e91336b", + "094d495c9d1a5c3fdc5c4cc7a062beb92f595de1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-052-ref.html": [ - "a8664c4e2de47ec404512035edf50dc1dfb42390", + "781480a57a954f03ce5ba9e1cb60ea0e591a71a9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-054-ref.html": [ - "2c51dbf9f0981889da614f25f63a7561eadf22bf", + "06be2a15f0d8ea57a1ada434d47417e78da372f9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-055-ref.html": [ - "87b854124130f94b56bb9a0aea78242546b73854", + "ae06952e5204f6881041d72c5d1fee3d40462a13", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-056-ref.html": [ - "8ecd9a4ff7b981267894d6e36bebf622f67177b5", + "e05bb3a24a2bed0455f229c08a2c77f60a8cf9b0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-057-ref.html": [ - "9c6114198625bea4afa60472c5c53bab8aba40da", + "12ddc360519c858f8fc2876b6168fe81b65269f8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-058-ref.html": [ - "93f4bdc2a258a493dc84b375ab4a7c64b7a3604f", + "55c5dc198619fb4764e0fdbb62407a171becaa67", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-059-ref.html": [ - "db5cf77f2fca3ba5a32f1699a1125b5f04c624a2", + "4165d4cdb8b09a60701c0ff91ec7deeb217d7eb0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-060-ref.html": [ - "da1967dccfaf3f90e8fafecbadf7f37c28a82f18", + "05a549e49a182ed08970890dc6f82e625edc7f5f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-101-ref.html": [ - "9011fc5776c0737ba6b6699bf375dbe44f4d63f3", + "c5380404026c3298759cbf4c892810f382a56f63", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-102-ref.html": [ - "964299dbf8e3339456292531cfc1dfa840952330", + "40f3e92859369c20906338fa1f08579b01a26022", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-103-ref.html": [ - "f41863de4f192367efdf8838de4c3df16240ccbc", + "f89700f5ba0d06a3006efd604195c160cae804e3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-104-ref.html": [ - "448884e5d52b9a85377b3fdbe14b4216677030d5", + "3d28512a69ec9c0ade00247430c13d7b437b8c84", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-105-ref.html": [ - "619d70ba425b9deacdc36e5c88c4f2dc4bdd3fff", + "09fe3e82fe7e4ae4fd5aee39c609b29796962ca2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-106-ref.html": [ - "bd2270cd5754b7586ff91474c8f10f743fc5e0f5", + "c0fff59280395d017e3879811ea3ff6004c21e5a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-107-ref.html": [ - "9f88f920d01a69b21f40a3e535e442cc471a4d75", + "30882612fa890d77953f9b0609ab184b6b70dec7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-108-ref.html": [ - "2bf97113b577ee59c97ecf7b6194eebabd98dc8c", + "0fe283a10580fee44058256a774b7a871d8058a0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-109-ref.html": [ - "a6b32633db13a3a595d1591dbf75781efc4958d9", + "8774c0db5f5a017c945591c73afeb15627a5bcc8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-110-ref.html": [ - "afdbd00d71005be908f0cc4781ce851b75e2809c", + "6bfbed2c0c44e724b504f1c6053e2adbc949024c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-111-ref.html": [ - "cf93191b4081b5bbd6ff78d7e0967d44ff211c4e", + "13f3044fb496bf1f29d9a788c414930263cb8074", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-112-ref.html": [ - "3ca6fcaaf8705e499e3e987f11c8aa436bd047d1", + "a6c7910c2bd3a7fc6038055f13098453c94645bd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-113-ref.html": [ - "d17e0cf9c6685e6dd7dc16da7b88020dc6948af9", + "ffd898eb5bb65f36c837825b5b7cb733d2555e20", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-114-ref.html": [ - "d9b724ccea3303f3720010754a22bdd65d0d7a3f", + "868e997f35239953a37f10cc2b0a98adca4e6602", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-115-ref.html": [ - "196b8b91957c3d34cdc67bcc1db1c5986c4c47c3", + "a186facb32a2349ada5223cec008c757f7bba942", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-116-ref.html": [ - "d2ce3e02ddd29a352e63c3189964362933fbc102", + "e613d1f3524e46eaa444199cf651f257b3087617", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-117-ref.html": [ - "de8f7bf9ef58c8f6a5e909a1729f76dd7261c758", + "b74bcd04b35aeb5deb942b3a22cd3579e34cbc2f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-118-ref.html": [ - "6f62113ea0a8d93b2ed491e323f5b0ff597ac826", + "3de1425ce1f8b6061d6c0d810851e5fb3529cebb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-119-ref.html": [ - "b8976951d61832aed47a67a4a9d1f71a66b5f636", + "7d40e32e2860932f2bb7387774943dae138b5dc0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-120-ref.html": [ - "f34a1d33406f5c9c8f527526b8d9b74074122b95", + "0b68149a3a769613a19317c7e61973767371af68", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-121-ref.html": [ - "2965542a55bbebec57fc7e05c016c710a2f038b5", + "75893ab076443a79e4f91547b7ac56f76722e73f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-122-ref.html": [ - "3a24b0d0bbef967b64f5702f30b28dc911982e96", + "8b1f48f31a331a21ac8d849b2e9ca6e9cf75cf79", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-123-ref.html": [ - "50fdcbce5c05bd671fce8c452ac3cd9d9539d2c8", + "26f9c86c8ecb4d5da26021d45c42f4b6474a1ef3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-124-ref.html": [ - "07a38b2dea707cf6f569287c5d335e7a66e23d88", + "182e2b32e6701419edc2b251f500ec89a6682f20", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-125-ref.html": [ - "e8b5a6d090e4f8d3898a089a499034877e4e8fea", + "9c62011694724550dfaef5ab8d85af47a7a7d97e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-126-ref.html": [ - "6f04db506dae229967ff9e38769d7bb77e97d50b", + "7c34cd29a577e980d9e4956baad1d907bedff49c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-127-ref.html": [ - "23241e97738c48c71792280eb9d9ffd2958b266f", + "7eb988e07076503d90c570f0e4b00cdf8811ab4d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-128-ref.html": [ - "8a2f7715f155482b343f38acd60dfa781c33e238", + "a1f51ed2d680d480333c1f14fcc60e15873d5a40", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-129-ref.html": [ - "d2b3581641f7d1defab8ed2ac57395f064c2311d", + "91b83cef7428fadbb15fadadad1602deb428ecf8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-130-ref.html": [ - "9027b440184d79aa76dc0dcf5770f824d1a28a90", + "1e85aedfaa85903f491ca16db7d0c2059b5d5d27", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-131-ref.html": [ - "13512274a714248f7ea2279fb5706a59a9cd6134", + "97855062b0ed6c9ccf25d79367dc6ba541aa42f8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-132-ref.html": [ - "ebf840d32497b082e420cefac74114c20159a048", + "6b75289970e2625cfaa711d2c03ea583626e4396", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-133-ref.html": [ - "7d6ab03816438ce8272152ebeea62ce6dea7dc74", + "309ba9b231de60c32b0c7fb7a67e16dac4ef9cb8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-134-ref.html": [ - "173069b4be21690131c6164bfbab372f99008ec8", + "5133323126696d82e9982b392054b4a5ab918db6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-135-ref.html": [ - "f981ab3ed38ae3564c178ec711106073e60c864e", + "a88c577057439ee871ab07cb643d9975985ea4e3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-138-ref.html": [ - "eabbdf8ae823b4169970548e1924c00a243bfc88", + "040310d324709c63ed556c8dd4ac215ad682964a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-139-ref.html": [ - "1678e464c02537b659e94694b0537217ec16f050", + "7da7dfb0ac6b05c00ba528057748b4fadcbce401", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-140-ref.html": [ - "25d5c939002b15b5889645ed03d569dff26345aa", + "bc804e3e89982b381d773f9e65182cffc446a24b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-141-ref.html": [ - "a9952bc7f9c7c26316978424f1c82df2f9fa103e", + "2d399cbba2b7559cfea4fb55a831394de81cf40c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-144-ref.html": [ - "ea6a33d39008c3ada16372b72881422d6110f7af", + "6c9826567825beec271e21315c7b14f8bd491067", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-145-ref.html": [ - "d8e5d2aeea1c79fe5479fd2d17db6c22ac2685e8", + "8dcc06dffe25426c1b6bd5591ccd9e98ea370050", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-146-ref.html": [ - "d9d28d28cf9c031942bcec5c2e5f148ed496fd40", + "70acd6b58dc62b4dce4d654d2894738f125559ef", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-147-ref.html": [ - "a4fa8dbfb7aee116f0d54882459fde136ce11c5b", + "2de87ab0914114de6cdf3cbe3a457c1702f2cd61", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-148-ref.html": [ - "1a5488d363fc8af7443002171dbd01b080e41e41", + "0002355944c7702ef58d6b6037558069e1f28bfc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-149-ref.html": [ - "cc2add18e259e1c758b0bda4f85999840d0bad34", + "b9e9f175b78d7aff904ee561ce5c17d02dafd386", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-152-ref.html": [ - "144685c6bbf03b507766b61518af4b8d25e2aa32", + "1ccefd587556571c2ff4d678ec54367a387550cd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-154-ref.html": [ - "5656d7ea31eaaeafc682b3d1ec6467e2c7a8dd6a", + "c836d65d217fad80125fc8d9f548675f053422bb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-155-ref.html": [ - "b47fa8b9eed0d934d87a9b7a372a6fcd15e500e3", + "479952f763d789f0a36e303ca93fb82cb5a359a6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-156-ref.html": [ - "fecda5f3bf28ddfd65d5d8c46e217d1578b015e9", + "b8d71264a1847cba0985d639eef47808bd8651c9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-157-ref.html": [ - "7d90dd629ba0d71700c789d1dd5c3a55cc6d115a", + "42e3329080e6a093543b4a4746fc80bdb2d9eaf4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-158-ref.html": [ - "79d65b05c7a6d3554aeb68aade25cd41b8e7a986", + "810f6a1da00eff851d7e5dbd8001fed73a4b9487", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-159-ref.html": [ - "00c9a299162f7f413b5d110961e6fa2897614f8c", + "639ebe25636f4c3fdf5c3eb42f2e5863def6715d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-160-ref.html": [ - "b5e0a3dfda4e89ab4432d1fdf8a21764ef871fd6", + "56626867be56e48d774a62f71b06431f38d9f6be", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-201-ref.html": [ - "a721aa3618675eefa5f6d74a3c6c7fc02140321a", + "26ba11c4f3b5bed2a01d47fe03f7a44f290fb692", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-202-ref.html": [ - "ed7535a061ac3370c6bd6672ac0f195e179bdd74", + "2553c23250297edafc267535e8f8a132b9dcbd01", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-203-ref.html": [ - "1e09467a3b6ca676e98fb507629033271d8c48ab", + "569bedf15b858b2f87125c05273aec447c70c540", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-204-ref.html": [ - "363055e8d6aec82aeaa6d1e1ec82f44301b1cab4", + "438c655a4743437919404a481e03a4ebce8f9bbd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-205-ref.html": [ - "aeaa5bae048386b2dcf3686b18b2d067cf5a4449", + "9fcc44295803c4a653b18f2d9b958059c076d337", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-206-ref.html": [ - "b534e55c30eae1545196e27002822cb26faa6803", + "e32113c4b6bcce42588c918e74bb269607397840", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-207-ref.html": [ - "ac12b1d29328eedf3c0695bed3de45fe58a6dd75", + "ba6e6263ef385c6449f63aa18fb0f253da337a1e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-208-ref.html": [ - "adea3b427a508aa379f7d0af0db284aa38a603f2", + "4cc23367ee70916f44ca87ef38e29d91648b91e9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-209-ref.html": [ - "dd3e251a5490acf5243cc1fcdbf3cee28f76f9aa", + "c44d68fdfce0e52e08ab01b15c58cc803ddd0613", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-210-ref.html": [ - "0c5df886d7b22720783ee7666246b64e1a0b55c9", + "d953016def6c80cc05c33afdd7b682cc1c9c2f3d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-211-ref.html": [ - "2629d6d6f8cbfdc85c6bbf364e6f1f8606c01a55", + "2301b4e05401a7e78145898965d1b588065910a6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-212-ref.html": [ - "e64e537f91c3d604d14484f7465c9336a7e4b2dc", + "f286eb6bb6afab619634bd33df3284bce7aff686", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-213-ref.html": [ - "3cb48d134deaf4fe719e905d3422e6ba19ad0f0d", + "38e7643a1f07498d561f7559d5f46a012d592b79", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-214-ref.html": [ - "225879ac2d80719a6788853b962182ab5cd86b00", + "912bece83ff03838a991b875dd77844ff71329ff", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-215-ref.html": [ - "3a4ee9ea8148d807120c935db414bd12daabe63d", + "ab11b993e46a475362608d0650c11ab4705db4d9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-216-ref.html": [ - "0214ec9a89d98f4c298acc75f72351acf06e54e3", + "96dc36b552350cc3b9af2088c809aa09c79936c0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-217-ref.html": [ - "f61d8ce136c87d77a09e8980875595029d27c153", + "81135b95e38540b88cc9f909544aa854c16b1301", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-218-ref.html": [ - "7817514d87f703a36b868c407c7cfdcf4bb1bf2e", + "0686f00511c7adcd170e77c77f71a5ad079990e2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-219-ref.html": [ - "a111cd6982e2c0d25dbe9a74550235c015a36b90", + "d8a1268b3574d8dfaab703c286ae0c71a85cfd12", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-220-ref.html": [ - "4e86951613ae51c12351dd369a2c5e4df509b7cf", + "accf3fbd0776cce70fbab9c81646916daf73cb7c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-221-ref.html": [ - "253fdaec63f183e44aa90650cf75f323659acf11", + "792c54c1dce97adf249415f6cf91e3360150c196", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-222-ref.html": [ - "a601b9c7c005dacc949dc15de8383b8ecd02b2fb", + "5ca8f8ecab6b4e9384a0ac24debbfac6fdbc6e52", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-223-ref.html": [ - "e418fb5afb995a614fbe1b72d8cd2bfa650d15dd", + "1ae89b2e6747a807e2d44af68388422399a305d4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-224-ref.html": [ - "9c8eb27061a79b39c72177fb2f54fd378c7fca49", + "150c765f62f01a966920b8b01006080f2bf6ab34", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-225-ref.html": [ - "6e8762d5a536898b6e1063277bc832efb715ef9e", + "d977319e844db74bad5bd4603857a4ca620565d7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-226-ref.html": [ - "2b2c56aa8db12911b128d7b3a0a6afdcf097d602", + "ae3f20d3e0a7b9cc96f9278ed79417ba36482105", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-227-ref.html": [ - "afaaaaa7c19e8902e428543566c228a114d8e064", + "3b5cf3afa060ae3dd9fb30c0d43a2e08e63a1227", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-228-ref.html": [ - "af9589ac6db504a781a0c84e0821255b9dbd9ec2", + "7d32aa5d5a4b198687e2a2501d2ae7a6aafa2712", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-229-ref.html": [ - "a31dbd9d2ee764f3c97835d57efaf4ccf466cdea", + "afcdf3c417b0d547a54563d50a96d5e550d859bf", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-230-ref.html": [ - "236472a2fb58a0ae2dc53e0c2986a2f08fd13d43", + "e5704a6349e9b07cbc57b134932b5ac4cf4e5dbf", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-231-ref.html": [ - "1c395a98caac273895fdb50b6c34a6c2779e853c", + "bda206fbbb50eeaaf3e88cdf577a2af8fbdd5396", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-232-ref.html": [ - "f19e98bce23cbae706ae2efbf1ad655465646bb7", + "d0efaeba2115ef1a08e18d39375bce68171f169b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-233-ref.html": [ - "1090c732db119e04c1cc0b951645a8f22a808cd2", + "4cadf8f3ef82e25cd61e23f86854b0d8a50dc5d5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-234-ref.html": [ - "0fdb453fa45674fef5af91421bbe6058d2cf403d", + "8c5b3b430de89c515aa2426fef369ebac3e8883f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-235-ref.html": [ - "c851eff5bf51a05c7458ff6150bedd8989238fda", + "a97ffc5d5a3593ff674dc76a1db59ecc58765ee2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-236-ref.html": [ - "3bb958e39e1bd38fd949e0be6ec36e06e91e6644", + "1d14e59a3b375ec99392a7e4adc77daed71739c8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-237-ref.html": [ - "5215f1800957bc83e7599c722bb194993f4847db", + "53d166d16535794585394a1dd36db71cd7d9d8f1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-238-ref.html": [ - "ed6acc979f85fc457c494a7d7608cf9a64fc167a", + "98e3f6bb1a4fdb978f25710c9eeebdeb18bb109e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-239-ref.html": [ - "634a535e43dfa5a3c12332bab6e64e59df2d6e7c", + "38e318b76acbaf23c8792c0e020714b7599d1127", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-240-ref.html": [ - "00d3cba4a2a05dd11cf1ccbb8e0da815fc1452b1", + "9492c8a0b13f9bc42c5efd3eb998a9cb8c5b5704", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-241-ref.html": [ - "91000666dc3781981f795024d8c148cf2ec4c81e", + "ae5af333fed66ae0dec314ba0d27a29f2704c03a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-242-ref.html": [ - "a776859586236878c60c2432aca175c05e3f0012", + "0fe2f498f81232eca45edfc9e07079560fe44e51", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-243-ref.html": [ - "0850e9551e8f342ec9cae9937d511132c85dbb50", + "a3b1213a990649a00bd620ad73ce0fcd393e56db", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-244-ref.html": [ - "b027aa73c3ccd3af1994b735b2ab608a7d21cde4", + "d8ca63695c544f5a2562bd2df2d7cd26a5ad2c58", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-245-ref.html": [ - "7486452826230a7d977b96d0e2ef10baa98b12b5", + "5ac2a9aa85906c28d181e427a57d35e647308400", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-246-ref.html": [ - "9c77b3f4b31f208c07c238d95d460548fb791c67", + "5725b700f4ea527369bafbeae508c739cef6d770", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-247-ref.html": [ - "6b3cd1fcc97c5541b20165760982f0ec00621427", + "fbd68590aa6041daff8cc8882e55f1c09ed8e3f6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-248-ref.html": [ - "db60724e42f366bc2b31a39743b385dbf0202f04", + "5458e7db3f524dd6b6f1975deb148a41b749e931", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-249-ref.html": [ - "4e75b2b46d9eaaa126aada1e056fddc857a60038", + "5cde82807c2ae56f1e40cacae413c5ca7bd60353", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-250-ref.html": [ - "d52583489ad92d7759f4e51b12b52dd9baaea06c", + "a96bd04aeb1c0bed465d02cc41b355010045854d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-251-ref.html": [ - "74a277c7873e6a16ce4001faf1bb46fb63974c87", + "9a6fe60ef6d2df2fc180de7e43f4f325bb542343", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-252-ref.html": [ - "f1cb98c91b71b72d0792ae1f9be21b9d080b2485", + "cc7f84b6cb271ec304bcdf53c38f9a24ea4198a0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-254-ref.html": [ - "e748935588ebb417c147700d9b8b1c2817407b60", + "2d4e679b99193703e89941ccff4ebe6bddc2934c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-255-ref.html": [ - "50ff8d4b92cc4de37a03cadc93e66a3022e5d714", + "433f223f39a8668275576bf0db5e12396c5b56d3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-256-ref.html": [ - "ac3b5b691aa64a4512e4a2bafd7f18bdcc405933", + "240e490ef36b5e6cbec422ea3bcaf6b3c4ac257a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-257-ref.html": [ - "1c5ccd91c0a9edb4ef50e0f87fdf83444e72277c", + "fb8bff456fb0ff47af61dec5f6533e5c6546227b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-258-ref.html": [ - "54038efd5ee6605ed2efab0259d86226d0086136", + "083532281eba235c5e1eaab4856332f69e81ee43", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-259-ref.html": [ - "c6dcfbace2ef1277ecc512d7e05263f7852c9f74", + "0ba0a2ccc169968fb4583ee9806ecbeb7d7ba7a1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-260-ref.html": [ - "08c0a4e55f2c1b1e4f0c2d6ae5c942ea56b36c46", + "74a65b8f63bcf55e2b4b0281c358527edfaebfb2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-301-ref.html": [ - "a94823f3904ee7d88337cd2966919cb17fd3d98e", + "c0ced8b08919205cde0c2e34bcd807920920b6fa", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-302-ref.html": [ - "f9d1f3811da69f83e3b219afa96e38bc64eba46f", + "e6ce275bc6525591447a488055041c80f37d589f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-303-ref.html": [ - "1bbf105ff2815626176dfd04555819d287c34e09", + "1cadc7ace740f213329a2388731c5a781aa7b1ad", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-304-ref.html": [ - "6ef973b37170831c09fbeaa143e59fce36ec8dfb", + "24b641816a3889dfdfabbb69f8ff6a7e3cd26a82", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-305-ref.html": [ - "9145c971f8cfda5427d9cda865bd4ecbe7ceb33e", + "6946fa518219f92e5e3344682ee42146227998b5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-306-ref.html": [ - "4f35cb4e402fcc3e18503d4661dc8efd09feb729", + "911821d51de3aa0a9e9d6bca384734310155cef4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-307-ref.html": [ - "8b9a78a45c262bb3fd588b545f29585805d5aea9", + "77499950ab4dd3e58ee763576ca3adf73381b1a4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-308-ref.html": [ - "23690e889d3f1f49c32af6437fe61788aefaf93d", + "02dcd6dd6c13c76f4be4c8142c18697538fa8ebf", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-309-ref.html": [ - "c5472f5c11519578407244b9fdf84c9f3d7083fb", + "7ff46906cbc8813dc101af4892a1d702db4a767b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-310-ref.html": [ - "c56843a746514289a1a692f071db3d628ac04f66", + "9ea4df8094941136658993e0f6d3c14d45c040ae", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-311-ref.html": [ - "b653c370355198c31e279c9d9f221f461b74a71b", + "e437c8a62e0d928c4e736e684ab7df30005819cd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-312-ref.html": [ - "1506bdc6f1666901f45ef8a23ed9797a3df22f7d", + "0a7d5b6959aad2e5763775f168f00a4682fb392d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-313-ref.html": [ - "148bcf8c6d25f6be7fb00230318e6dbf5be971db", + "759bcf1bd0f6f9457a85e6844e319038f9c417b3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-314-ref.html": [ - "e0f2c303941029c9ddb7e7683339ce8416c23df7", + "8a4df5dc6228eb64d118ea719f490fa2212ed65e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-315-ref.html": [ - "2ee0dddf0bea3d5dc5987b794ba0c44fc8169d9e", + "25a71d6ba6d4fdc558c41f75db492892ed86d9cc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-316-ref.html": [ - "0305fc90c0b987ab4c56b3377ca4df5c17afc3bb", + "b47ef87d92f993aa91643ee2719d0c2b2bc9e800", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-317-ref.html": [ - "52cf773020b81c4bf0478f545bbb8c9ada9e89dc", + "ea1ba09912f3a37541dfe6df75af350da55e5347", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-318-ref.html": [ - "6e0f2caf8104b26e218684233ca83c0ba6f4599e", + "2bc01d4162b548997cb0a3b9af6417abedd4e3aa", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-319-ref.html": [ - "6375fb18907db484237daf4fed1cc1626fda7b3a", + "3c5a085f46cc40222176b86f875d45e2303d50fd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-320-ref.html": [ - "cb8210ba004bcc951a8aa981fbe399f5edae1d1f", + "1a472c068c8d7553ba80f03215509b720223f4ff", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-321-ref.html": [ - "6e0f2caf8104b26e218684233ca83c0ba6f4599e", + "2bc01d4162b548997cb0a3b9af6417abedd4e3aa", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-322-ref.html": [ - "5c6a8231bd15acd4c759b8316e11562c37fd4701", + "c0860c4202a040f665a30fe052f53982eccfa397", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-323-ref.html": [ - "8bcd7ff086583f404d1883f699f00151b81880a3", + "93af78bbbebedebc117214089ff4bbfa277494f7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-324-ref.html": [ - "1ab3feb77c5d72103f8369f3914a43a09dc7eddf", + "6ebdf589bfae8ee65d4c98919c59e90f3a911301", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-325-ref.html": [ - "909be0b380588fde7307aeed549194416b252727", + "0200100921691e515edd7731077ec68f92b8903a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-326-ref.html": [ - "a357dd2dd62be9d93c69f78763bf8db804a420fc", + "a853bceb75d3b05aea2a6736b4c50af599fe6686", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-327-ref.html": [ - "fa47aa8bbda8ca05ccffbc4ae5fd3075412c604a", + "b8851a2aa4f50929919c8e4b8de744b0f5fbafae", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-351-ref.html": [ - "47c3cfaac2f2365c24524719d64f6a1e093633c9", + "f2aa294c489f4d141af05430180b2e315023dcde", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-352-ref.html": [ - "f40ed65f7a17c1231915d720fb1b457471411bc3", + "bd6d6ea616bf9c1463b1260d216cdbeb3d3a42f8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-353-ref.html": [ - "bd60a9f0ea1d13be1df1b2aaa80cb74db8d9810a", + "72ffc52bc9889bc26938ad33e786e2d07a198808", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-354-ref.html": [ - "b2f1ec32e2790f1c0296f62f210d28a80f8ebb48", + "8f597f3e8c3a02aff8db56a162617a4a5cf067ea", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-355-ref.html": [ - "2184ee89fc0e2c70b1ced5e875320624c271cbff", + "8b3559a2e18ed646ea412b27b49e847edd5bf997", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-358-ref.html": [ - "ca08db956cd731e55c14c911a9b1957a3467ee0f", + "e9447dea7592788d09a0e59971a426b455a7b074", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-359-ref.html": [ - "dc349b1cc59751ea1f1eb47b7319a204f77fbbed", + "c9a74d608a8ed0252c052bd86dc92b3052a90bdd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-362-ref.html": [ - "16b48b30e974e404649527e21dbc9290949af50c", + "c1e76fdc3f88b4b6059398066805655904e163c6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-363-ref.html": [ - "3ad316067e0bd27ad8a9135129357deaa1006ddf", + "1a297dab94fe723a9e80a60f0f0235a6270f0e84", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-364-ref.html": [ - "f91cd241c8aab34a1efbd9bb2a07b5dce580c012", + "9d5a457908a5184dda5e4685aeefa6bc2cbee50e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-365-ref.html": [ - "130b3497aec8a65e06a863b8e9686d9b64311bdd", + "36c606c12d2209fa012e8521658730a1afd36bb9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-366-ref.html": [ - "42ff6aeff4a7a1d9780fa8c030d601a4005cee36", + "0ca01a69d29069d906c3dbc7fabe931d517b5c3c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-367-ref.html": [ - "9c977ac12309fe093285b5fa912515226e9bed7e", + "62aa532fff02f4f036abadf5f29681cf913ab625", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-370-ref.html": [ - "69b5560b5a382e660254066d0dee43e1e50f4188", + "e7297d6d176b5426551d5ed9a7806f5160c557e0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-372-ref.html": [ - "adcd3902d7d1d5f4dc68ff7bd1c497e937c87722", + "1632b4da17622559ddaa02e4e8a5485609aa7897", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-373-ref.html": [ - "6b01805dca82f6b31cdaa8069ffff91ee41a7bee", + "23c89355d6ee5dcc54e344cae85b4d979e140b4f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-374-ref.html": [ - "bbfa958b113c949999ec1b5e1cf8f9cbe44c6f69", + "b8249f06dc602ea852d87e0cab85b9cec488b1d2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-375-ref.html": [ - "43bb3d65a467c8d859462a7de9c639814d9932b4", + "ca9db4f79783bae649eb853ccae74f19722f7c25", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-376-ref.html": [ - "2082b10b3bb833f71db2009a37b1df67c026137c", + "b541c0d8d022037d0a06e5fe3cd915e45c741f3d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-377-ref.html": [ - "9f2a402e337f3ec14d74e9784e07495a7bc9b5d0", + "480b317d4e5619dda77a6d9244563e1e12fe0dd7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-401-ref.html": [ - "0c85555d49248e2a1dbeffeac6100181c04d1fb1", + "995b94fd83ce7df9aa7ca26ed34e86355df8174a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-402-ref.html": [ - "ae95057ad1f3635515e23a3451858c51f85af45c", + "dac7c513953ecc196e427808aba57168a2c0633d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-403-ref.html": [ - "3de49f9566c883819f38b9af04b89c2f529e8c0d", + "e43f5a969bb0e6656aecdccdef173aa8202c0427", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-404-ref.html": [ - "6a52b14ec25806f5796c4f2e36f0bd22ca06a91e", + "7fd56c183dcb343aee0be7a44800eb3e3e135ac6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-405-ref.html": [ - "c374b87bc3b395ce10cf1d2713200ebfe89cba49", + "388019273160e16af8707081b1a73fae7acead99", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-406-ref.html": [ - "5a29446bdb02eb3caf45b20e0cef001cf57d9c1f", + "45eb93114fb2983ae70e5a1c986be486aefbe153", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-407-ref.html": [ - "54fb7a669f4df6f4c164128dadece8fb06ed10f4", + "7872f26746f793e56d6ef922dd9a1b72072f6e0b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-408-ref.html": [ - "94c02d1c23091626076e278c71c0c70272e6f4db", + "2d6e134ed18d158cf678c83649cc1d98751f9862", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-409-ref.html": [ - "40e22d4c8b1de49f627febcc8bdd55d632b3e47a", + "fbf5c1312dd3b59152092fc7026ec47bc9a6b8bd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-410-ref.html": [ - "10fca339dd0e3a0312acd102483b7115b7ef1049", + "91cef6f28923122e28867c011d57784f4480617e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-411-ref.html": [ - "5e760e6d0f21b8a79082ef6cde3f23b6c9784b46", + "24e06db24a9ae22fbcc7f00af3578ee8cbddc8ce", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-412-ref.html": [ - "a9f30d512c2b24e7884e7c18c67cb378c0b2f8c1", + "27a0fc3f09e89a5fe7fa28ddec0a3b0f4063f703", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-413-ref.html": [ - "1d6e1dfa9ae074870f7c09d2c30bb76ccfd94372", + "39daa88110c1f96940f91f43785ae72a2ac8b2e9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-414-ref.html": [ - "d93d2bc3956fedf5f57d8d7af2985b45b9a655eb", + "3c4e94b0f1d351d21e192ba1cdbffc9e817647d1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-415-ref.html": [ - "24c138c23c75442641ad8311c4adaaac918b4178", + "8fe4da90299a744c7ceda0e7912efb58e447635b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-416-ref.html": [ - "d78ad4ce20e02db2e61f1f1b3589d03e9c63d018", + "ffe66663be276eee80b85c35a163147b4478f7f9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-417-ref.html": [ - "b2888135a1400f92c14ff2cee7928a69cbf421af", + "be3828a9d64a2a003503c2d86d6cf9738477547e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-418-ref.html": [ - "f4d49b24e236860d85386d6c6e841159c9d9a423", + "357cc26e2c17f93ae3b952c3d54e6fbc7ac391d8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-419-ref.html": [ - "1e90ea2fa29c1bd3d72f9bb6e4c2c0b3e72d2f9b", + "aff4a0fdbda30b1341f4cd06232c23b65949ad3b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-420-ref.html": [ - "ca7b886fa40f9f534bbf30c22e787772cf6e010b", + "f241f055de5713ec89a9c0c321af4404b00f268d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-421-ref.html": [ - "f4d49b24e236860d85386d6c6e841159c9d9a423", + "357cc26e2c17f93ae3b952c3d54e6fbc7ac391d8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-422-ref.html": [ - "87cc19f042bf394dbcef95548a6d17a116c0c66b", + "429d81200715f7f658de80af05535ed59e8dbf29", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-423-ref.html": [ - "7c05a90386200386a958a888395207e9935f58df", + "385a58271f373d329da4e8a6711ff80200022b8e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-424-ref.html": [ - "236c2e1334c4aa79205d12ad0c37aeb84592aa51", + "2cff2294b9df143a630d2de959a539da961ad8e1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-425-ref.html": [ - "4216bf5db3a213c9480a3a487167dba8a4edf588", + "9923c717b4ac7182e1f06d65d7a66af15711aa63", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-426-ref.html": [ - "87c4c1a425e0566632ecca242cc1f0cbc99346cc", + "b94d4904c95a1897fd0d9a289f0e399ae93eb896", "support" ], "css/css-text/i18n/reference/css3-text-line-break-jazh-427-ref.html": [ - "c3d8829496f41b26cb5aa0399047a80f436a9fde", + "962f51213bb50db46cc04c672bb290a9cb1b0821", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html": [ - "fbeaf6e5375136c2a89bff4d694e3beadef52a8a", + "cd98eb26df5ec4c4aeac3b8caf45b415e7ef6caf", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-002-ref.html": [ - "746f665c86b770c58b4d786cf1b002275718177d", + "9dbbdfe3694226122b7bf0f19294d4a21cd5f587", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-003-ref.html": [ - "97bc6cc40fdd46020908294ea58a0727464dea36", + "2969462c27e267a48b43e54983fe9813907b0a15", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-004-ref.html": [ - "2ed590694cbcad7507ca78d5cb12f47e4ffafb55", + "4ae2aed85a1d088968f4cc6b4b328cb36e3bab1b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-005-ref.html": [ - "10947767f4026083af4777250ab1b0cc3b82f908", + "577ea0936032bf2aff99748caf18bc023c7a3d50", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-006-ref.html": [ - "5bbfb9886fd9845cf5389700447576afa06e25b2", + "4fe4daeafe88805284c84d9f56c49f915578181d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-007-ref.html": [ - "84164118f2048ed5e817830f804cbf7ee01cdf17", + "0e82bcd16d01e14a6733035dc3c6cc38b5278a47", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-008-ref.html": [ - "8fa5deaba08d21529c440d28b033c135f0f2a903", + "0bb44198dfeff9718c399933eed66d53dc6008c7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-009-ref.html": [ - "ca06c0b0965c36318b96d12d6c7cb41a613b39af", + "493e59718548d7d41ec1d2a9d7dbb6bf37fb3dcb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-010-ref.html": [ - "743808c2b928481e48011e52e29732074ba461d6", + "08f0a8e9df0396d7c596b53c4d4e22ed93d2055a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-011-ref.html": [ - "4aa75f3393286770ba046bc16a90812eabfe55d2", + "8ff92e69073fba4c3ed7b3d34ec1a1e55e0d550d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-012-ref.html": [ - "26886df3d882a6e0c18c81abdfc6eecc2fcefc5e", + "dc4cc7e9c23a9d36c674cd0822d22b3d6119f154", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html": [ - "483d74f6317791a2e3167a57ffda714ab2bd0aad", + "e80305b0df39b2df3bdc1f4876eb4433e6babcd6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html": [ - "23592abb37c7bd2804e74674b1397eb5eb9800a0", + "d4ac1cada77f7287da48ade3857e5f68670ba98d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-015-ref.html": [ - "05b3ce4a32f79ba44c96a8345d262835c432b47b", + "4e843d33b518ab41c7b1856a3b60bee6b4b4849e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-016-ref.html": [ - "ac51a597b4bce4363ee7eefb8bf306177d716a26", + "1a75c006909ff76e2321161c8b3c0116e2b54759", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-017-ref.html": [ - "e1dfad88511330021ebe092968c6e7a2383df594", + "9d069cd0a96c77c55ff8c1000b3a4e041d18258c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-018-ref.html": [ - "6ebc0e5d382f48fa94a642aad9eec29f8aee3e69", + "9f95cdb3dd7ab21f1a63053a47443f73c25ca3f3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-019-ref.html": [ - "19118aec279d37bca7dbf572b42e0ea593e31bc5", + "1806281f61e3b526fc4581c6600ec8ecf91d3d01", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-020-ref.html": [ - "f3b9f6fc5f144d291f21f8fef5bd593bd5971f6f", + "05d682b63fa69174ae67d9da6524d4686596cb85", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-021-ref.html": [ - "9e65eb182d0f9595afc5984d6f840fea943a9bdc", + "b7e23cf136ab674f8a5c4f6ecb6d299f7b334a54", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-022-ref.html": [ - "b219b6826864a583bdb002be8a95c15872e90604", + "00d7b0c32fa4f6eb6850b7ce407feb6783fcaa1e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-023-ref.html": [ - "e5a71bde19360a284c154ebb0811654d08acb4df", + "82aa12ac4693054beb93ce1ec0fb1f8b67f3a740", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-024-ref.html": [ - "0ae22090199c5f0e9017c5cca964a5b0fb618f3c", + "d939dd602db5463d25f7c5668b980f33baeb2edb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-025-ref.html": [ - "5e405ea454a478e0f4121404bdd63d3dd69d417c", + "97552ec925db52ffbbb6eaa4941720e68a56b359", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-026-ref.html": [ - "ea2e9020b419707f9bd3ee4e59acc8319770a871", + "da68f2e3e03c9e736f59b8350316190d4a6a860b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-027-ref.html": [ - "fb9405fcc251cfc01f5912fec5bc888a94defe51", + "c544c20b8e768fe25a36dbfb0c058e92ee2d9dd2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-028-ref.html": [ - "b327048eb81dd54b3183b966745a212c4ef5dd06", + "3943ebc1b77f97ffcb8235bfde89d8465f7d8011", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-029-ref.html": [ - "4ac01437cd8456ec291e61c4cdefc5083ddf5c33", + "cb4c93933c3b21ff99f1f1612de133ad108cdee6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-030-ref.html": [ - "bb5154614866b85312ba53e20179e8d2a3a83c95", + "fadaaade541da0293047a3f2868dbae5c7600544", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-031-ref.html": [ - "d646a53f169862867f111655e2b246365350b571", + "42a5c3136d0774018b28295e6129c10c54c2370a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-032-ref.html": [ - "ab4fc8400aebc6044723d69b1b289e03115b50d9", + "bc9a17ecd62c0fac18d46de6d2a04296ee007695", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-033-ref.html": [ - "de6fcf89b897a56d20be90dec101211dbca3b7ed", + "43f36796dc1094996a816e9b094b5b7e2220ce9e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-034-ref.html": [ - "ebcc9d9dd81622e01481f0101bfc6b2741cc0e1f", + "65f4e39f7d1cfbf6a65351962f07adad7893c7a8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-035-ref.html": [ - "cff9230fca672e9c3c979cada6a04b07c30f12b7", + "c31de3f493b78bdb4f2470c8104c0aca0f121d65", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-036-ref.html": [ - "75c9be5a4290efa40dc586ad28fb5ad3973f37b1", + "eef0810e674d7494c6c24a8d944c6463358ea411", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-037-ref.html": [ - "9a5a9cdaa3f7398896e40f28158c6f1f08b4ec1c", + "eae7517d0462aa958bb0e1e955637e1377619023", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-038-ref.html": [ - "2da58dc5566e566c53d830818cbc9b97c048dda6", + "6aea1d93df5c548cd44f0ca852df9b1c49900e7f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-039-ref.html": [ - "3cad606ddd3a44cf127019dd0a4b2705ee179172", + "37063433faa44a06a2ab6dd968f4043e41e0c170", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-040-ref.html": [ - "250adf7a97125bb9b065888f093be45257e0aaad", + "17d7eac0a81621b6ef1d81dc737be2428521dda5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-041-ref.html": [ - "10bcbc9d200ceca399b80fef37b917f3a229f7f5", + "5b46b881e7721f2a1be854de2d3c7cca9a0dea1d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-042-ref.html": [ - "bb5ea8cd4e1d737338b7fef1f1ff6293c3c4001f", + "26bd3c69ea63cc29debbe8ed7e8028967e0cd2c9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-043-ref.html": [ - "e3f9c3a486d4d101bd6ae26249d2203d9da4c761", + "477c9441680ede450415e5e636e12d50ed66f3a6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-044-ref.html": [ - "14e5fdae0ab215446260bf7b7581b37e89703dc4", + "f8f23e9514b377e46c4d05d26c290534a6a6e73e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-045-ref.html": [ - "6c5e817c23b7b33cbd14a2ecd6b0eaa9377e5aee", + "0f9aa5b83ff2c7e6e6d43ea4f13335c957067647", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-046-ref.html": [ - "4bd026da74ef7888b5ea3b3c980d3754e93391bb", + "cf41c4ea3b6d7da0fbb83baf2e3ee0c566afc2b3", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-047-ref.html": [ - "2a86455c41b029b3a0718046fbaa5896a0cc6fb7", + "4baf979c65a0ffa4a83e65e7fdfe5f457517593f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html": [ - "ddd38f01956d37d0975c170f60164ffa3f632f80", + "07db3b91c4798e502c9f8ee2b931d8d0d0f461ce", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html": [ - "f1b2699c8e740c5a44a6faaa01cebdc01caacbe9", + "b612c3d8bb714d1b951f963d50e8275d1a0f27a2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-050-ref.html": [ - "e0020740a0be1796186dd401d3682d68531c96d7", + "51aafcd995b3a093bb9fe4141af82810508c62b7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-051-ref.html": [ - "80ed59324ab0e2d22b7d8416c611f08b59701508", + "9a6f9651eb17923828e76fab5e31e1ab5a6073b6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-052-ref.html": [ - "1c5865e012f6859f457455e64623f012fee905d6", + "754f4ebe703967812d5e4acc12e9244e54a16f9d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-053-ref.html": [ - "bd2ae787e04d829aec4909ffdc312a604e8b59f3", + "b888e6d29a21f29e5e1bf8a8ea3fe4a2028ad554", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-054-ref.html": [ - "98bf8e97d233de1d0dfc58321b96b9b21894577a", + "58edbeeeeddf0dd9a8e78bd0d5571eacec285929", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-055-ref.html": [ - "2039de67e20205bf84806e0b9bdb689e539a5228", + "e840433959d080dbe590a51c7b7606a2e4225289", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-056-ref.html": [ - "bf1bbd23d7aebb95b7f5831927a1ec110abba402", + "1a11d9c91395ec4a76298d730f3e0bbb75a6649f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-057-ref.html": [ - "1af1bec893e95c8899ed6a6b358f34593c1d0759", + "3a6461389653f9fc2959a9e178bf8ad5e878cef8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-058-ref.html": [ - "2944c0d167096a63acb4045c4aa70f5f78ec7293", + "15bad9069e7247ff1c5f76fdf1f435964f2c0d5f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-059-ref.html": [ - "055792030ddd1b528c22f5eb2615afe4bf2767df", + "99a5d8364c49dabcc5e3893651d0bc6091214cb1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-060-ref.html": [ - "108dd8bca00a48a5c5f1040c5dc00e19facc5d4e", + "4da8ba0ab6178d285b885433956065ad76a4334f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-061-ref.html": [ - "6130629d80312f5930c3c66652d7209af35b3320", + "40e7db0773129245b80bb962a36f2cab5c3d7d8f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-062-ref.html": [ - "e8a757f5c6c961bfb5686323fef84435fbc8e785", + "33d65fa9c9ca5035afa1c55a327836b058309884", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-063-ref.html": [ - "f93b508fbe7bf93bd1e7b06bd5774b11f5185d89", + "6dc3c84742a85502179e1b2f1935e3b298395959", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-064-ref.html": [ - "08bdf3d6b8d4de46293cd9d7deb4baa1591867a3", + "a01564b060c783d6977cd749d871c1f485784b81", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-065-ref.html": [ - "bc1e33d70f471b70fc08aadeddbd5a1af6526e30", + "ce39a2e9ff626e7286b071a75bd6a6b6421945f2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-100-ref.html": [ - "46bc276cc2d3c79c47b9aaa490b8559ae146f71f", + "1487d06dd9fa8eb07c9385d5dde36f933834a03b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-101-ref.html": [ - "011386fd7d85dc5774ae53a170046a12c7131eac", + "1764f533983cdc98badc621f82b2695d17218123", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-102-ref.html": [ - "797a8de3dc344bd9bcad519e4b96a67cee6e5e55", + "fdb729c7e3a7fbad1204b2efe6d459a83eab3e93", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-103-ref.html": [ - "2765cd18ab4978d24189ea77d3cc9ab044e458ec", + "bfd23e093edf7139ea50048f85dda054fade3ac4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-104-ref.html": [ - "52186ca2dd0173bb6f3b3eb206751ebdf9f40beb", + "8403095b21fd03599120ae1fc6b9b8b8aa264010", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-105-ref.html": [ - "e1b9dfb87d2cedc900001bd79045b6b7f3f28cba", + "e833464ea9a6528eafde489e94b35a3764a98a82", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-106-ref.html": [ - "7001ee3d7eed7188db71b6895f21945785707c1b", + "b52da23471ec23e5319ee1387ac52c78ae63f92a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-107-ref.html": [ - "17a2307fe096dca00dcbebe667a0eb3f1a99ce31", + "a9297c6ed12485fcb86e22e4878217302b2d9e1e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-108-ref.html": [ - "cc24ffdce3c98f62712e4ef67c34dedf97520e29", + "a3d9eb64d81b4ab811d531eecd7a4d94e5e6cb1c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-109-ref.html": [ - "bb95715c2ec3c6c80c222570a2f2598be09269a3", + "cc5c9831f86de86a6a1a842b6ebd8ce353c6781f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-110-ref.html": [ - "be145d3f4eb38e7268054c330b12aab1108d22c0", + "03d2497cfc47d814bb94891ca1763256a9aef259", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-111-ref.html": [ - "c800f8b2c56f8bef95efb95bab9da4a167741b37", + "603907b1f1d95542259853b1e392f7339e6483b2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-112-ref.html": [ - "31ccbfc44555cae3964a72db169f73a97335d150", + "c21b2d1baf97e554156cb5a0a54a6b5ed48b88ab", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-113-ref.html": [ - "b602ae19d9dafdbaaf7dab96f95237a90a423dc8", + "f1c0f410ff8fc18c49c0d8863292ee8c70e27532", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-114-ref.html": [ - "d3e0500417e19ff22b7134f3dae969462bb177a6", + "23291316a44802e0640dbf3c9d3d0ab8fc4f3f3b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-115-ref.html": [ - "58a4638b61f15107a665ec41f4e1e60f9f5cac10", + "73d31d78125a675a603ae57d0f616a319e4028d8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-116-ref.html": [ - "b2965f709879c3384d958c4140156a96b496a3a6", + "6b15efd3464ff75026f2fcd9175469dc30d27f60", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-117-ref.html": [ - "30acdd8f84a5aac5013af76aa56cf66a9befb25b", + "83eaef84e9d0e3f58905b9a6f7268018e4014194", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html": [ - "fa1d1c23593e459b5069bd3d296a41e9c595b2de", + "df62ed8942fdb2776c0a01d9765b71a4167300e5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html": [ - "d5c9f5a0709a2261c18bd57670f0549298758a08", + "0140d6fce18604a51b1087c9cd1107b0b15b4b90", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-120-ref.html": [ - "5b50582d2497c73114934b128a43cbf7b3546f36", + "6ad1e876e894bb2a35ce655ec186854456b0a27f", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-121-ref.html": [ - "92b039ca931350e8c15bb9bee02540da14cd2ad2", + "3f51680c2c3c6337fea9351caff1df3c0ec6cdec", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-122-ref.html": [ - "0a723df7282282d038b451332f97aa117ee81580", + "ee7de0321063b7d2cab2c3ff9b031b7ec15c05df", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-123-ref.html": [ - "cfb16937d7328397ce02f2f3ed0851c3b9276741", + "7ee7357e2b006fb4f30ac05582abc3dfa25598d7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-124-ref.html": [ - "1d2ca51477fa43532c5ada06428cef9e2b2b09bb", + "b90f7ffea68f7273cd5e3b7d9e734d8522523262", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-125-ref.html": [ - "231471f94e018e85aa09892c46f2ac35ae64616c", + "07d647e178486dc4800fbffb59c7df4cbd629adf", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-126-ref.html": [ - "e33c94916882417aa60e166195a365ef36212482", + "eb088aeb15e99de5dd971f0b44c934522cbf3932", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-127-ref.html": [ - "5efa6c71bba36f7170041c3d1b301dc7280c56c0", + "ed4064d891350ba949d43546664ff442de228a13", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-128-ref.html": [ - "2e157db9718ab06de32df521cfd2b7da4ec8a01e", + "67570663753abea2e34f652f88c1279622a339bb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-129-ref.html": [ - "47956de87066b73292d85ba0e3319433b4b6739a", + "68e88948c570d7cfc7202e827a2d54e12bc3d5ea", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-130-ref.html": [ - "89b2b3ff080b3932feffac2c6d51ec7aab408426", + "4adbeb0d681642bf57c5f9f41e44e4fb74495983", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-131-ref.html": [ - "31ebf4294dfa6ecb3c08268d791427192cb2794c", + "62bc21064b8eeae47889941d1c3cfffb6d12beb9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-132-ref.html": [ - "c6bf2a9f25eca2ac13d9059b145279bed618bda2", + "cc4b11d87792ce3c3e0179791b3cab33717c6155", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-133-ref.html": [ - "9fe0e47591a839f36138d7feded654b8a65871dd", + "73a9c79e90b59f9f45aaf3210a3e2af508826019", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-134-ref.html": [ - "15e4c63a43216e9ded52ca0537b84ee66d855165", + "e4c917333999e30be9a4299a394a1fbae440dba8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-135-ref.html": [ - "cd08ea68a41a6b76dd2792fd8663e657478a6f10", + "8f5db2d540400942b97f5281e995114634f1b947", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-136-ref.html": [ - "e82b1005554e441271c70ca6ab16dcb3be70b54d", + "4eb6996632ce4fe15a07c2fd8f0ca893dae96cb8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-137-ref.html": [ - "1c0e576e402424cf2c7f1fe623cde3fc81b82922", + "2bc08ddd62af8996968a081360261800b28c25ce", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-138-ref.html": [ - "c9150ad00b2f549827eb0b29379617bfcb738fef", + "369e626cf0d5b6cecefd92443d2926b1eb256d32", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-139-ref.html": [ - "c7f3349b8756ab59564d8e0a9c0b3b61e5f46ac1", + "d1b4e9e79dd6b12000a86befaeba7d2407b7a68d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-140-ref.html": [ - "0ba1e2a2a9a1ec2962af5ae19bd1e3939a749ae4", + "c7641c184af0cc2b19b939507b74d5c0307f6598", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-141-ref.html": [ - "74f3015d19e4e0a211f184e7dae4aa2494b0f595", + "a2fc221fe40e594f10ec99a3af3b217dbe6cc90a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-142-ref.html": [ - "05ddffd7f50c83618951733dbfd6a66d04a36087", + "955329ed31c1cb6854bc0acccd7bde04c18f43f4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-143-ref.html": [ - "831456a95cf5350c2873b28507846b69cc97c2df", + "8e1de4d2979fa354f85140a6243a32000bed79d0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-144-ref.html": [ - "3c6c4b88301f6f8632ffb1cdd5f274bcead0fcec", + "8a3589b87b9b86d6044bed235e330d67089b7bc5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-145-ref.html": [ - "0f91ec8064517f43f301b6c56b4670d2ce7644b7", + "83b44e06c0ab235b1b391fa313819d3fb777f5cc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-146-ref.html": [ - "53be2d5f640b776f595f817bc96900b443cefd26", + "e17e1e5e93b62c4e8f2ba378ef9db47b732d6646", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-147-ref.html": [ - "6367b76bdbc67e0c8a15cf00b54dce0a8426053d", + "48e603f2207bbfc6a52b641d158d251ef9f4db41", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-148-ref.html": [ - "0be0724b5bf25820538bddb7cee2786b1a42f472", + "d03129c5390d297b7259f7f44b5549a1fd86178c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-149-ref.html": [ - "e5d0443110f28621ea67af06cececc6c96e5d53e", + "2a36a313f396ed636962d5a7185f8d068b237b65", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-150-ref.html": [ - "600b0b8d00c4fc3b11873a60b926cbb2574b98e3", + "935167ed8cfe2d0a8df9f65b580208bdfa23b3d1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-151-ref.html": [ - "79dd4c52d7419c14b2016c50a3b8862e527ec184", + "7357ec2195a816c8b52cab39b4474922e5a1c095", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-152-ref.html": [ - "9fb7af503f12e174afbeba772a6547997530f624", + "d8b97ae3f9c5868466750ebb5e9d35c4933f161a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-153-ref.html": [ - "d483c4e578288656064771250ee53432f9b7621b", + "4dda7948a8ea442ca2c7e4b46b831cf3ac1fabc9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html": [ - "b5fd3ce2707e0a51e144085c9f9901241d6544ff", + "cd266d86aa2de24d72f14f39ea675c18abaec31e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html": [ - "77904c2640f40de518c3f2e785565898b4d92638", + "b311bf9cfddc1217dd1dc5a96199ca8d8d786e82", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-156-ref.html": [ - "92154297443e63bb51d5d3700293a5f28474e662", + "0a078a6dbb4b296c62eb0216aba49b914c2b68d9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-157-ref.html": [ - "c317587d7677ee95ad7c934843e931902f2458de", + "1f37cf0d0532868facd36b3c36d9e63fd5c163c7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-158-ref.html": [ - "d820609a4a5c91f19e3855ca6b1a901076ed6d44", + "d0babda9a8d57303f17446eefbfe8b5eb149c924", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-159-ref.html": [ - "aa7f25dbce562ed8cf54d19d26978ac8bb079102", + "269bb9bb7d27efda6e93b0e5036cb8627b0b7ba0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-160-ref.html": [ - "456e69635ce8287cb6d62b0b075f43f1267e891d", + "ca8ca3f7e3cebc836cf3725a2f0a0e43f165be09", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-161-ref.html": [ - "5fab2a70e85550b370cd4f27b408e7f440914c86", + "4a26335f71d155c095165599144523020200fffc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-162-ref.html": [ - "eaa4ef41a4166a5047b9ed3fb38e09be11c5ded7", + "d29c662ba8c80ec0fb795e6e1ba06dfecb2c70e2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-163-ref.html": [ - "ed4a12a713d71b5f620a1c7fce48db65c35f1a57", + "61374e023513dabc9945b36731b3b5af01664cd5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-164-ref.html": [ - "4e5ac8e772b2de2dd72a91931e08a22636be3281", + "a64978ba365606008b4b0e2350278fec325ee58c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-165-ref.html": [ - "87bade33f4990b74cb858ef5ae0b11dc168cafe1", + "ccaa5a1ee6fc31647a67ee891e0aaed1f48718a1", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-166-ref.html": [ - "79bd7faaedf9abeda9d3d5ae9285db237e64697d", + "6696a8f648f2b52a88f6d0f52637ceefae85e3bb", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-167-ref.html": [ - "593a59c9cd9289ae5927da9e9fdf08182373cd80", + "70ca583a2b35cb92730322ad01aee4476cfe0279", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-168-ref.html": [ - "d726b6fd0b03d5bd5a4e020eea51b3a7aa226e38", + "55ef02c56bedeffcfe64e33aaa2ad1408f714c11", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-169-ref.html": [ - "851e5abb4a3c0a26c13449545c604a867eecd67f", + "c6668e6e5206c4ca956925e81fc21566f811ee30", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-170-ref.html": [ - "cd70131a2c5201f7bf913f837121752a4a5ad65a", + "2c30aa07aacf68b14d88a93bdd9b7f60b8e53069", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-171-ref.html": [ - "94e79729d2d8f0bf652eac82b8e8af12d2a35804", + "fa9e2bd858731f85357f1d238cebdaa318d7eb5b", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-200-ref.html": [ - "2fed07e8d53427463f0401f4671a233b9d6178b3", + "a5f2d1d0fa49a4aea50a41dcaf40bf4f6fe2fee5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-201-ref.html": [ - "11194bb8bfd84e794efdd45d29179a846e32d604", + "c0bfafc0b948f3f53d17617ca56bac1ef1756bb6", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-202-ref.html": [ - "37ea7aaa94d0c42caa85888046eed23b3853acf0", + "24dbaec026b898b954716c1fed178b1e80c46f02", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-203-ref.html": [ - "347f2820667c583c99b05147eea2d3cfb020efe9", + "36c990616a43b23832f26b0610b4e2abac2642b8", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-204-ref.html": [ - "ee5ef4ab69b1599edb1034c3f0ed85adf4ea6cc5", + "ee7d11c13d27c06c73eec14dfa84d84a63cc86d4", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-205-ref.html": [ - "ec71e81f5c51b85606114adadee994567c3d91c1", + "bc6adc992cdd689c9a52db43b56e1dca0b67863c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-206-ref.html": [ - "c7de8c8360f8fc3bf08efe7e05a413324434b56b", + "238ec5a979d84db2b4446a5f2685db73bd5e3f9d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-207-ref.html": [ - "c1b18822115c6c4d0cde21abbd1859aabb3674d2", + "fa1828d61aafe8648f02810534e102b2f005581e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-208-ref.html": [ - "5f1b83bd22f0c1507da48dab4c8027e251540749", + "2dac7db7a5e3d4f4a8b81d9021c514a79f204036", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-209-ref.html": [ - "b5d31a634f5ea373ba56ad3cb3c4bcf778191961", + "9a95a3b27d14b45e154edc7d96ffe76dc02cc592", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-210-ref.html": [ - "b157e3002f5cd17c8360b600f98722bd1069c1e4", + "f2d0831a11b02eb016a80555ba03ba6cf0424351", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-211-ref.html": [ - "ffe63085189337296cecb0eebd5145a5f836977e", + "95709c0eab96fd7f2cafe01d8ebb51ce01ca49d5", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-212-ref.html": [ - "5a547312f149737287aabe322c1bf84b1318a588", + "2b2c957774dfa5f6d0934a98d63dadf6a4248010", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-213-ref.html": [ - "25a3a5cf9d48e0a779893eeff2af2c91b1297450", + "e730a90d6938a0b4ca924efd783e3a20f0996b5e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-214-ref.html": [ - "de980091a75e052fdbbcadcd01c76696b4ce6339", + "0c6d6b6fa59429a29894a756a3937e3487c02fda", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-215-ref.html": [ - "5f878c44adf3ee2ef1842b19b2c256e705496bfb", + "e9cf46fd6dfa7fb82431b243d897c81c283acd1d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html": [ - "a0b5b98df539b1050eccde7e9026cf8fabd3e85c", + "fbdfa9d7795fc6294e3807bc913668f4501eb8f9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html": [ - "4fd7095a0b2d7c472397934f839a3654a14be7c8", + "9a4bb4d06e18c429ac3edab4ac263c77d08aa625", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-218-ref.html": [ - "3d060f63722930bc9a4d12a56be3c7f72c471d06", + "7c1550d8e3da72a43b3822de0644991e2f843598", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-219-ref.html": [ - "ca5624a027b28325ccdfcaa2050fca55a667977d", + "a02184d2c815b30aea2a980deac3c742619dfe14", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-220-ref.html": [ - "435161fd27736472bcfcf11d24388bf8ef49345e", + "80d7543332c5f18501ad635a6366bd8bd43b05c2", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-221-ref.html": [ - "399ecaebd82a1da78fb8564543ef9bb61944f6bd", + "612cf9f4ac5d88d47f39c65e0d2c19c11158a808", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-222-ref.html": [ - "d39108f2db6f910e18f35739557141e0690e773b", + "7ce3da1e82f1e738f4a47e40ae662aa62886b8c0", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-223-ref.html": [ - "135cd25270ca5eeb1f9564b46555cb5774da6e9c", + "3d18208ca74d7809712f1e80d81e2dcb771f585e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html": [ - "6fdd66e1db4e49d32655ab28702eabc0b9c88aa5", + "d5c3459ae7a3f98a76a969384b7377ad85800dcc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html": [ - "4399a689b0bb6cfd22d757bf1b13bc6d55dd45eb", + "acea6f0656160271223ba2513b84a89b50a1c643", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-226-ref.html": [ - "316846e8ffe056bc009c8cbc4d116e079eeda28c", + "0e2e723ff79271feeec145f7d62152fcd6647f26", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-250-ref.html": [ - "bb7537f87cef404164145f5e000dc6322e67de45", + "f8bc376655098eeff21a9ee1cdb7f9c1c01bce21", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-251-ref.html": [ - "686231e021ac733f4d5540057cf2646267bfbe0b", + "a6c38a238aa2a0e9b1f14424bbc7cc3cb819153d", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-252-ref.html": [ - "d6c14aedf847ed2a32a8a2fb4d58207b8abb74e6", + "f7eec144f9067b55bcec2740824eeaf244407c6c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-253-ref.html": [ - "a5228ca9c7f8bca119e85dc33f6c701ff51b1be5", + "e2c4e42e694d09c2b63bf45fd8ebb6acef8da50a", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-254-ref.html": [ - "8efabe720f379f907095eb8f473be716b73605e7", + "d9b9a742c76530737928992eae06a6e7e8b83ad7", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-255-ref.html": [ - "2c04950891af05fae8d72332c74598e6633a601e", + "719383caf40e0b5d383f5c949c08cdf928567d0e", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-256-ref.html": [ - "ada184c3d16765e14c5f6e0ee40951523da0efd9", + "e8559f6032a93d14db395b3054e7560d91c300fc", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-257-ref.html": [ - "0aeaa8593fdda32de9f1704c55080b68dda405a6", + "bbcadfec906474054a357c3a283819a294881318", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-258-ref.html": [ - "45b74979aadddaeeda246e640ce4433262c857e7", + "d855b8bc75860bcb279dc8e8466e38f762d9cc65", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-259-ref.html": [ - "0b2e96236358e339b0b7353b262410d8ac273027", + "acc513606724fd2fe3e22a0d25223ed0ceaa1830", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-260-ref.html": [ - "8deb075b27bded41e8cdffaca7d0fb80f95679ec", + "75b7a842db1963e30ffceb187e3f50f99074af90", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-261-ref.html": [ - "5e864fcc4a8da9a497f284e2581de5e8153fa8b3", + "3c0d7782193f116a8dea6db850f44b376f9dbe64", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-262-ref.html": [ - "42bd273b5292d75b3aa800160cfe547b1e61fa6d", + "5d3eeb95c250cb788cd5126fa105dd5ddeea1fbd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-263-ref.html": [ - "8266fc231640911d887a8fca0d39200acf4db658", + "bba20c925ec467b59ca8b0b6c0c4397537a0411c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-264-ref.html": [ - "40df086e64c785adf7c9a3817c6ebed9efb7c9c0", + "f93580e59afe7780b324d5abfdbc08c3b536ae8c", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-265-ref.html": [ - "798129f2a971aeccc6ba3ed47bae33d892d102bd", + "afc7d4fb6639b78cd85cf323d6d443b0f136b426", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-266-ref.html": [ - "1e04f7f746fd0efa656529dd663cf76717cfd7bc", + "1d091947e142c92c77959bebc01388172fb247fd", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-267-ref.html": [ - "37336fc98693072cb91a20d2f4510e5fac8d944d", + "ccc7d7a9d5831728ff76fd3784c5328c36e01eb9", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-268-ref.html": [ - "2c7bbaee5ae5479fe37561f45b456a1d5fe7c0ea", + "284f130d754f1de8f79f07ada76e546bfe6406de", "support" ], "css/css-text/i18n/reference/css3-text-line-break-opclns-269-ref.html": [ - "26bca4cd34e696eb6914efbf085d16b6b1582d7a", - "support" - ], - "css/css-text/i18n/reference/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", + "15dfa6a001606d22b3fcdb4b1d3d90cb8debd03e", "support" ], "css/css-text/i18n/support/BPG-Ucnobi-U.woff": [ "2dea462fbc4e6f667509ca75636f1394e7b11378", "support" ], - "css/css-text/i18n/support/GentiumPlus-R.woff": [ - "d09831467a1b1a17f97271ff027d413e28b4bacb", - "support" - ], - "css/css-text/i18n/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", - "support" - ], "css/css-text/letter-spacing/letter-spacing-control-chars-001.html": [ "f5e41752df238877b54acab9289a79fb9b59a9e5", "reftest" @@ -293763,75 +293743,75 @@ "reftest" ], "css/css-text/line-break/line-break-normal-021.xht": [ - "fb00369162714c957c67db165e6bff79dded0dd9", + "e0005aa0509a55316bab50c0368512c62132a347", "reftest" ], "css/css-text/line-break/line-break-normal-022.xht": [ - "b4fe741272b65f52e28fc9064554759b38136bb8", + "e1461a3d05afe63179f0ba49e1685fdb91cc102a", "reftest" ], "css/css-text/line-break/line-break-normal-023a.xht": [ - "5a37ccd08eda9380cc08b9418936fdda6788ba64", + "9b0a7fb9fb486d5a3230d05a954784a13540cf7f", "reftest" ], "css/css-text/line-break/line-break-normal-023b.xht": [ - "bf4a6bc4429726bc765516c54aba7f1bb7eb25d6", + "00ef31bc22d6d4c73a2b6d2a060d9edf1ff87b7e", "reftest" ], "css/css-text/line-break/line-break-normal-024a.xht": [ - "cae639ef15da1dd3400fb9d2dab9491704fd83dd", + "60e7810a06fdc65be70fce5ad6cd3a67d94baa5f", "reftest" ], "css/css-text/line-break/line-break-normal-024b.xht": [ - "17b74997e2d4b466b511e27960a2284b4c8e96b3", + "634018ab5c30e499c6eed93465cfb7d02e2d3f02", "reftest" ], "css/css-text/line-break/line-break-normal-025.xht": [ - "a0d25c70400cc78ee2e54ab27078a0b6abbeffe3", + "5a41b63c46c0e0e5fbadd007177d7414fe0ac8b7", "reftest" ], "css/css-text/line-break/line-break-strict-011.xht": [ - "60c73fb5f8f03e3f935c3086611835ec60317cd6", + "deef4c827b5323ca7be4ff758b36f2a99316d5a6", "reftest" ], "css/css-text/line-break/line-break-strict-012.xht": [ - "c91aaa16c441ba9b50cc49d0ef9c244811dcd724", + "91c48f5ce5c8d996e5a85921fe4590ce95243016", "reftest" ], "css/css-text/line-break/line-break-strict-013.xht": [ - "054abc5d482f1bf0a73ef834f8ccaf56ec7a3dcf", + "1625e7293dc652b89b9d5312dc74e95d7103ffd8", "reftest" ], "css/css-text/line-break/line-break-strict-014.xht": [ - "e15f978187f2925255243570db949f7b521142d1", + "bc9a381335b8c2475d8a745cfdd01915b4a56917", "reftest" ], "css/css-text/line-break/line-break-strict-015.xht": [ - "bd76366597fbbe086d5a0cbf3b6d7ae1cf0d808e", + "a9b682fef0f7acaf9058ff2d2514b94928671607", "reftest" ], "css/css-text/line-break/line-break-strict-016a.xht": [ - "897c4731acea209f4c56e82ded459a0bcd706f9f", + "0d355f165dcc101d90c90f24dc70938ba7cd913a", "reftest" ], "css/css-text/line-break/line-break-strict-016b.xht": [ - "b1a20c3f11a53988100e96647bf3ad5e17e1aa5d", + "e4fb64245c7bd9274e3a1240b81434d58f2696f9", "reftest" ], "css/css-text/line-break/line-break-strict-017a.xht": [ - "5eb4acf62f30785d1e1a669e8bbef275699cb4fb", + "1ef4e228b743b67308e7daa149ea040e5873f116", "reftest" ], "css/css-text/line-break/line-break-strict-017b.xht": [ - "171a0a3d6a4ca0d82c404d8442c72fc30d995b65", + "f9c1ce1b514450757796500b3c53ee6e8f84e842", "reftest" ], "css/css-text/line-break/line-break-strict-018a.xht": [ - "f1c63d4fe05a1cbe3f83d68dbed7200295496472", + "c262806975c9049cae9aaec4d564d1d6d52866e0", "reftest" ], "css/css-text/line-break/line-break-strict-018b.xht": [ - "d5f4abd24b3c6b564d9417ea4e198652ed8922f6", + "14de59c749d0ac55a755ce4a30ffbecfb89fced8", "reftest" ], "css/css-text/line-break/reference/line-break-anywhere-001-ref.html": [ @@ -293839,83 +293819,75 @@ "support" ], "css/css-text/line-break/reference/line-break-normal-021-ref.xht": [ - "25c8552c180d2428298e49a6f979b12fddc5bac2", + "df5f6099729881b1bb449f8e7f7642aff9575856", "support" ], "css/css-text/line-break/reference/line-break-normal-022-ref.xht": [ - "cbfe5d0ea23eb665060027d2e0f7daefd3b683c8", + "c202a75b1b37ff86d2e3f4467213c75211869807", "support" ], "css/css-text/line-break/reference/line-break-normal-023a-ref.xht": [ - "5582386187032adf114c8ab475acf85cc7b6abd6", + "87b55393c66837ffa7146673086b00fb0bd780ca", "support" ], "css/css-text/line-break/reference/line-break-normal-023b-ref.xht": [ - "3ddfb1f9039f909dba79677d13819ebe07acc667", + "c9bae438602a294292656e7abd553cd775ca4d63", "support" ], "css/css-text/line-break/reference/line-break-normal-024a-ref.xht": [ - "6240382b7b32ca3535f54191fb4612d334edc886", + "40bc6c006bfe228b3906db248d74623643ff5a08", "support" ], "css/css-text/line-break/reference/line-break-normal-024b-ref.xht": [ - "87ef487f6b5c1025fa1d217f5e3a5f52a4e57016", + "51fbacefed3e99ba0d2ed0f3e962d53bc441808f", "support" ], "css/css-text/line-break/reference/line-break-normal-025-ref.xht": [ - "aeb2a1eb31cea495fe4ff5378100afbe78272767", + "505f2648f4170c7f16187cbee9409c5debc1b8ef", "support" ], "css/css-text/line-break/reference/line-break-strict-011-ref.xht": [ - "d4d21a3931096c4e507ee5a6aefeb75a0ee03b16", + "801a813b828a2a36c67c4d3b14807cfa88a96748", "support" ], "css/css-text/line-break/reference/line-break-strict-012-ref.xht": [ - "483a4a15b6cbc0bd703e11792071a7a00331aa4b", + "172f9d7fd2015a4ca007027fc2b5b07953510c86", "support" ], "css/css-text/line-break/reference/line-break-strict-013-ref.xht": [ - "65ad886761c63e104390dc80f77a00b6a2b747fc", + "27815fdaead901bac5941b81d2764f4586b6ba3b", "support" ], "css/css-text/line-break/reference/line-break-strict-014-ref.xht": [ - "d56780dbacf6552cdafebfd34c9c9c608f479aa1", + "95413b83a63a3fd8d0c2abcb8baa8c4af1c5c1cc", "support" ], "css/css-text/line-break/reference/line-break-strict-015-ref.xht": [ - "b6e22eae16760946a54773b97f41d3b5d22dd731", + "cf32263b1e2a116f7d093a7963a9a4610983784c", "support" ], "css/css-text/line-break/reference/line-break-strict-016a-ref.xht": [ - "899de58130e28c0841b8fdd86ea44b14631bd5cc", + "ba30ba34333915157088a87e4a388f3b76e7a1ac", "support" ], "css/css-text/line-break/reference/line-break-strict-016b-ref.xht": [ - "f8d8aa9e227226b93608475fde7ff48238a5457c", + "a5efd6e9c889d447a5d63675ac66127d56208814", "support" ], "css/css-text/line-break/reference/line-break-strict-017a-ref.xht": [ - "014347b88c103ac331d40db0b6a86706f9f01a13", + "b4f826409ceb12c34180382dedaa6cf6dd3e32ff", "support" ], "css/css-text/line-break/reference/line-break-strict-017b-ref.xht": [ - "d85bf2fe3c264167340f4b7bfb754d13f2d3b12d", + "b7666d3779f515011a3f35267e3416af80e643e3", "support" ], "css/css-text/line-break/reference/line-break-strict-018a-ref.xht": [ - "e4f9835b57cedb8513be9dbdd34a9fff67ce22c4", + "28382a5ee66ba23081d0c3562508d7c9a057804d", "support" ], "css/css-text/line-break/reference/line-break-strict-018b-ref.xht": [ - "1bd92463f6514ba5e8ff217f28ca03a13b2c7043", - "support" - ], - "css/css-text/line-break/reference/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", - "support" - ], - "css/css-text/line-break/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", + "087ae59ceba531e62b44b8eff861a0ad9ecaa192", "support" ], "css/css-text/line-breaking/line-breaking-001.html": [ @@ -294118,10 +294090,6 @@ "cf1181f97c12f50c646a7d5ad4ba26bdac033c8d", "support" ], - "css/css-text/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", - "support" - ], "css/css-text/support/pattern-grg-rgr-grg.png": [ "cfb6ecc271c296c69b133a81f350a777b608bea4", "support" @@ -294727,67 +294695,67 @@ "visual" ], "css/css-text/text-transform/reference/text-transform-capitalize-001-ref.html": [ - "68f159fc5da422073d77e2dddb2d5a35afb24822", + "b74a82c1f0eb462f0234015ce724160790481271", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-003-ref.html": [ - "a81adebe69b504be41e1ff51b003623e9f16ff91", + "a452e91a92f4f16d4f4aea7134766e585fcac5c5", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-005-ref.html": [ - "c01024f5b3b589ea636c53ffe5d0671a96a27418", + "4d54b065a0660fce205ce50eed229e3a747b1019", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-007-ref.html": [ - "1bb11060527c46d08c82de590e44d69bb6749c69", + "d01b67e352454dcb939eb350812cfc29ffbbed1f", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-009-ref.html": [ - "83d1d6d11750870907aa08219b4cd3dadd19a1df", + "e0a7e1ad72fa4957703cf4b51234dc2ea01a340c", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-010-ref.html": [ - "4170eb976a9d482b1c12268e4335f451554b94a2", + "132a889390c277200264716b6d14cd966495c3bd", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-011-ref.html": [ - "70f8c273dc5a7956dde91b872bd136876706c5af", + "6de63974b91fce897b22c85851449a4499f943e8", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-014-ref.html": [ - "146ae84ef714b0d879e522d4e34e2f205d0e2361", + "8be9d6210d7961b91d17c8206dac6f45c6879df6", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html": [ - "3f5ada988fa7b00afc21a1e53e3d038630da8bc9", + "7f3e3cf7d20c3e1e2e89c84c01f08589f47bf4d1", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-018-ref.html": [ - "3cc3c5c761aee0b89e8d14cc16f4353fe5739678", + "2291f7687f85b677f93db7198e558423e58700d2", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-020-ref.html": [ - "b58872d41c432a1427ec5de315805057b80eeffc", + "8c981e2aec9359c28c31b932d2920261a347b7ef", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-022-ref.html": [ - "54ac0ea13177a0f5b83cc78e45dff7ae0a5b9f8d", + "f0230d37705d734e519a3042af69dae6731c0de3", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-024-ref.html": [ - "0b980c465e158ae63376ec4e16e52868bf37d006", + "1db18cd123f714e9beee49212c8ec14124b15c23", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-026-ref.html": [ - "6f49c3ec882b8eed89d2d9476280e35c4db4db6b", + "839391d87da4b03f4ee30bc08090ee1c8202ccaa", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-028-ref.html": [ - "a5134d613b9fcf21ff9a5237390dfb825ded26a3", + "fe1df9862d24eeb97045b687bf0c005086b7b156", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-030-ref.html": [ - "612ed0046e6a8ed215b6d669e6a5a11a7aab6f13", + "ab0d98b8af98f6161ba7eecaa4f7e943e15f9c7f", "support" ], "css/css-text/text-transform/reference/text-transform-capitalize-031-ref.html": [ @@ -294839,123 +294807,123 @@ "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-001-ref.html": [ - "568eaa6888c87f3d124701f75a90e5bc4316de49", + "8809eef28dc84ac666bd717528308f726a02ab7d", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-002-ref.html": [ - "f8ab39bc6f8e3e0eafb97d4033e810f1efedc296", + "a92d49f134829af68ff433928e29d888ce5e5e91", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-003-ref.html": [ - "2227bfdf331a3379a479a112056418463ea1ea50", + "b6b81d677250ddecd897156ccb7279a862751ae5", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-004-ref.html": [ - "ec77596c27d9d9225075a9d7140e8b4de286274c", + "2bc48e6e9dc7dd04aeafb270389c211a4fa690bb", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-005-ref.html": [ - "0bf4454786819b9a15f8d05b0b0cbc620590dcc8", + "f3a3a855bd1e06091113d43cd0d77903f71f6ec1", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-006-ref.html": [ - "b4a8ddf9f220506cb06201919f890485375e16ee", + "31bc85218a044a5bd6e37661773505731580e664", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-007-ref.html": [ - "fad2129aa8ee6c3b2f05fca8fbc23df1d8fa99a7", + "cf4f0a423b5958ce71e6edcee4630aaaaaab944c", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-008-ref.html": [ - "ec8e13732354772a71016124579b0a57c4ea91a2", + "b7e6c7f77aa173d2255e5ec183e6a15335e6538b", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-009-ref.html": [ - "6470886bda3ca009cafa4988e06ca2cd85904e3b", + "d4d25f5fcc79b29b82763f6d2256e43b0034acc5", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-010-ref.html": [ - "308407f800657271419d3a9803463e13e20ec145", + "058f17f77a983d5c29496dda71e0245f67acdfb0", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-011-ref.html": [ - "05924a6aaf81cbbd6fbb615175bc37a12fc1a780", + "d96b533c08a64eec2ded6cf957ecfb9e51193541", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-012-ref.html": [ - "ec4d4e5ff869068ced8dc4c9051c5dd6198b3586", + "cde456ea1a7772ad591a5df9f8c22c1e0460bf9f", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-014-ref.html": [ - "1cd32c351723daeb7a888c9b7d9d2b3e3b477051", + "37b8a92633a6a1e5ec1b675db3663c0baa966bb6", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-015-ref.html": [ - "b1945fd9bb5c8b4f4c8f8aec84401340e30d6be0", + "30a7e4b60cdba595451337b0aa5cf8eb187234f7", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-016-ref.html": [ - "5ad047e9076473d6f772a12aab51d0477b6dae24", + "63022d28fd72450740315b4f0df0eb74b9c58ff9", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-017-ref.html": [ - "3c3cb4be84d4aafa3d362b77d90eea6fd67661c7", + "d4f5be6ae9a1d1c105b97caaded7cf611b955127", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-018-ref.html": [ - "c16ef2bc1f9b6e1b5438b86cf3642b1739fbe058", + "3eeafff2f36149af7ec36e25b9a7822f94fd993d", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-019-ref.html": [ - "bf9b388ee26b53650b964df7c95fcb8ef62ef529", + "8be2c3c0d1e7414acea07ab7b0df761171a0e885", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-020-ref.html": [ - "a19fd169272324c2e55f90d54de09eb9a9baacc7", + "512fb84140e7577aa6534a56dc54d51c4284284f", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-021-ref.html": [ - "c7517665de6035cc2fe8834f8ec2f44ee04325cc", + "d5333af807ff9ae16e754791fd7f866013f0a16d", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-022-ref.html": [ - "4713991eeb6456f769918ce37a28074c01c811c6", + "5142a904209ee0dc82966476b1ddf878b96b7e47", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-023-ref.html": [ - "896b97a07e24aa6a785eb0cfbe2be7735cf75ac7", + "f4bd8efb949695a3954f65ee69ecdb4f045638ca", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-024-ref.html": [ - "dcd73e858ef1e6435ab94894c115a8c8c551fa59", + "974d9e6e2b32e02679f763d46eb1a3e9dca2a5a5", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-025-ref.html": [ - "3c8336d6a12fc6780dbe58a98fdc6c1d345e55b4", + "16cc26ffb561b64010fc35259ff44d44dd3895b0", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-026-ref.html": [ - "f8746156a2d52e7cca59246b5ed875f5b1568712", + "6145ed4bed302097b3162fd7e35c98ea56a5e900", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-027-ref.html": [ - "f98a8fe32d3d41012164a3e06e0d707d5e2a0bed", + "d948348bacca0e5610bc63984e8eaad27c2762d2", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-028-ref.html": [ - "ed7269d1460fa0d88c99a2d3afb832eb28a11591", + "943b528e1d76ae373a81762b74111105de565bd1", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-029-ref.html": [ - "fe97bf3f646130d5cd970a0ee1faa6f199976db7", + "fed4ba28afff33f99baefb10abe6596a3a8fa2dd", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-030-ref.html": [ - "828b1aa8c663a83f071ebe3f26cca4886c863675", + "2509485afd8428064de5da30bbee7e324ce566cc", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-031-ref.html": [ - "5f97cc8f6e6e5ea8f226404ef4f54a5bf5d68039", + "37cf19fe1a6f2276458b0a2921f20895349d1437", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-032-ref.html": [ @@ -294963,119 +294931,119 @@ "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-033-ref.html": [ - "5f84425193e6e4b862bf1767f2659599aa862063", + "bb59c79d22a3e0e715af1f103e79ba1433d171c8", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-034-ref.html": [ - "5f97e7da9f928091db0134cb3abab859ea35b330", + "6432e90860c571239ec8470e0bc26dd1fcf9eddd", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-035-ref.html": [ - "50eb96fa8bf640762be2fd51afea3fd2aba5aabf", + "afd4b4c5e9341a1cdc194226f0b9e682c5080802", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-038-ref.html": [ - "a4dc59986d4960dd509033960b141c4a95ac2076", + "45efbdf5e29696d77831e0696b8c8dc4406126e7", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-039-ref.html": [ - "4f084f2c11f9f069513005a47d97937e6ab0ebbb", + "13826680a8eb311fb57a5f10891ea7eeaff5e44c", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-040-ref.html": [ - "c24495a130ee6040ac2b8a3425398897dd58d494", + "1d5a77e4ce2db6a6c4aa1c4d3b716133360841fa", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-041-ref.html": [ - "e8e6ffa7789f1b539ebced53ac361ffae242ae50", + "31ffa0275799c8cdf1ebab77873b322be0c8fb8f", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-042-ref.html": [ - "e23836e93c1345ea95fd0fa952fe689eb5fe352c", + "7b048629d50f45c288454cf4687fb4421de60242", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-043-ref.html": [ - "bb0c8802a210ddfb96d637de8430ce87bd5673f5", + "b2d4c2cddfc08e9b80e799368a14cf71aaebb3bc", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-101-ref.html": [ - "fec70902a64d11d802d19b69955a211743cf97fd", + "dd1d9ef4a1538d2f59f8786c50b5b04f9090de6c", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-102-ref.html": [ - "34f7b9bbf8808c1ba6e3a0dc873d326a93c63adc", + "f54bcfef6112880c0f5d6b3a5a2231622501e8d0", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-103-ref.html": [ - "268f2a35ce4e9401c848dc92709ef62270fda2d9", + "77263eac0af9a909d4f66466c136f54d82a04474", "support" ], "css/css-text/text-transform/reference/text-transform-upperlower-104-ref.html": [ - "70be73fa0bdc30a16f558af3638abb8919bdc928", + "6bda84c5f5a53d48fd49ef2cd9f8577e97d58bf2", "support" ], "css/css-text/text-transform/text-transform-capitalize-001.html": [ - "087ab0921da4951feb935a12fc64bd72c8829917", + "7a78f45f00350bc473b7018af50953f76787b7e3", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-003.html": [ - "d7a9acb50403a17556c99a869923ce0c602ec6a9", + "21bae8cf764fea71d667b113bb6a3ea29412b957", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-005.html": [ - "0b8a6f7f22d984329c7a3ae977a589fd8052c486", + "895501d2100511a7cca7a6e54f58b7ae77d9017c", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-007.html": [ - "2ca48c301081cb2bee574d112c2cf7b48a746a72", + "a22ddf9e402ab752d01bc74068e1c7a94008e87c", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-009.html": [ - "e7481ddebba2f6e8fb1e421514f8e5af33d0bbed", + "ac70db99ac0282acff2899d41ec10b276e8f21a0", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-010.html": [ - "4d39e99fc471ed4ecb330e5b93e95da852e63e56", + "35740d6f8f7a3310352586b125a85ecdf265614b", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-011.html": [ - "69bc1db39a392be72c8e54b98ec15088e429b6c0", + "3a881142435195d8e06cb80a24ec5de4ee48726d", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-014.html": [ - "4b2331cfd60bf41ef9cb5bab45c2bb34d41725a3", + "93f0b9ec53ad302f651cf6b6c271a47b3ea9c3bf", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-016.html": [ - "77ec1f982b7cce2b32fb93ae329598cd5b839b34", + "30be3b9a290c5c0888d02698b882a2abfd91cb15", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-018.html": [ - "9d742d930dd83fdf10c8240693563b7c17ff02de", + "5aeddb0597298bec6ae788194d04c6b11b142ce0", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-020.html": [ - "e07226227284ffb411bbba3a6df4cc02b119e6f9", + "30afa0baa471cbe38dbb4535e6cfb910d0232ae5", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-022.html": [ - "c0d376b678d2c7f481c217c5e0e21d1ad72a07df", + "a4637090dec543f15eaad82ea9d4be6a0abd4ad9", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-024.html": [ - "00a760f11cfb6e473ac66dfa0dcd4dad9105a230", + "322638d7413c319ee6ec3970272eadc144281090", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-026.html": [ - "0dcd645f1763dc1881a8a33cc71d424457974142", + "763729edbbf2c28b63a32f31e6cfdb6c1f1f5dd5", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-028.html": [ - "ea4f25c84173531fd39ce0fd8d829d3959010be5", + "ba3c5caae30b9be6840371a69cdd336c42bb7844", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-030.html": [ - "97b4c5282492c12abdc22ba482065c1c1cfc8460", + "746ae699abc2d5ab24b6ca013ba0b73135b0c585", "reftest" ], "css/css-text/text-transform/text-transform-capitalize-031.html": [ @@ -295159,123 +295127,123 @@ "reftest" ], "css/css-text/text-transform/text-transform-upperlower-001.html": [ - "b8cd75045ef9e9deeb521dfe98cd182e6ef056e0", + "9c8d1df966d89ca040f744477fdb98b33a68ef48", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-002.html": [ - "1860acd22bb5fca53b1205fd9ee4550fe3345954", + "afef6b38466556f60b202de9592142bfff1244da", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-003.html": [ - "fe27273e51e97d043b8700aea26748651d5aa6a0", + "a9bb2981a229f64b06770a6654fc7ca079059676", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-004.html": [ - "7c99bfd69b5a8b887514afeb49199b1494d31b79", + "a9cae241827d8f7b23468ad9c5c724b60e1b2591", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-005.html": [ - "9bb1502f9ae7d419c0e9fc7ed833b212e86389b3", + "7cb727a8ebd55b0923b79844a2dfedcc2ed20fa1", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-006.html": [ - "0ee446c9c8df1085707232e0a5e02e7724955273", + "8e695258e4b3805f9f3f20d8ae6875ad91bcfc11", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-007.html": [ - "e5fb3956fd0ec116f4d272e445bda43fed76546c", + "283c1b310d6919ed1b0f5a6c99df00e659773727", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-008.html": [ - "19247fd8ef8f953186a04fe31975fea0a12ca48d", + "e39f383ff268ef0aba68dcc5d6c81a1c91a70ed9", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-009.html": [ - "716583a543dd42cf44b94fe5cc0a2eff00136b1f", + "74b5bbc8832c9c6eb9b011a0c2e4588a1f7e5d1e", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-010.html": [ - "8e79a13a76d82c3f83d936b403b5553470f2a029", + "544a6afc3ddd7424917edc2ccb925002dd163468", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-011.html": [ - "827d279a33f6a214099ba70ff66fc05b3f7bd1c7", + "e023f2d5ba485c23370931bfb9cf50054f9ab2e1", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-012.html": [ - "84edd979b1d4218030433ff554cdc127926baf7a", + "5b74eb5961779dbc38c00e5efbf748385c7003b3", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-014.html": [ - "9b98fb1263735deb96a4ae189fe16d16156e332f", + "80d1385a97424724eefabdc447f4fa60234d2226", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-015.html": [ - "09007339048dc3c2cd299e7f3088adb4deb3d177", + "8f60fed99d3dae699e16be6724fc413558d744df", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-016.html": [ - "d9db68091b482f13de3a1367f3ff61b4bc639c33", + "dab74a12f60df89e557f2450d6553461051ead6e", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-017.html": [ - "a442d4392bfa944c9a607cfa0583308e175ce68f", + "73fc94114bc9d16c5eca6dafe295546bc3b6ab2e", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-018.html": [ - "e29375f2127db6dc89c4ea6d90053b1531f5b21d", + "f4d7db34958980b68c27dbc096b10981f56ef5a5", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-019.html": [ - "bba5c882c5250298443bffe1eb62bd66d8da0006", + "0a7c429696d20f55f2e56eaaf1370691a378c069", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-020.html": [ - "27ef31bb6b57d848bfc9c1272eb778b33ef7d4b4", + "319124a4c4951758467244bdd569f42c4e816abc", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-021.html": [ - "a798955f1598ca3408ecb7ca715ec365e495dd83", + "f5b389d5737f9622be54675efdf847adfa9fbddd", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-022.html": [ - "9433fc0e1bee985744b93cbf4c7d4bd064a76273", + "a6e9e94f024ba7f281ff9a8725abfe36da19b6e1", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-023.html": [ - "d862d2110cfa9d2b43be88d449554defe031bc8c", + "c527c80bf0aa0f004fc78e57c901aa94524c124a", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-024.html": [ - "9656ccc527283249ddd329e71735f60b0066671b", + "be71484a047d24c758ec45a1202b0a93550b1911", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-025.html": [ - "f35e2bb9d5c26222403d2c28f54965d204c473a5", + "23c2fc5decb9d0538c91ab51e053549bb6689e2e", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-026.html": [ - "6e74ea15c8831784e092838a8f3032813c2b8a02", + "dc9756dad5e310ece3acbfc1e708708f2b27c8d4", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-027.html": [ - "36e79eb50eba97dbbe07072b854f59b68a713267", + "f81c35dafde8acb06cde14d1ca5d8f26a7401373", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-028.html": [ - "163cae8a147d42e755f157cbef565dcbe979af5c", + "fdf9c35f7d85deded20f6e6364088dbb75f3e2f3", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-029.html": [ - "11ae726acdf724e4562efcb1e034c06868efb0a0", + "13b499b0f80ec602ece7d729fdc9183227f14ddd", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-030.html": [ - "a56d8a626f0e0ad14b90ea6313cfbd80f8fd09c6", + "bcfe7db83f0153402f2a094af25f6033576f3db2", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-031.html": [ - "ca2206f1553f2bdc9474a1d781236fe4933e69e7", + "d7a53e070c7f7cda079f88bb67f45f571d8870c2", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-032.html": [ @@ -295283,55 +295251,55 @@ "reftest" ], "css/css-text/text-transform/text-transform-upperlower-033.html": [ - "caaa964cc9f9acffacfc890c0ef9e5f71a83f8c6", + "ec72dc4c1ffb94998fbf9ecae9a7fe091cc309b7", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-034.html": [ - "25dd9126da5b0df6fb8bd38b7141bac4167b9542", + "622e3a5717097a56e61338336771df1c7dbdc1d0", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-035.html": [ - "881031d3b6d190b9e2e19b703e5514154119a459", + "465ff4dc5d2a87060d461ca594ea9cd2f8b9cd96", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-038.html": [ - "fc5718d0e3e581e9adb50d6eff81778162ec2eae", + "ad22da4994ab33d2548137c369e57524ef01fd72", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-039.html": [ - "3f14c955c66888ca55f37bd7af2eea17a9c61187", + "063ed1f99b058aacff45fe70d975fd1fb2f69373", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-040.html": [ - "9d1860e0036e7849d361c3ae939b02f1c23d913b", + "7dfc1184b900d07e1e59626f81466d29150711e3", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-041.html": [ - "ec8d3be73cd888c720e3a67caed1169d086a8f3a", + "3fb92a23dd2672b8be0be23273073f3fa7711fd3", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-042.html": [ - "84a1e520077b4c16a3c224ae2a8d72f04bb113e5", + "1cb7a35e401ec3735f495325ddb401ecafd44565", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-043.html": [ - "a2efc359166472a612294909131f6e8f50e78e90", + "fdb4c4d761268678a2747f2bdf0ebfcbcd2ccf75", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-101.html": [ - "4167b369a42dabb013bb4dd3ec08ae04b304bbd0", + "2b4ca7785ea5db928e243fdba93e712459aba905", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-102.html": [ - "bd6e70af42f4f0701d91fe6f7337e94c07f58755", + "de9734860581a887445d7a61c3b04876496d688d", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-103.html": [ - "75d5caa1384f91d72ddaa9ac99cfb774272a1063", + "5fe481519306c1c23dbf65cc2e80ca286d1e30ef", "reftest" ], "css/css-text/text-transform/text-transform-upperlower-104.html": [ - "3a8b93dbbca1507311781081e33425e06a499a37", + "1539d2fbc03db6d654a3263591c4c17c385aa54d", "reftest" ], "css/css-text/white-space/pre-wrap-001.html": [ @@ -306299,331 +306267,331 @@ "reftest" ], "css/css-writing-modes/bidi-embed-001.html": [ - "24cc1459591a2a6f5a1dfeb8555cfe4a3af31876", + "26c26dd82848a59319154cba9011d2a4c9d2fe60", "reftest" ], "css/css-writing-modes/bidi-embed-002.html": [ - "a3d16676642d199bb9c0e01e22aaa97ace4d3b68", + "75a7d9a28f0184660dfa6f8023a07b538d0c4b52", "reftest" ], "css/css-writing-modes/bidi-embed-003.html": [ - "67fb640356d516d51bb1620af5f01b19217d929d", + "f7bae5f1d1630b91047ebedaaa48809636dacb21", "reftest" ], "css/css-writing-modes/bidi-embed-004.html": [ - "a47496eae2a4a9f7378ce56c2a7a9068850a13ca", + "e08d49070bf3db4f251da306a75b6519f107016b", "reftest" ], "css/css-writing-modes/bidi-embed-005.html": [ - "8a4569dc795c0470754aa0d3f47f211bc0654ab1", + "88a3d7977c3595a3e60ad2b0de3abffb88d84b91", "reftest" ], "css/css-writing-modes/bidi-embed-006.html": [ - "8c2e88636f202fb50d2a9efc2ac4781e77d5bd8b", + "96d259c5e7de58ab9f095e3a836962108cc47c05", "reftest" ], "css/css-writing-modes/bidi-embed-007.html": [ - "f303724693ca36d7e98ece16fcee54e9400a7268", + "c1ea9795cfb6eed5696b4168160cb95b07ead9c2", "reftest" ], "css/css-writing-modes/bidi-embed-008.html": [ - "aec48821f80c79c9a8853dc9cfa3e5d049f0f62d", + "5bd3c9f7e09bf72b4621d60663c168cd67e78296", "reftest" ], "css/css-writing-modes/bidi-embed-009.html": [ - "0cf20e8e1df26ea0bd1b5cb713900883af202a4d", + "7a8ca0f2e7c18046c99019808ea41f2e02a7f50c", "reftest" ], "css/css-writing-modes/bidi-embed-010.html": [ - "871e181fd243d3e9517ad9f419bc47f8cfec229a", + "735b2876a73b87fa870f82d6bbbe7836e44cca2d", "reftest" ], "css/css-writing-modes/bidi-embed-011.html": [ - "f4e24c0ca9457250fbc16debf5e5ed1c6e4f5a1c", + "d53b9398fdbadf8421dc660a227820808122592e", "reftest" ], "css/css-writing-modes/bidi-isolate-001.html": [ - "69450e12c3a9412ab1e533f272242204cc3d32bf", + "6f4ae8c048872de8a686a877c68c84b3e088de83", "reftest" ], "css/css-writing-modes/bidi-isolate-002.html": [ - "9867c8b4bee6895b1cb0c13109d2c0e8f5bfc319", + "799efd8aeee00e8a2c3db93d7c5b43c48fe614b2", "reftest" ], "css/css-writing-modes/bidi-isolate-003.html": [ - "2fdfe14beee5e52dbb5142d3d244b359751a1037", + "fe72c227c862acf2621a85524277f38afec722d5", "reftest" ], "css/css-writing-modes/bidi-isolate-004.html": [ - "6ec39fadca371612a7300906d1141a818eedecb0", + "d4f9786b68c6bfc7a411e5c4d0c93e535d2d3062", "reftest" ], "css/css-writing-modes/bidi-isolate-005.html": [ - "587af8642d61f0e20757a0cf996a00f0ed621e4d", + "db232d73d013dd78799e87d19fa0eb24b534d0c5", "reftest" ], "css/css-writing-modes/bidi-isolate-006.html": [ - "1fe27a762df7f78b8eef08c7997ee88f911f99c0", + "00f65eddf6e5e4394ee43133fc2b5eddadcebf01", "reftest" ], "css/css-writing-modes/bidi-isolate-007.html": [ - "1fa579d92a71a845833e31043daa71c76a6af25c", + "eddb4ccce848a88340b22cfa1ef3c22322940981", "reftest" ], "css/css-writing-modes/bidi-isolate-008.html": [ - "8dd78371b4a948fd7fed4c3217d48d99bbdb64eb", + "5915a4d6d9a82601e3bf639bca2b35cfb66ebb82", "reftest" ], "css/css-writing-modes/bidi-isolate-009.html": [ - "c9820ab117a092d83d0a92e78dd7754df54c8696", + "52a82f8d30056c39ce72f5215ea84311f39b3b58", "reftest" ], "css/css-writing-modes/bidi-isolate-010.html": [ - "c31241bce235f7d4f8e5004259fa2b8947f02235", + "b268ce21932fbf3c149fa44c6df6ecc288781d83", "reftest" ], "css/css-writing-modes/bidi-isolate-011.html": [ - "110650d020f4a92c219b257773f0a6a2f21bfd03", + "e7d98c3087cc97e18df28bac008d89784e742881", "reftest" ], "css/css-writing-modes/bidi-isolate-override-001.html": [ - "94c1c8ac41e3fc96934b6b783f4791df32ffc6b9", + "cf939ed0055fd737d9ffa2d3750b529a8dcd9f76", "reftest" ], "css/css-writing-modes/bidi-isolate-override-002.html": [ - "981aac99ddb0cddf2a5c757ef84bc46c27fcc271", + "fb1e0624c24d32abcfbd632e2027e4e463ecce16", "reftest" ], "css/css-writing-modes/bidi-isolate-override-003.html": [ - "6fa513ead8a7ebdf4fd7b54335d253a39d36bafa", + "2cab0498299f73947e7529be40ce6242ec7a0512", "reftest" ], "css/css-writing-modes/bidi-isolate-override-004.html": [ - "5d5bdd8d4ee815d9050b45de6276ef1306087b88", + "bfe3016143fc85dc8dbe970c98bc35e8d5efeed2", "reftest" ], "css/css-writing-modes/bidi-isolate-override-005.html": [ - "0bec3041cfe2d2e45c140ea3efcd1cabb60219b3", + "f648e475b392339279e2f3e023fe84da1d54755e", "reftest" ], "css/css-writing-modes/bidi-isolate-override-006.html": [ - "07b314dd78a29b14ddddd3ba9c9c2ef920a93fa9", + "7d47191cbcec01b70292fd1bc4f7c23b061d3d3e", "reftest" ], "css/css-writing-modes/bidi-isolate-override-007.html": [ - "a38689e5205edd79b76dd25e3337a9db7930a50e", + "e561377673360e7733f9d6536eebb7476e0630af", "reftest" ], "css/css-writing-modes/bidi-isolate-override-008.html": [ - "fbe3c9ec0bf73ce0973c8db3db431bd87358bcc0", + "8b4fbe613f0a5a668080949d4db17c7c5c26f591", "reftest" ], "css/css-writing-modes/bidi-isolate-override-009.html": [ - "9d13ea76bfcd049f7f28a4349409519434367d01", + "1c6692240151b88c21a710046ffc58df696055d1", "reftest" ], "css/css-writing-modes/bidi-isolate-override-010.html": [ - "fa9295df1a4f9dadb41e9466e5ae9445dd7179f3", + "022161ae42e5c6846eb8541b3ddbe82c8bc4cb59", "reftest" ], "css/css-writing-modes/bidi-isolate-override-011.html": [ - "481f7561abaa74257c436b66809bdacda2da4ce4", + "d263f864279876bba4bf09406557154cd1e099ef", "reftest" ], "css/css-writing-modes/bidi-isolate-override-012.html": [ - "b935f7ec630cafc2d76115054c3411fb3950a5f5", + "dff7a64e95cc680114d162be7e695cee91094f3e", "reftest" ], "css/css-writing-modes/bidi-normal-001.html": [ - "2456bb0784b0fa0422939811f0f2bcc5b4b3eba4", + "17101172eb6062c6fea731599612df989a581e27", "reftest" ], "css/css-writing-modes/bidi-normal-002.html": [ - "bb1c7d45bc5990ccdd573cc5c340bb15d85f2828", + "d7cd295b05baf1ef717a4eb2b92044f80e47676f", "reftest" ], "css/css-writing-modes/bidi-normal-003.html": [ - "2c5cfbcf3964bcd5c5c0284d351bed9b51fc39b1", + "13fcce90f4dd3f772e313baf84371f92242f01b6", "reftest" ], "css/css-writing-modes/bidi-normal-004.html": [ - "0a7dfb9af73a7198c1076b6b935ede925bcb1907", + "63c57ea06aac9b1d37108df8b9a5ca4dd58538b9", "reftest" ], "css/css-writing-modes/bidi-normal-005.html": [ - "f2fae0ec60562ca214cacd7b06f7b640fc47813c", + "e25793ae6ca7fa512f47eaeee03e7d5e336a2a4a", "reftest" ], "css/css-writing-modes/bidi-normal-006.html": [ - "fe12094404d5282f996cc103832d4754f2fb704a", + "0f02dadc7e3cccc57e7fc895e9d0ad35222174ad", "reftest" ], "css/css-writing-modes/bidi-normal-007.html": [ - "1f762063435cd8c05c9c1cc366c53066fa191b57", + "be0dd54a781d709d1beee382eab28fc9a01c0b6e", "reftest" ], "css/css-writing-modes/bidi-normal-008.html": [ - "ac38413eb854eaec964320900768424a466122e7", + "86c7384b36ac5763665fc8cbca5a972626b0dbc8", "reftest" ], "css/css-writing-modes/bidi-normal-009.html": [ - "bcb3531ad50f3e0aa51344defc0e18dae068eeff", + "763e330ac75781ee61608b3219e7499e98785a42", "reftest" ], "css/css-writing-modes/bidi-normal-010.html": [ - "6d5d3d609434be438679beff5a31fefe1f516e8e", + "8fecea8793fbfad5f5341f2962cc33bf8fd199fe", "reftest" ], "css/css-writing-modes/bidi-normal-011.html": [ - "69e50dcbaaabca92a00185cc0c1b5074501084b6", + "6e976d6b3d4088a8365219da93c38e17e47cebc2", "reftest" ], "css/css-writing-modes/bidi-override-001.html": [ - "6d346e7759865f59bc85d59003376db24fcddfc2", + "57e4c26f7181e2aa14025985459eedddd35c98a2", "reftest" ], "css/css-writing-modes/bidi-override-002.html": [ - "059c20e630118772bcf71827bb1aaec66fe4e6fd", + "290517f4606196228e5ae735c3543a1db8bad270", "reftest" ], "css/css-writing-modes/bidi-override-003.html": [ - "bb4e71880da39ee0fb9400d60c35afe4a4bea9e9", + "b93337703cbf10709630148fb2510314973dfdab", "reftest" ], "css/css-writing-modes/bidi-override-004.html": [ - "86e924170cbaa5a377097e2ec3c4a42928533af1", + "c1f0a339e9aa89eaaf7696bf612c612c790d5299", "reftest" ], "css/css-writing-modes/bidi-override-005.html": [ - "cde02ccbcbb610935e42530069365b8517f8ce24", + "14d6cde0b00d82887799df7125f9baa0c555a8a1", "reftest" ], "css/css-writing-modes/bidi-override-006.html": [ - "3944ee3d4a011d581ed30664269252679d5b2750", + "7bb95e8d5695d81c21c9fa3e5e64bda7c585f0c2", "reftest" ], "css/css-writing-modes/bidi-override-007.html": [ - "6c2a998df73812188930a697931523961f98ecb7", + "3cc0f9c4b5c5bc4442c1256aaa4a4543493f8d28", "reftest" ], "css/css-writing-modes/bidi-override-008.html": [ - "863457aa3264befd28f09980e1ae179a3e2f58f5", + "2c73f3bbad1fcb70a2a07ff1fe39297965f94f6c", "reftest" ], "css/css-writing-modes/bidi-override-009.html": [ - "99131d3cf306baa30b50505f24d800167297b44d", + "97ad0eeb28cf828ed2e1890c3b190608a2cfbb9b", "reftest" ], "css/css-writing-modes/bidi-override-010.html": [ - "df43512969abdb83164eda1c9a2faec305a55ad4", + "8a2dbd72d202a0857739ec6fcd1e1c3530a841b1", "reftest" ], "css/css-writing-modes/bidi-override-011.html": [ - "6e6c7958f237ed5c6f2f2b0dc7fb0ec537309e0c", + "0bb3a3cad9164a010d1d5bc57c6a8185c6b6c0b2", "reftest" ], "css/css-writing-modes/bidi-override-012.html": [ - "226c692299ccdb4527fea46a01f882f38d9ff35d", + "5294f1ac652340ee278abc05ec9c5a6f22a6927c", "reftest" ], "css/css-writing-modes/bidi-plaintext-001.html": [ - "57dddaea7677ee5277cefc013ead1650ba113608", + "d4078692ab1cfd23b206df043a4a488a6c03be38", "reftest" ], "css/css-writing-modes/bidi-plaintext-002.html": [ - "12483adc478ec9577b3da0aac79d033f63d56f9c", + "78db7d750b70833fa5e04c31fa96637ba1c28b8a", "reftest" ], "css/css-writing-modes/bidi-plaintext-003.html": [ - "c8e22ad6dfc53dda76956b55af51fd17c35e7dec", + "53440d044cd23bcb58b367d2c60d54cea7f8e6f4", "reftest" ], "css/css-writing-modes/bidi-plaintext-004.html": [ - "2fb85c286c1361e7f032f52867956e3550a2a6cf", + "e32eeade66b8982ba6714744a2caa28df34ebc38", "reftest" ], "css/css-writing-modes/bidi-plaintext-005.html": [ - "33c4166456af412eb5f3bcb128e73644d442e53a", + "7f00799894c5b5e519a030f5e520a7c2a7d962de", "reftest" ], "css/css-writing-modes/bidi-plaintext-006.html": [ - "672d62a70c9ca84731b86863c733c1cb199b3bbb", + "55aa097fb0016a3bb2c47991eeff29e3d9ca2d45", "reftest" ], "css/css-writing-modes/bidi-plaintext-007.html": [ - "cf355a033b5ec56f1210f974f86c052dd0b50128", + "2d6cc3786007698ca01ce628291777e4beed10e2", "reftest" ], "css/css-writing-modes/bidi-plaintext-008.html": [ - "165a461f807051767b1592fab04f8107059b80b0", + "0ce82bcb54be3ff91aa2a8aa823ac8e1e420936c", "reftest" ], "css/css-writing-modes/bidi-plaintext-009.html": [ - "b534eeeef455a1f0aa3acf8b582a436e838d8041", + "d138e2937ab13ab59583b12f34e89b9186f1ad6b", "reftest" ], "css/css-writing-modes/bidi-plaintext-010.html": [ - "37cddd3e1ef71bb34c4a8b64e12361f734c19902", + "596ffe7f1a2aabe0a9894849fa0c7aab5fd50b29", "reftest" ], "css/css-writing-modes/bidi-plaintext-011.html": [ - "ac15c13fcfd0df7657a2a59a19f5022e3b7e03fa", + "2b6bdce507f895362481038cd6dc82db225c0426", "reftest" ], "css/css-writing-modes/bidi-table-001.html": [ - "f6a6a6ddac6c82a0734ec8af418c140ead454c1d", + "ff4d68b47575ecb6c3c67e53606360351b1461c6", "reftest" ], "css/css-writing-modes/bidi-unset-001.html": [ - "3558315a55357f817a95aa0ecbd8d62a8b1ae7a9", + "8acf56b3786c32424faaee18412975d83875ddf7", "reftest" ], "css/css-writing-modes/bidi-unset-002.html": [ - "3221d1cf2e7280d8ca03291aa0a38e9e4f41db42", + "7a5dddb64d58b44ae16effc4f4a13d7219113447", "reftest" ], "css/css-writing-modes/bidi-unset-003.html": [ - "19c183653c03fc0f866ae61d74a928dcf65b7f9f", + "8ad0bfeca7c0a741395a042bf8cbba61fa2c5f92", "reftest" ], "css/css-writing-modes/bidi-unset-004.html": [ - "d030987ad9cbade57c70066c879e5fef5ea8af24", + "4fa703f690064105ceacbd5c7b7ae63db829d11f", "reftest" ], "css/css-writing-modes/bidi-unset-005.html": [ - "19880b9e8b52b134be49aa2fe76a014529ed1b6c", + "f4453acc9107b343995863e22ea5e45257ae8d73", "reftest" ], "css/css-writing-modes/bidi-unset-006.html": [ - "990a56230535a985de17dd70d4ea15c610362fbe", + "608e3d3dac8101e8b6c97cccaf1218e3b6c9fd69", "reftest" ], "css/css-writing-modes/bidi-unset-007.html": [ - "ad9ebb86019e0abd9569e250b93c3c8972f9d559", + "ff14b11d74dc3aadca523ded67269751dcf78d91", "reftest" ], "css/css-writing-modes/bidi-unset-008.html": [ - "29c55e8f581bc688e27ec8c2cefb01128174f13d", + "3b0d8559480afeec22fee6a61666cd3c88ec91ab", "reftest" ], "css/css-writing-modes/bidi-unset-009.html": [ - "0071878ac8da150d74bbb369dc395349c84fa279", + "26f3607205bde24eef6e401a766f2d1d2fca23ae", "reftest" ], "css/css-writing-modes/bidi-unset-010.html": [ - "5d0a6cf6b2868987f6c826a780668c9f909d79e3", + "602b427a6acddb16b39353ac5950eb4068779713", "reftest" ], "css/css-writing-modes/block-embed-001.html": [ - "c3d26a4306a348f04debc1383bdffea0990dfff2", + "a4bfc0eb91b79114f8ebf8ade6d9218b690ffcfa", "reftest" ], "css/css-writing-modes/block-embed-002.html": [ - "9582dc5749aee240266a14842a5bb0824ea749a9", + "e10f6779b76000b4263e56babebb9913addb0d1f", "reftest" ], "css/css-writing-modes/block-embed-003.html": [ - "b6724efdaab04e883f1eb32b4c5c1e402c150401", + "53b80fd30e23e4b4aab1a1e683752979d736b3ef", "reftest" ], "css/css-writing-modes/block-flow-direction-001-ref.xht": [ @@ -306747,59 +306715,59 @@ "reftest" ], "css/css-writing-modes/block-override-001.html": [ - "12a6e89a5fa6a1621328942907753b676453023b", + "a48617a3056988afd00a2c9e6fcdb142fa6f9005", "reftest" ], "css/css-writing-modes/block-override-002.html": [ - "9b5409a58abf74be4e59c27309b83d7c6f0746b7", + "4c6adc746b7e5207c363c0e010a6a7a77230f7d7", "reftest" ], "css/css-writing-modes/block-override-003.html": [ - "5f0b77173586556f9a1286ff77337dbc095e6dd7", + "2c67db5a045f4bae1e8fa3c58bad2e76ec6629eb", "reftest" ], "css/css-writing-modes/block-override-004.html": [ - "f3850b4ded0f543dd8273fabc4635912dbd10540", + "dcefbf37a1faae58fbe32d76fcbabc705201c38c", "reftest" ], "css/css-writing-modes/block-override-isolate-001.html": [ - "346ad59795d16fa19d6714a327ceef25f67c0d49", + "43911fd392565c2911f5d5fd80a762c5e3354f4f", "reftest" ], "css/css-writing-modes/block-override-isolate-002.html": [ - "76d08cc4a6ed753adcc338983829f905cabe5c63", + "7bb6c82e6944b554b35d719c88148c5079745f51", "reftest" ], "css/css-writing-modes/block-override-isolate-003.html": [ - "f1ac6110780cf28b10b2b6e915a1e1351ccb36db", + "6839bb7988d61c15112fe36261bc15b524586525", "reftest" ], "css/css-writing-modes/block-override-isolate-004.html": [ - "252b6b59cd2df02dc772074a9cc775021be6cf47", + "ca52cbe3d53b9ac35c325df61555b2053e4fd4c2", "reftest" ], "css/css-writing-modes/block-plaintext-001.html": [ - "5374d7cf6a1a081a83d371c73f86f8f1e1d950c3", + "0000338f942734cd7631229720022b355a36f819", "reftest" ], "css/css-writing-modes/block-plaintext-002.html": [ - "249b386ccfe2df93f7b840c43969480042ddcf46", + "a4dfb689efad0349fbc5b155ce115b6eacdeb873", "reftest" ], "css/css-writing-modes/block-plaintext-003.html": [ - "ca7e5528ad0c1c569b896a41afcbf8952d5ae546", + "afcd925a4df64efb16d03a7d313ba4d6823b7bb7", "reftest" ], "css/css-writing-modes/block-plaintext-004.html": [ - "da0dca836429d60995b8a324ec699378acba4e3d", + "542e617aa81cda551bbf56fe3e03046bccf18ce2", "reftest" ], "css/css-writing-modes/block-plaintext-005.html": [ - "9ece0b24bbe3d55447dbdac1f667c8b68eae1374", + "72a18c33bcb8a1e5facaee0d2a7c42d983fba655", "visual" ], "css/css-writing-modes/block-plaintext-006.html": [ - "de33a946a26b9ab6f4b04b486ca02cbfc2944d90", + "fe1048e1d4d9de1136d7f7e835f5dfdadc50e0a7", "reftest" ], "css/css-writing-modes/border-conflict-element-vlr-003.xht": [ @@ -308223,387 +308191,387 @@ "support" ], "css/css-writing-modes/reference/bidi-embed-001.html": [ - "6000e9bf08042d5e79b805132a64038875973008", + "0a3edc79f68b2555837984d353ddf6f1924cb168", "support" ], "css/css-writing-modes/reference/bidi-embed-002.html": [ - "78fb4e2e85231b88b87dfd73f5ccfae46489993e", + "4c97cabd1f9e1eb308ee9f91c209f5ad97145707", "support" ], "css/css-writing-modes/reference/bidi-embed-003.html": [ - "4a3d842139a05faa4485f2de6dd7035040bdd774", + "ad0c6336733a1d50f0ad55660562b76d6dea776a", "support" ], "css/css-writing-modes/reference/bidi-embed-004.html": [ - "5eebd6ca8c35012768ad46995121ebce21f05ada", + "d815bcbdebc38699df3afb9e698382faf9269289", "support" ], "css/css-writing-modes/reference/bidi-embed-005.html": [ - "39e1e16a748277f72636d1633a0a055a613cf867", + "d100e48d27ecf4c2f14ec806a2ccf5e8116ddce4", "support" ], "css/css-writing-modes/reference/bidi-embed-006.html": [ - "4440b65d821db9efe32e20bc3fc256f36ad2c656", + "e9b249e8f4023a1057dca2fe3c62feed91f2049b", "support" ], "css/css-writing-modes/reference/bidi-embed-007.html": [ - "664c3869c7e6c22e40775d50888e9af0b435d22d", + "9c3997cb7ac6dd8df25e0277979e5248c9dea144", "support" ], "css/css-writing-modes/reference/bidi-embed-008.html": [ - "6e25a8a8dfc93130edbf83b2e958152fa1dab5af", + "615964dc14d3edf2cca37ec339f81425042f6c01", "support" ], "css/css-writing-modes/reference/bidi-embed-009.html": [ - "c4d71d3d4ef2dfb9ddb2b97a46f486fb07340e32", + "96b33131201d8bbe12f15e9bf6ccbcb9df9524e6", "support" ], "css/css-writing-modes/reference/bidi-embed-010.html": [ - "3c1556bb270bd9ed71dedc53466b624256db8143", + "30c6868030475c26a871d4c60610aff123ffa51e", "support" ], "css/css-writing-modes/reference/bidi-embed-011.html": [ - "4944600b58f9e0827d37b1de25c9ddbcc93ee3ef", + "e5e31ec4cf6f71f9fde39936132e3ea9edb568af", "support" ], "css/css-writing-modes/reference/bidi-isolate-001.html": [ - "80b4abaf3269faf8437df06999e9b78f0ffbc419", + "dd1c0f03950cbb922da2790f565fd3b963bb1d8f", "support" ], "css/css-writing-modes/reference/bidi-isolate-002.html": [ - "4b38da8170c405cd610edb7b4b2c3e8a6a2fc058", + "841537608a5a00b23137bd7a92ce95ac66322054", "support" ], "css/css-writing-modes/reference/bidi-isolate-003.html": [ - "394d520aa805930b7e44ebbd4967258080cb710e", + "cc623a2b32b25e2bec21364e82e932ec3c4a907e", "support" ], "css/css-writing-modes/reference/bidi-isolate-004.html": [ - "5289528b117996fb202a7fc948fba3ab97d0fa68", + "080d0e793f929e1000945fd51f6c957cf258e2c2", "support" ], "css/css-writing-modes/reference/bidi-isolate-005.html": [ - "9ffce0c175491d3db3f2345f0c3f92fcf80464e9", + "944759d88159b76927f1420cd243a05c16abc4ca", "support" ], "css/css-writing-modes/reference/bidi-isolate-006.html": [ - "28bfa3a34eefdfbc964ddccaf3ff2cf2b7fb44af", + "94058de68477ef37627d2939266e5426dbc13351", "support" ], "css/css-writing-modes/reference/bidi-isolate-007.html": [ - "a415f95eddc76f182b36a3bdbd5f2cc57b871e89", + "673b56570af17eff7c8e07d18c54225ecbc162cc", "support" ], "css/css-writing-modes/reference/bidi-isolate-008.html": [ - "5dce50cd51af84931f570447ac14cf4185212fa1", + "7445255a2d8eee13ca9f239ff7cd48aa7646df4e", "support" ], "css/css-writing-modes/reference/bidi-isolate-009.html": [ - "2e94a5b68ed0caab3d8379ce8e6dbdc03901a749", + "d197c5a4bbfc1947911ba9c425be6f68884461e4", "support" ], "css/css-writing-modes/reference/bidi-isolate-010.html": [ - "9f5b8bf9e28a82c29cbc43ed8952c9f0ed63fa9f", + "4f68475b542a602740cb7df8cfb1819acaac39f7", "support" ], "css/css-writing-modes/reference/bidi-isolate-011.html": [ - "430325e03cff194fec68420a860825d9ad83da11", + "11c81fc85ecca778eb135d9c03f796ce54a669df", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-001.html": [ - "f4551dd7daf47020507c5f5a61f85b12520a2c83", + "804b5bb00bd06cb58de809e0db2b5cd08ede3acc", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-002.html": [ - "7426089042d6999e9f8a47ecaa8cc3fb56a74e43", + "3ab14e5b85294d26c9153870eb785da28a7ee147", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-003.html": [ - "050de1fa7ad5ee9e444a9016d9387b521eb088c7", + "3a8dfd7574b6006ad4937134113d0274e7a852f1", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-004.html": [ - "49e39ba1b74bb793051a62dc9a84cbbdec0484d4", + "a71256e684f086c9ee8ec923c39f7b28ebec9d2e", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-005.html": [ - "ffa36d9b1f40373c4626d0da324c5214e7444d16", + "7cd3e9a277a9ba7eb720b9346e0c9aa9f0c97d6d", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-006.html": [ - "b5fc87a9e05dc10054a8e81a63ad14548b237383", + "41cd7af760d33230bb3154ab9ed74557501d207d", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-007.html": [ - "93d53b91fbb717e2aaaf20a482d2f22156349223", + "d50a817dacd559cd032955bbf4af45b76baffebd", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-008.html": [ - "8b14d1b8d9c4ac292276ec68934395e7e05f0285", + "f32001357047e3040a5d41fa0f33a2974695d481", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-009.html": [ - "ab9e3b6b0557e9b1ce1cca53c27f20b7167a20e1", + "85337edf18762d201615f36725b316fe781b49c3", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-010.html": [ - "209c0b6e14c04e5b64c51dbfd371fdf306ed5fa2", + "c66dd367d3c5834e504e35219dae18ddfb0b445f", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-011.html": [ - "e0b70a751baf1416a7a27b23d51145f8a3729189", + "0a410925cccd955b163367b224002572a4b9438c", "support" ], "css/css-writing-modes/reference/bidi-isolate-override-012.html": [ - "bf8ea3531559c409a0d7593fc556537074301158", + "4fd74bc172e4997cc7bda009d522845d43b696bd", "support" ], "css/css-writing-modes/reference/bidi-normal-001.html": [ - "7f394df1a92f15b6908b582c5aec2470fae1d48d", + "ef435df7d5937d8fb51ad58ba36a0a26faa19bc6", "support" ], "css/css-writing-modes/reference/bidi-normal-002.html": [ - "24b808e372a329438265d01faaf034fcc1bcc19e", + "79189d50744dec93f7b193f6587e6aeb264e54ee", "support" ], "css/css-writing-modes/reference/bidi-normal-003.html": [ - "10b4ad34368243bfe8fafb0b7c52b07e9cacf39e", + "08f6c75069d7bc100df2e97d1b4db8e7306707f3", "support" ], "css/css-writing-modes/reference/bidi-normal-004.html": [ - "eae5a4b319eabe36ddf148721cdda554a96911a6", + "2140e26b58ddff2f5f172944c4dbe14ca2b03ae5", "support" ], "css/css-writing-modes/reference/bidi-normal-005.html": [ - "e13bb59b2cb90e3d173cda2903e8069b3785f18d", + "1f7c63e41aef32c1763b243a60d4258789f92c80", "support" ], "css/css-writing-modes/reference/bidi-normal-006.html": [ - "9a13961188227dd6c8c618d21177411a2991975e", + "9e2ec525280c0da4162b8b2188c46b5045e66c8f", "support" ], "css/css-writing-modes/reference/bidi-normal-007.html": [ - "5f1bcc92e1ba5af2bd16e16544d730ae214e637c", + "e820ce3f6c5f4db407156513ceeb9b1282266e71", "support" ], "css/css-writing-modes/reference/bidi-normal-008.html": [ - "d74a686dd5d8a181627649a7a6a64e002aff9c2f", + "efdc52ecc501f14325b017f8615abc2f7b25aac1", "support" ], "css/css-writing-modes/reference/bidi-normal-009.html": [ - "e2058abe21a918b454332c99f2aaccbd192bf7bb", + "a19d6e8d755dccc3b22be419fd8d57791f911832", "support" ], "css/css-writing-modes/reference/bidi-normal-010.html": [ - "6055d4081c049e93e0c1b8eec4286d61ec28fb4b", + "3a4e643a112d732653ac3432b3fc885f2304541e", "support" ], "css/css-writing-modes/reference/bidi-normal-011.html": [ - "3a29ac934b1145ce2778ce5d1018846bea51ade1", + "3135016ede782c21db75a7b6c361778f5ee13b94", "support" ], "css/css-writing-modes/reference/bidi-override-001.html": [ - "3c7ff1b02740c51c3d3b08f8dfc7e88e323d1eb3", + "7a9b52ea5497390fb2aa0db76855972cebfe22e2", "support" ], "css/css-writing-modes/reference/bidi-override-002.html": [ - "97dae92625c9d637bacb1b84571bc667685dac8e", + "8383a136f6ba4071c8b9f3a3c3f9756845fc307a", "support" ], "css/css-writing-modes/reference/bidi-override-003.html": [ - "9e4aafd71e0a6428e133ae08e7b7b4110e1b8657", + "edbed0befc3ca2e803419e9e1052caa3185debf2", "support" ], "css/css-writing-modes/reference/bidi-override-004.html": [ - "93d339b8dc40f0ba60d84b25df0dc2d54538a581", + "561f6e3a2cfcb67305b6cd810690f58ab79662d8", "support" ], "css/css-writing-modes/reference/bidi-override-005.html": [ - "bd0482665ab88aa58b6e57f5aeea00b0bf94a1f3", + "817e38a60a28dd8ac5c421ea5dc8844f6044dc96", "support" ], "css/css-writing-modes/reference/bidi-override-006.html": [ - "b2ea75722001bcc484b7c4f10eae1de1013d5bee", + "8f215ddd9666a84bc4fc67996d79531b1c339de2", "support" ], "css/css-writing-modes/reference/bidi-override-007.html": [ - "eedb6106fe2befc171513c7b54da2ba593563dd4", + "0b5c4d3c41b1661ac88a5ed932cb0958c432ed84", "support" ], "css/css-writing-modes/reference/bidi-override-008.html": [ - "1fe12080969940c1cdbeb492246c04d6e509f0c5", + "f49c3c2aa34005ed699d0956578adbbd22a36020", "support" ], "css/css-writing-modes/reference/bidi-override-009.html": [ - "5bad86e602a44b2462f48979f478985e84a18b19", + "4f1a3e5fc3badeaa43ac5ecd02da1975c8d0b86f", "support" ], "css/css-writing-modes/reference/bidi-override-010.html": [ - "1b39a44dbef786e3b38853254a873d1ec5f811c6", + "3d7d7b6255acf5eb6405578a4489d604d46ffd1b", "support" ], "css/css-writing-modes/reference/bidi-override-011.html": [ - "0807e66facd3d637ede4c0374a7d08ca4476d611", + "3df03ce99b0346ec229273c9cc3a65609c9ac87c", "support" ], "css/css-writing-modes/reference/bidi-override-012.html": [ - "43fc0ff973598710ab94d8218476d1869c4be8a8", + "c04e922cc12f8cf2730b61c7c4ad961673b40baf", "support" ], "css/css-writing-modes/reference/bidi-plaintext-001.html": [ - "e60dbfb8eb24524cba771f0ac3970cd7f724092f", + "dd1e8ea82cace6c342e1a259a4f8ae23f3110fac", "support" ], "css/css-writing-modes/reference/bidi-plaintext-002.html": [ - "2bdff214b7efde70cef9d15a45c6db397bc36948", + "f9456cc3d4d7758c158cdefb46339f504afe7f64", "support" ], "css/css-writing-modes/reference/bidi-plaintext-003.html": [ - "8bc92c80f16b7096b6f76f6220fc23ae5c3003b3", + "0fd129471b75f378082d9efab73c1925bcc1afc5", "support" ], "css/css-writing-modes/reference/bidi-plaintext-004.html": [ - "38366e4233d14119044362932a07d880ffd4954a", + "9009e3e0b5e31483e34bd1e8516a038a6d6a3ec5", "support" ], "css/css-writing-modes/reference/bidi-plaintext-005.html": [ - "d8856b132aa7e40a5b6f92e7ed96f1ca0666a6ce", + "922e6a4030af555958a4d265e0435205d0170684", "support" ], "css/css-writing-modes/reference/bidi-plaintext-006.html": [ - "1ef2ffa9288fd814fcfcb36e82d852743e20d4b4", + "e73ef56547e5aa7bd710527ba19450d6f36df7f2", "support" ], "css/css-writing-modes/reference/bidi-plaintext-007.html": [ - "ff3f6917f9ceb7b3c93c78d45eda0757485c0418", + "0251ce72c488a0f789ee787aa2bbe097bac37190", "support" ], "css/css-writing-modes/reference/bidi-plaintext-008.html": [ - "ccb666dc688c5f21c5134fda6f3d61f659ff9669", + "813dd2ee1097ba9212264f2ba1a2b033d047ba65", "support" ], "css/css-writing-modes/reference/bidi-plaintext-009.html": [ - "3da660895d7f8e5f9ee8420dcd573185b8efd3c8", + "b91d44dca76cf263b45b153b84e47d126581b244", "support" ], "css/css-writing-modes/reference/bidi-plaintext-010.html": [ - "4d6aeceb3cc453ab21851bfc195cbab6e0a99b64", + "edbc3e7ecc37cc067fa92af9e8301a0911ee5610", "support" ], "css/css-writing-modes/reference/bidi-plaintext-011.html": [ - "8e771af6330671f696b57e713d09071bea82c4a1", + "6b4265f2b9bb01c3247b123fb92dec1e786cb4a4", "support" ], "css/css-writing-modes/reference/bidi-table-001.html": [ - "4cfd0a478102f4f778f8f190e6328b640001f94a", + "1d69cf5681dfdc0d1f91de83e334c08da7699be8", "support" ], "css/css-writing-modes/reference/bidi-unset-001.html": [ - "583d69311edc3cb8aaf75e47cc5b38c20ad28bc0", + "9162d7d96a121cc7ec8acac39496312ad7120708", "support" ], "css/css-writing-modes/reference/bidi-unset-002.html": [ - "a91c21953157463c67a09675a289dde5705b0f37", + "3f519a2b292205db647b42175e0aa8e91582f475", "support" ], "css/css-writing-modes/reference/bidi-unset-003.html": [ - "9a07318319382877bdf57e45831ce67b91aa79e8", + "975ad84c7cf1b5386d28acaf1794bfd10ab02c85", "support" ], "css/css-writing-modes/reference/bidi-unset-004.html": [ - "94ccf083a23c5f186387afe970a719c3b46e24a8", + "38884747965c5c429811a04e76f5d30c019f3c33", "support" ], "css/css-writing-modes/reference/bidi-unset-005.html": [ - "879ebe8837d6e0f5b6028ff05e74dcaa21e737c7", + "295999a8faca3f2054883332def5a9875c1529a3", "support" ], "css/css-writing-modes/reference/bidi-unset-006.html": [ - "5c2fbc92ed36eb13f2076cec80ef17c57db96d52", + "d9ff265150f943130509af8bd4d3a71fee401af9", "support" ], "css/css-writing-modes/reference/bidi-unset-007.html": [ - "8174e250d4573f51305dab9f4d2f694dc6278e6b", + "fe4458bb445bf1aa8b83f95240009c3a4b940727", "support" ], "css/css-writing-modes/reference/bidi-unset-008.html": [ - "a57fb6d629a6c3a9751e20b32d83da2309516408", + "530416053f88e3c0f2fbf521e1546805e398190e", "support" ], "css/css-writing-modes/reference/bidi-unset-009.html": [ - "bc72f4f8dda54efd14e43221a2d7795faf2184e4", + "922882880c772e2999f03aaf4dce1e51cc4f2eb3", "support" ], "css/css-writing-modes/reference/bidi-unset-010.html": [ - "a74a94d135f688be86a1d43ecb937c091c370fbf", + "a4eb69160ca83e1bda40681907b98e76821886a7", "support" ], "css/css-writing-modes/reference/block-embed-001.html": [ - "4caaf0a8726305aca7578d96c8ef7944a4b3e185", + "74601a7ea96239a9ac159c071cfd21482681a406", "support" ], "css/css-writing-modes/reference/block-embed-002.html": [ - "073cfa84d927dc27a0f760b9c6ff5d336fc6bb4f", + "74e76d9b08cdbabdb721164f89c8efc3c5907cd7", "support" ], "css/css-writing-modes/reference/block-embed-003.html": [ - "fc8bbb117699c7256d1234edcb67bc2dd106770a", + "7698d76941c31d0c2b069d25f61db1111b43d327", "support" ], "css/css-writing-modes/reference/block-override-001.html": [ - "8c88f58eae843da4a3af56d27cc1a22a9d6dc60a", + "d4e1e504308e0456a913f9d97272a796b9215e46", "support" ], "css/css-writing-modes/reference/block-override-002.html": [ - "b1bb499764f831e1f5fc4f908bb87c5c4c5e3355", + "f1c0a1b7c6b76fc7b8518389417f897e356f35bf", "support" ], "css/css-writing-modes/reference/block-override-003.html": [ - "4ca480df815a8b8808ed33834f7ee9f07f383c34", + "32778b915d8580d3fd4ee1a9ce5eec9a0e779fd6", "support" ], "css/css-writing-modes/reference/block-override-004.html": [ - "438458f8324c1cf069613ce8a7514a1a61ba6b31", + "2dbd3ca7903d7cd9e8771c3255dac49254f5ba00", "support" ], "css/css-writing-modes/reference/block-override-isolate-001.html": [ - "cf5473d0b3e055ba258fc032b0c6f08ad5c583dd", + "ba5ad3acced1b3722db4ea0f9e854502ed667248", "support" ], "css/css-writing-modes/reference/block-override-isolate-002.html": [ - "e2330aab64e9d3de5f9d3b418a8285d40575cb0b", + "bc69e98cb217550407894420dccc677134375e18", "support" ], "css/css-writing-modes/reference/block-override-isolate-003.html": [ - "98f26a0ec4200d6f7fa96bc98a5dd3f9dc5d43d7", + "d385e95eea5ae8c2ce379300fbb89b56cf667ff4", "support" ], "css/css-writing-modes/reference/block-override-isolate-004.html": [ - "45e55227f4d3ea3a84148b61cdf9183fd39ab1e4", + "3e8508715c82fcb871170228bef7d72b6a216de7", "support" ], "css/css-writing-modes/reference/block-plaintext-001.html": [ - "5d9e93192cec6305cae27250d0797a91c6533e33", + "f794b55433ec5b5cc16645efde0753baca01ec6d", "support" ], "css/css-writing-modes/reference/block-plaintext-002.html": [ - "9f32422cdb410959f589c88b8c614a629a816b8b", + "8e6d15d56b8b8de0968338ddcf2d6f593489f9b4", "support" ], "css/css-writing-modes/reference/block-plaintext-003.html": [ - "dce23f92472e047e4203c39c93c13adea0d5ef6a", + "4bf1cad3e7ec94e8c26ca0227880c1d2852d3b75", "support" ], "css/css-writing-modes/reference/block-plaintext-004.html": [ - "e4ed059b4f032cd1a605061d828678bdd92b9dc1", + "6be8c222a60b286e54a4cb77c0c9bcfa242cf0e9", "support" ], "css/css-writing-modes/reference/block-plaintext-005.html": [ - "11f4a58681976698682ea0f2df3f4617a71d68f0", + "d5988cacb7941bb0a09a18dc0345a797da53225f", "support" ], "css/css-writing-modes/reference/block-plaintext-006.html": [ - "d4b9c8e4f87051b0f49de03d0aca541a4314dea7", + "c8576532c8fc68551b347f91cfba0b9b0128828f", "support" ], "css/css-writing-modes/reference/ch-units-vrl-001-ref.html": [ @@ -308674,14 +308642,6 @@ "6718fb7f117b02d835e5019ec884902669263f7f", "support" ], - "css/css-writing-modes/reference/support/sileot-webfont.woff": [ - "b39ac96673d0f3a2b75935c6d18bce61e05ace22", - "support" - ], - "css/css-writing-modes/reference/support/tcu-font.woff": [ - "82edfdbafded72202c8a7aa3610c42ea53884c96", - "support" - ], "css/css-writing-modes/reference/svg-aliasing-001-ref.html": [ "8156e1ec7df883cc2aef362a0d477dd3853f52d6", "support" @@ -308715,7 +308675,7 @@ "support" ], "css/css-writing-modes/reference/text-combine-upright-value-single-character.html": [ - "516945b3461b8a8986703ede77858428596e4cff", + "63c8138947a0fecc134d04797d383f7974acc79c", "support" ], "css/css-writing-modes/reference/vertical-ahem-1x1-ref.html": [ @@ -309646,22 +309606,6 @@ "7a54c5ed35b6137376ba25f4b11653653a67198c", "support" ], - "css/css-writing-modes/support/adobe-fonts/CSSFWOrientationTest.otf": [ - "c36af3e6a778f52bd8ce898b182ce4651f1042a2", - "support" - ], - "css/css-writing-modes/support/adobe-fonts/CSSHWOrientationTest.otf": [ - "0fe77ba7c8e9950d253898fecb9e0053fa6f8a41", - "support" - ], - "css/css-writing-modes/support/adobe-fonts/LICENSE": [ - "3d2a62aab9fdce77d74b2444dc9fdd77d0beec0c", - "support" - ], - "css/css-writing-modes/support/adobe-fonts/README.md": [ - "096dabb800e7ae2002ee107c0cdcc1b7664f0e08", - "support" - ], "css/css-writing-modes/support/bg-red-1col-2row-320x320.png": [ "9cbaf814647b1c0766a8162a1d42549b69ecd40f", "support" @@ -309914,10 +309858,6 @@ "1460613a50fb9a4da1b61542a8cf64170f4a1902", "support" ], - "css/css-writing-modes/support/mplus-1p-regular.woff": [ - "708040c72a525e3ca122156c0212ca7ec14852bd", - "support" - ], "css/css-writing-modes/support/opaque-square-40x160.png": [ "c07475ffcbbfcc61b9378ae1573e9c2eaeccd107", "support" @@ -310086,10 +310026,6 @@ "37f7f773bc689c2698f4631716efa089d3a09c5d", "support" ], - "css/css-writing-modes/support/sileot-webfont.woff": [ - "b39ac96673d0f3a2b75935c6d18bce61e05ace22", - "support" - ], "css/css-writing-modes/support/swatch-aqua.png": [ "54b588a71cf45dbc9b982a78a8640467e62ba249", "support" @@ -310126,10 +310062,6 @@ "fb6871708173b9a6fcf20a638042fc0457d45fe3", "support" ], - "css/css-writing-modes/support/tcu-font.woff": [ - "82edfdbafded72202c8a7aa3610c42ea53884c96", - "support" - ], "css/css-writing-modes/support/test-bl.png": [ "16e4eaa4864c10e72433e575f59c9b67763fe06a", "support" @@ -310483,11 +310415,11 @@ "reftest" ], "css/css-writing-modes/text-combine-upright-line-breaking-rules-001-ref.html": [ - "dda87c2e06c1bdd0e305e2c5cafb460bf0d671f0", + "9ebd8d66ad177bcf2a59bbefe33a3c40ccf167a3", "support" ], "css/css-writing-modes/text-combine-upright-line-breaking-rules-001.html": [ - "599d483cbe347b9068ecbad52273e7e69a5c788e", + "352a1930ddbd0edc0e37aac8ab82431e228f4d26", "reftest" ], "css/css-writing-modes/text-combine-upright-parsing-invalid-001.html": [ @@ -310503,7 +310435,7 @@ "testharness" ], "css/css-writing-modes/text-combine-upright-value-all-001.html": [ - "24107d055d5c6b16fe48124a4958e95dcbbf8da7", + "afafe4261a1d2076def3fa5644abb42bd30e59bb", "reftest" ], "css/css-writing-modes/text-combine-upright-value-all-002.html": [ @@ -310667,15 +310599,15 @@ "reftest" ], "css/css-writing-modes/text-orientation-010.xht": [ - "159a237c5135cd0fcf773fc83d7d1b528c1e21e0", + "e260ff130fef523a99f57f5786ffd0aa5bd19c26", "visual" ], "css/css-writing-modes/text-orientation-011.xht": [ - "4b1726d4a6d37722b3ce1bae74cd2e6f309403ea", + "35f637e88c0e745d32f5c2e4360a6ed35821911e", "visual" ], "css/css-writing-modes/text-orientation-012.xht": [ - "9db9f8a9648015547058f656b21bd04d5fa128c6", + "10c6ce6249a11cab33138aac92ae699c726a0ef9", "visual" ], "css/css-writing-modes/text-orientation-016-ref.xht": [ @@ -310687,31 +310619,31 @@ "reftest" ], "css/css-writing-modes/text-orientation-mixed-slr-015.xht": [ - "07bed766b4d752e34b72808370e84dd1993dfeca", + "c43092d37cb60b744d80cddae4a9b274a0073e5a", "visual" ], "css/css-writing-modes/text-orientation-mixed-srl-016-ref.xht": [ - "bfea98a7cfd6978d459be755b0b38d0b253d1ab5", + "5465539d4c5f2e7555da70a25e232fff37d26f8d", "support" ], "css/css-writing-modes/text-orientation-mixed-vlr-100-ref.html": [ - "39ba3ba45ba3890bbdaa87c7a9b0d11dc83da080", + "97138c005328b42014b4e84bb21b5cef75ca8fa5", "support" ], "css/css-writing-modes/text-orientation-mixed-vlr-100.html": [ - "2f7cb3fcc51dbe26ae5089a33373ca0d0125418e", + "eef8a248a1eec783c2406c448a4d43d624fb9b3d", "reftest" ], "css/css-writing-modes/text-orientation-mixed-vrl-002.xht": [ - "da19d6136b8f893a2cebf4d2ad93a366c4f5a46d", + "c3ba9b0753ff357078eed98e25b82d722ddfcc81", "visual" ], "css/css-writing-modes/text-orientation-mixed-vrl-100-ref.html": [ - "087e9e542b2da12e644db5decec347578001df03", + "7fa3282dc95c8880d66918a75fae68e275706f89", "support" ], "css/css-writing-modes/text-orientation-mixed-vrl-100.html": [ - "2d6206d3f2694febacd326b58bc739f5f00730bf", + "eb06a6e062f9e9044449f035e7d2ffe2c95b708f", "reftest" ], "css/css-writing-modes/text-orientation-parsing-001.html": [ @@ -310723,75 +310655,75 @@ "testharness" ], "css/css-writing-modes/text-orientation-script-001.html": [ - "f0633f62d0ff869b96e05d893901cf3b1d52503f", + "6d9b94be1e7c7c12308584f16a7bd6a6daf2798f", "testharness" ], "css/css-writing-modes/text-orientation-script-001a.html": [ - "94b19649824be3d9ed055e095104a80edff3667a", + "2f69d5f7bce24618634dc55bba55d31279f6c1bb", "testharness" ], "css/css-writing-modes/text-orientation-script-001b.html": [ - "42cfc4941fce943b071dbbe34ccc51ec371900c6", + "93665238be4b4f9728bc8e958c72b3c019ff73ed", "testharness" ], "css/css-writing-modes/text-orientation-script-001c.html": [ - "9c5584338748811650ee00b8efc9afd837c671c0", + "7dc591c62d9b80bdc9338f6e35b9636cbd6967fb", "testharness" ], "css/css-writing-modes/text-orientation-script-001d.html": [ - "e56f41bdea73dee1c2c1915073dd7af2c8498915", + "7a900e8b6727cdf1c290dc2403bc034635bfcffc", "testharness" ], "css/css-writing-modes/text-orientation-script-001e.html": [ - "9ca2c2243c11d10195af86da8b3f5bda895bb279", + "71e5efbff8832cb58842a6517502a0c3f1e49298", "testharness" ], "css/css-writing-modes/text-orientation-script-001f.html": [ - "18a4e76007bf4f218b1ad3d99a7630e4f169b652", + "d5bd52be0a1504a01a6294f646e71171554ec9c4", "testharness" ], "css/css-writing-modes/text-orientation-script-001g.html": [ - "28e7534cc8505cd2a90c6d7acdb3bfbf874c11ae", + "f64d7ba5befe79774022a69db3614f2d991002fd", "testharness" ], "css/css-writing-modes/text-orientation-script-001h.html": [ - "95a969dbde8acc4ba5c6e79909338ea1978ac705", + "bb3fb6afa32854c4d7620e90f646b47f2eb8e8df", "testharness" ], "css/css-writing-modes/text-orientation-script-001i.html": [ - "0e78d8642016f35face846aad4cf17d47b71ede7", + "b6386637f2dce54c056cca7bc33ed4c11e3f05c0", "testharness" ], "css/css-writing-modes/text-orientation-script-001j.html": [ - "d9e605f89d01d26ae1ac7edfeed2a8b6d3643902", + "6af678552090ae3c028b8691358a6f7d3a0ed805", "testharness" ], "css/css-writing-modes/text-orientation-script-001k.html": [ - "0f5de7ee55beaf3066519bcc4d16f8eb8bbf2621", + "2c258d0a0564f18d0544c3ccd1bb8a8bd23c5c1c", "testharness" ], "css/css-writing-modes/text-orientation-script-001l.html": [ - "a2114b28253dfecea111090f231c7696e0ea93c0", + "4237f67b2a55d72fcf035f74b698a1bec176f929", "testharness" ], "css/css-writing-modes/text-orientation-script-001m.html": [ - "d8e1cd0e959482c422f869099c5162f06ec5be1b", + "a65da3560d98b3cf3424be0b1aa22d0933788439", "testharness" ], "css/css-writing-modes/text-orientation-script-001n.html": [ - "38e6d7af1936dc376bbd4a27b6b5dd1269faf7ec", + "6db10fb2c951bb78498e37c839f4459e19b0625e", "testharness" ], "css/css-writing-modes/text-orientation-script-001o.html": [ - "19d69394d557ea1e666b17291c7e1883144ada54", + "0a39487185e1ba8f7749b0161e93af72e1069b13", "testharness" ], "css/css-writing-modes/text-orientation-script-001p.html": [ - "66e54487995db3916d5fd5da8200600cdd517dd8", + "9681de09da6324c9a53b877a69106608228a8ef9", "testharness" ], "css/css-writing-modes/text-orientation-script-001q.html": [ - "9daf7ffd5a66acf0ebb150ed87ec27e02d8ef9f1", + "4c114d6d5c284b786ef783de76393a34de6d677a", "testharness" ], "css/css-writing-modes/text-orientation-sideways-001.xht": [ @@ -310799,47 +310731,47 @@ "visual" ], "css/css-writing-modes/text-orientation-sideways-slr-019.xht": [ - "b60d3b6477313c652eb3de6aba3d3fe6d806d936", + "a044836b817181faea607eb8e776db82a70982f2", "visual" ], "css/css-writing-modes/text-orientation-sideways-vlr-100-ref.html": [ - "7b36a5a352ef4fadec1e7e23adda1ad6fd7c9444", + "1f7adad5136675056df6ea741c5b614500b1b4bb", "support" ], "css/css-writing-modes/text-orientation-sideways-vlr-100.html": [ - "5ad9b90c069c918269d0363938e9786240df04ec", + "a5e2d5b9b3821c2a71dbf7c22475aff5245c0633", "reftest" ], "css/css-writing-modes/text-orientation-sideways-vrl-100-ref.html": [ - "34700ce4b5c88e6a78c139825a4ffdb2176a26c1", + "1426cf000f67a4943166c84b161ff729274fec12", "support" ], "css/css-writing-modes/text-orientation-sideways-vrl-100.html": [ - "3d6e7e8646cdabad0a69c7dcfd5887600235dcb3", + "28677aafa451764e6b4f31944420be77a85e1ae8", "reftest" ], "css/css-writing-modes/text-orientation-upright-slr-017.xht": [ - "1d1562b66d77b5589ee86363ca709d0aa30cab2a", + "a7e63e94d73c9df28d7eaf38f7760e3c49442529", "visual" ], "css/css-writing-modes/text-orientation-upright-vlr-100-ref.html": [ - "0a623fd2d3f0fa2eb88b1c15078751cc3a569f75", + "3e8ac533cb5dac2bdd1fbffee57ba7c6f9485efd", "support" ], "css/css-writing-modes/text-orientation-upright-vlr-100.html": [ - "06bcabdb125af775c8a54a191e0220d45770ec3e", + "0fcbcaeb3062c6bc3d2b277b9c1e1977d48de200", "reftest" ], "css/css-writing-modes/text-orientation-upright-vrl-002.xht": [ - "1448f241e5237217fae2d9b58d7304bb3d957c49", + "320be9ddfeb215875480ce3796ca83afa22fcbfc", "visual" ], "css/css-writing-modes/text-orientation-upright-vrl-100-ref.html": [ - "c269642bb8c2db4a8fd3ac8ff4afb1faf4e62e61", + "b84c04fc23c735943274bacc288b8e7a5b05390e", "support" ], "css/css-writing-modes/text-orientation-upright-vrl-100.html": [ - "ffe5237dd3712eb3a762dc16c05cb6c9b86a5f65", + "86518d675bbe9f501bf6a8c2b2a8a7f6d66d65c8", "reftest" ], "css/css-writing-modes/text-underline-position-alphabetic-001.xht": [ @@ -310895,11 +310827,11 @@ "support" ], "css/css-writing-modes/tools/generators/text-orientation-ref.ejs": [ - "3469e9e36d2c36dbd726e23e3692c52e19f94539", + "08c2d38fbc364bab3511d6223601e7508676a50c", "support" ], "css/css-writing-modes/tools/generators/text-orientation-script.ejs": [ - "b599ae62a388ecdeeabd1a8167c26cae66b6fb46", + "21c6e8cd03edabaa17326bda4aef45f294ef2959", "support" ], "css/css-writing-modes/tools/generators/ucd/Blocks.txt": [ @@ -311646,10 +311578,6 @@ "2c55d573bbd90f5ca3e564131ae697b547e4a43c", "testharness" ], - "css/cssom/CSSKeyframeRule-expected.txt": [ - "bc925feebb6756dcd78b252e467c0839912605ea", - "support" - ], "css/cssom/CSSKeyframeRule.html": [ "0246cf2511a18c247db1eabefec8b3590127d3ee", "testharness" @@ -312142,318 +312070,6 @@ "5ab67b9e86fd700a556d153898c2896448cc1759", "testharness" ], - "css/fonts/CSSTest/LICENSE": [ - "77802fa35fec206bed06c1de19407778fb9e13c5", - "support" - ], - "css/fonts/CSSTest/README": [ - "aa4528aa0568d594219f075d06a5842b2a5f106f", - "support" - ], - "css/fonts/CSSTest/csstest-ascii.ttf": [ - "58d46d8c1f281f39c95d688bc90263e9f9d8982f", - "support" - ], - "css/fonts/CSSTest/csstest-basic-bold.ttf": [ - "77495073b436b8e9f0688a2cefcf1db30cf2e0d9", - "support" - ], - "css/fonts/CSSTest/csstest-basic-bolditalic.ttf": [ - "f16770031fdfc3e9a0c2b0fc90ac838e85b60616", - "support" - ], - "css/fonts/CSSTest/csstest-basic-italic.ttf": [ - "6b6e7eef780a0f35f40e20b1b724eb496c4e67c8", - "support" - ], - "css/fonts/CSSTest/csstest-basic-regular.ttf": [ - "3d60e12eb0097bcb0aeaa9c4e183281d0abc0bea", - "support" - ], - "css/fonts/CSSTest/csstest-fallback.ttf": [ - "ce369db94cf846233912f6d9d1bf5171ca127e0d", - "support" - ], - "css/fonts/CSSTest/csstest-familyname-bold.ttf": [ - "cf1ed0fee2678f277ddab97b6ea464c9d04015f3", - "support" - ], - "css/fonts/CSSTest/csstest-familyname-funkyA.ttf": [ - "c3382d12a83708732419a66d10fb65b5d1f87c80", - "support" - ], - "css/fonts/CSSTest/csstest-familyname-funkyB.ttf": [ - "a90b26d9a6d7ea68d093329935783ab45eceb640", - "support" - ], - "css/fonts/CSSTest/csstest-familyname-funkyC.ttf": [ - "905a0524a6911988f033775ee9bddf013c9b58b8", - "support" - ], - "css/fonts/CSSTest/csstest-familyname.ttf": [ - "ed642de84e7328d3f9dafda4f23a8e6bd6d03f3e", - "support" - ], - "css/fonts/CSSTest/csstest-verify.ttf": [ - "8f1711214501b53f631bb5c20f0a7293c7770452", - "support" - ], - "css/fonts/CSSTest/csstest-weights-100.ttf": [ - "c3cab8ef27e56edbe06cc18b5dd78e17d0250d25", - "support" - ], - "css/fonts/CSSTest/csstest-weights-1479-w1.ttf": [ - "1d0647e7d348e1e791c4eae818b8c79430e36d05", - "support" - ], - "css/fonts/CSSTest/csstest-weights-1479-w4.ttf": [ - "b9a684a737fe1c8e70a69231d9b79d7204c1d8ee", - "support" - ], - "css/fonts/CSSTest/csstest-weights-1479-w7.ttf": [ - "08d7b00cbbdf39c74488f2e6690d5b51c807262a", - "support" - ], - "css/fonts/CSSTest/csstest-weights-1479-w9.ttf": [ - "2985d50c98c57f0c7da1767b3955321f056f8ead", - "support" - ], - "css/fonts/CSSTest/csstest-weights-15-w1.ttf": [ - "6a51a5456dd76a4c4fc10544fc9be0b8209aa5c4", - "support" - ], - "css/fonts/CSSTest/csstest-weights-15-w5.ttf": [ - "5f89d11ae5ae2a588aca38209e4b71bd5a307f5a", - "support" - ], - "css/fonts/CSSTest/csstest-weights-200.ttf": [ - "e97a992516431055f1511ac2f31cb186ad39ff86", - "support" - ], - "css/fonts/CSSTest/csstest-weights-24-w2.ttf": [ - "f43b770cf60045fae772046fb4e7aa1d90551b92", - "support" - ], - "css/fonts/CSSTest/csstest-weights-24-w4.ttf": [ - "273e229278b23e50110d9ec80239d21c08b7a8a9", - "support" - ], - "css/fonts/CSSTest/csstest-weights-2569-w2.ttf": [ - "82380101e4c8b79bc6f7e960972b42e2dbf93f16", - "support" - ], - "css/fonts/CSSTest/csstest-weights-2569-w5.ttf": [ - "217b21707683ace1cb4a0dfcaa4e285fa2b096b5", - "support" - ], - "css/fonts/CSSTest/csstest-weights-2569-w6.ttf": [ - "147dd08ab2eb9005c1288307ef4e36c63cb44ea3", - "support" - ], - "css/fonts/CSSTest/csstest-weights-2569-w9.ttf": [ - "013ab3b03a9959432205fe3ab33acac3f822d859", - "support" - ], - "css/fonts/CSSTest/csstest-weights-258-w2.ttf": [ - "f3143fdfbfd666ca9cd1cfe65205ea17935d7d55", - "support" - ], - "css/fonts/CSSTest/csstest-weights-258-w5.ttf": [ - "e8e3f293046f319a8bbb44f00db7db31e9a2fe51", - "support" - ], - "css/fonts/CSSTest/csstest-weights-258-w8.ttf": [ - "7e5a5e10448208f0b01db85320c6114c6cec0e1d", - "support" - ], - "css/fonts/CSSTest/csstest-weights-300.ttf": [ - "6f56b55cff3997fed67a085e15bb71b4439f792a", - "support" - ], - "css/fonts/CSSTest/csstest-weights-3589-w3.ttf": [ - "4016a668c0ed63dc06a993058850a42ad0d3f5c5", - "support" - ], - "css/fonts/CSSTest/csstest-weights-3589-w5.ttf": [ - "29deda388e1835cd09e9d822bca707159cc3e37e", - "support" - ], - "css/fonts/CSSTest/csstest-weights-3589-w8.ttf": [ - "9a73aeb20ba22555d25fdd527707476f0a80f336", - "support" - ], - "css/fonts/CSSTest/csstest-weights-3589-w9.ttf": [ - "ddc4c8f1a4957e14617033731e5a595e671f44d5", - "support" - ], - "css/fonts/CSSTest/csstest-weights-400.ttf": [ - "72bcba9318b0c8c4da2936807072f97b63650903", - "support" - ], - "css/fonts/CSSTest/csstest-weights-47-w4.ttf": [ - "3ca694941ed38dd36bc9ed0da1520171b5b9b7b0", - "support" - ], - "css/fonts/CSSTest/csstest-weights-47-w7.ttf": [ - "9f7896077d3e6b7f196ed443d009e5062e6b0521", - "support" - ], - "css/fonts/CSSTest/csstest-weights-500.ttf": [ - "50b6f0bf1ba8c82eca4020c8f9f6d4e5e51a5e3b", - "support" - ], - "css/fonts/CSSTest/csstest-weights-600.ttf": [ - "6192b7c7121f8612ab05a2ad9bc43d85c452b588", - "support" - ], - "css/fonts/CSSTest/csstest-weights-700.ttf": [ - "c4478e8d1ddab24fcbe00d6183f1abd80fa5547f", - "support" - ], - "css/fonts/CSSTest/csstest-weights-800.ttf": [ - "a8611a5c6199ffb8202cee7dd2bde5758d9909a0", - "support" - ], - "css/fonts/CSSTest/csstest-weights-900.ttf": [ - "754328039c1760649b6f121a8fe18cf7699b55b5", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w1.ttf": [ - "95630a13446cf620cf306082b3e586d7387de89b", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w2.ttf": [ - "d27544c3c84271db69d0710147da49ffc97a5eea", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w3.ttf": [ - "5ba0d5b9a47e0198f6eb64cbcc4f2e22368fafd4", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w4.ttf": [ - "086f15891ece9d850ab81f9d365c15cc2a586d40", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w5.ttf": [ - "47c6c976ecf0e5b29bc6d6f6bdd08145ae479930", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w6.ttf": [ - "a598f0a77993d97584523f5f7d6265371bac690c", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w7.ttf": [ - "1904d37c5e84fe3db0d34015996bca78553577a2", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w8.ttf": [ - "7786275e903f42b7eb2c08885ba82c194a069a48", - "support" - ], - "css/fonts/CSSTest/csstest-weights-full-w9.ttf": [ - "cd23f280c1c0e146d6eca47422ad59d177eea4a3", - "support" - ], - "css/fonts/CSSTest/csstest-weights.ttf": [ - "582e828f80ae5ba5c158953fb6e9d17fada60c32", - "support" - ], - "css/fonts/NotoSansDeseret-Regular.ttf": [ - "b6a1a40fb1e10ce264b4bea355a05f7670386a10", - "support" - ], - "css/fonts/adobe-fonts/CSSFWOrientationTest.otf": [ - "c36af3e6a778f52bd8ce898b182ce4651f1042a2", - "support" - ], - "css/fonts/adobe-fonts/CSSHWOrientationTest.otf": [ - "0fe77ba7c8e9950d253898fecb9e0053fa6f8a41", - "support" - ], - "css/fonts/adobe-fonts/LICENSE": [ - "3d2a62aab9fdce77d74b2444dc9fdd77d0beec0c", - "support" - ], - "css/fonts/adobe-fonts/README.md": [ - "096dabb800e7ae2002ee107c0cdcc1b7664f0e08", - "support" - ], - "css/fonts/ahem-extra/AHEM_Ahem!.TTF": [ - "9afd71ca86f449710e8a6a484f3027d9bbb592dc", - "support" - ], - "css/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF": [ - "43c3e2839a8b94d63119f7d44f14192f20860f1f", - "support" - ], - "css/fonts/ahem-extra/AHEM_MissingNormal.TTF": [ - "6a4219f5852f2a17444a8fe35b6b8bbc2ca8e704", - "support" - ], - "css/fonts/ahem-extra/AHEM_SmallCaps.TTF": [ - "aefda72260c7030806a25b15e65ccea7e0763bab", - "support" - ], - "css/fonts/ahem-extra/AHEM_WhiteSpace.TTF": [ - "a75fb30ca73759b7e45b0be9dabc683d2f7ed24b", - "support" - ], - "css/fonts/ahem-extra/AHEM_cursive.TTF": [ - "3a83557886033e1718dc1fa0d7266fab3968d0d9", - "support" - ], - "css/fonts/ahem-extra/AHEM_default.TTF": [ - "66b305e684f1378d784a3f9996d963cd957ccf72", - "support" - ], - "css/fonts/ahem-extra/AHEM_fantasy.TTF": [ - "7924d9f52d175d98d4496ba61a58438fe1670ac9", - "support" - ], - "css/fonts/ahem-extra/AHEM_inherit.TTF": [ - "b25a3eb616c222ee3c15d93529546376403d1311", - "support" - ], - "css/fonts/ahem-extra/AHEM_initial.TTF": [ - "92bca8bf84d561e13fc9fcf450db10f5cb17186d", - "support" - ], - "css/fonts/ahem-extra/AHEM_monospace.TTF": [ - "d75b974c28ab871158124be8fe4af948bec3269c", - "support" - ], - "css/fonts/ahem-extra/AHEM_sans-serif.TTF": [ - "4fb82e7aa67a73ab0548e59f003737f571b18ff8", - "support" - ], - "css/fonts/ahem-extra/AHEM_serif.TTF": [ - "6f3884860a84b9b6e7524c84626638e303a14660", - "support" - ], - "css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ - "ec660b17dff69058c2bbf122ca85ab83b920fce7", - "support" - ], - "css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ - "dea38de8b3affb6060e50e4727682ab3eff7b0c6", - "support" - ], - "css/fonts/noto/NotoSansAdlam-hinted/README": [ - "837f8d36a2d38637c424b878c7b068930a07c377", - "support" - ], - "css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ - "ec660b17dff69058c2bbf122ca85ab83b920fce7", - "support" - ], - "css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ - "12a8cdf3af7376abf50426eae30d490c8f83f13e", - "support" - ], - "css/fonts/noto/NotoSansCypriot-hinted/README": [ - "837f8d36a2d38637c424b878c7b068930a07c377", - "support" - ], "css/geometry/DOMMatrix-001.html": [ "a8cfa83e572a766b61e4eae5946e7efb62e9eab7", "testharness" @@ -317594,6 +317210,14 @@ "3b143f80d77a0b15b59cc6e6f5344f85dafe4f4e", "testharness" ], + "custom-elements/custom-element-registry/upgrade-expected.txt": [ + "0e6ccaa204736317abfb1dc62dd7c29b64dcd5f5", + "support" + ], + "custom-elements/custom-element-registry/upgrade.html": [ + "a5c2ced54f7031d02009c9853a7ee4e883151cb3", + "testharness" + ], "custom-elements/disconnected-callbacks.html": [ "ad030517981b11892126023bc758b7fe323a3d14", "testharness" @@ -323970,18 +323594,358 @@ "09ab38acc0bc980af3e96a61390cd000885b2fe5", "support" ], + "fonts/AD.woff": [ + "2bff1f1a01ce7c959341300952b2467e87e60dd5", + "support" + ], "fonts/Ahem.ttf": [ "cb13ce54ae0c997d219670e6583637967170e40d", "support" ], + "fonts/CSSTest/LICENSE": [ + "77802fa35fec206bed06c1de19407778fb9e13c5", + "support" + ], + "fonts/CSSTest/README": [ + "aa4528aa0568d594219f075d06a5842b2a5f106f", + "support" + ], + "fonts/CSSTest/csstest-ascii.ttf": [ + "58d46d8c1f281f39c95d688bc90263e9f9d8982f", + "support" + ], + "fonts/CSSTest/csstest-basic-bold.ttf": [ + "77495073b436b8e9f0688a2cefcf1db30cf2e0d9", + "support" + ], + "fonts/CSSTest/csstest-basic-bolditalic.ttf": [ + "f16770031fdfc3e9a0c2b0fc90ac838e85b60616", + "support" + ], + "fonts/CSSTest/csstest-basic-italic.ttf": [ + "6b6e7eef780a0f35f40e20b1b724eb496c4e67c8", + "support" + ], + "fonts/CSSTest/csstest-basic-regular.ttf": [ + "3d60e12eb0097bcb0aeaa9c4e183281d0abc0bea", + "support" + ], + "fonts/CSSTest/csstest-fallback.ttf": [ + "ce369db94cf846233912f6d9d1bf5171ca127e0d", + "support" + ], + "fonts/CSSTest/csstest-familyname-bold.ttf": [ + "cf1ed0fee2678f277ddab97b6ea464c9d04015f3", + "support" + ], + "fonts/CSSTest/csstest-familyname-funkyA.ttf": [ + "c3382d12a83708732419a66d10fb65b5d1f87c80", + "support" + ], + "fonts/CSSTest/csstest-familyname-funkyB.ttf": [ + "a90b26d9a6d7ea68d093329935783ab45eceb640", + "support" + ], + "fonts/CSSTest/csstest-familyname-funkyC.ttf": [ + "905a0524a6911988f033775ee9bddf013c9b58b8", + "support" + ], + "fonts/CSSTest/csstest-familyname.ttf": [ + "ed642de84e7328d3f9dafda4f23a8e6bd6d03f3e", + "support" + ], + "fonts/CSSTest/csstest-verify.ttf": [ + "8f1711214501b53f631bb5c20f0a7293c7770452", + "support" + ], + "fonts/CSSTest/csstest-weights-100.ttf": [ + "c3cab8ef27e56edbe06cc18b5dd78e17d0250d25", + "support" + ], + "fonts/CSSTest/csstest-weights-1479-w1.ttf": [ + "1d0647e7d348e1e791c4eae818b8c79430e36d05", + "support" + ], + "fonts/CSSTest/csstest-weights-1479-w4.ttf": [ + "b9a684a737fe1c8e70a69231d9b79d7204c1d8ee", + "support" + ], + "fonts/CSSTest/csstest-weights-1479-w7.ttf": [ + "08d7b00cbbdf39c74488f2e6690d5b51c807262a", + "support" + ], + "fonts/CSSTest/csstest-weights-1479-w9.ttf": [ + "2985d50c98c57f0c7da1767b3955321f056f8ead", + "support" + ], + "fonts/CSSTest/csstest-weights-15-w1.ttf": [ + "6a51a5456dd76a4c4fc10544fc9be0b8209aa5c4", + "support" + ], + "fonts/CSSTest/csstest-weights-15-w5.ttf": [ + "5f89d11ae5ae2a588aca38209e4b71bd5a307f5a", + "support" + ], + "fonts/CSSTest/csstest-weights-200.ttf": [ + "e97a992516431055f1511ac2f31cb186ad39ff86", + "support" + ], + "fonts/CSSTest/csstest-weights-24-w2.ttf": [ + "f43b770cf60045fae772046fb4e7aa1d90551b92", + "support" + ], + "fonts/CSSTest/csstest-weights-24-w4.ttf": [ + "273e229278b23e50110d9ec80239d21c08b7a8a9", + "support" + ], + "fonts/CSSTest/csstest-weights-2569-w2.ttf": [ + "82380101e4c8b79bc6f7e960972b42e2dbf93f16", + "support" + ], + "fonts/CSSTest/csstest-weights-2569-w5.ttf": [ + "217b21707683ace1cb4a0dfcaa4e285fa2b096b5", + "support" + ], + "fonts/CSSTest/csstest-weights-2569-w6.ttf": [ + "147dd08ab2eb9005c1288307ef4e36c63cb44ea3", + "support" + ], + "fonts/CSSTest/csstest-weights-2569-w9.ttf": [ + "013ab3b03a9959432205fe3ab33acac3f822d859", + "support" + ], + "fonts/CSSTest/csstest-weights-258-w2.ttf": [ + "f3143fdfbfd666ca9cd1cfe65205ea17935d7d55", + "support" + ], + "fonts/CSSTest/csstest-weights-258-w5.ttf": [ + "e8e3f293046f319a8bbb44f00db7db31e9a2fe51", + "support" + ], + "fonts/CSSTest/csstest-weights-258-w8.ttf": [ + "7e5a5e10448208f0b01db85320c6114c6cec0e1d", + "support" + ], + "fonts/CSSTest/csstest-weights-300.ttf": [ + "6f56b55cff3997fed67a085e15bb71b4439f792a", + "support" + ], + "fonts/CSSTest/csstest-weights-3589-w3.ttf": [ + "4016a668c0ed63dc06a993058850a42ad0d3f5c5", + "support" + ], + "fonts/CSSTest/csstest-weights-3589-w5.ttf": [ + "29deda388e1835cd09e9d822bca707159cc3e37e", + "support" + ], + "fonts/CSSTest/csstest-weights-3589-w8.ttf": [ + "9a73aeb20ba22555d25fdd527707476f0a80f336", + "support" + ], + "fonts/CSSTest/csstest-weights-3589-w9.ttf": [ + "ddc4c8f1a4957e14617033731e5a595e671f44d5", + "support" + ], + "fonts/CSSTest/csstest-weights-400.ttf": [ + "72bcba9318b0c8c4da2936807072f97b63650903", + "support" + ], + "fonts/CSSTest/csstest-weights-47-w4.ttf": [ + "3ca694941ed38dd36bc9ed0da1520171b5b9b7b0", + "support" + ], + "fonts/CSSTest/csstest-weights-47-w7.ttf": [ + "9f7896077d3e6b7f196ed443d009e5062e6b0521", + "support" + ], + "fonts/CSSTest/csstest-weights-500.ttf": [ + "50b6f0bf1ba8c82eca4020c8f9f6d4e5e51a5e3b", + "support" + ], + "fonts/CSSTest/csstest-weights-600.ttf": [ + "6192b7c7121f8612ab05a2ad9bc43d85c452b588", + "support" + ], + "fonts/CSSTest/csstest-weights-700.ttf": [ + "c4478e8d1ddab24fcbe00d6183f1abd80fa5547f", + "support" + ], + "fonts/CSSTest/csstest-weights-800.ttf": [ + "a8611a5c6199ffb8202cee7dd2bde5758d9909a0", + "support" + ], + "fonts/CSSTest/csstest-weights-900.ttf": [ + "754328039c1760649b6f121a8fe18cf7699b55b5", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w1.ttf": [ + "95630a13446cf620cf306082b3e586d7387de89b", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w2.ttf": [ + "d27544c3c84271db69d0710147da49ffc97a5eea", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w3.ttf": [ + "5ba0d5b9a47e0198f6eb64cbcc4f2e22368fafd4", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w4.ttf": [ + "086f15891ece9d850ab81f9d365c15cc2a586d40", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w5.ttf": [ + "47c6c976ecf0e5b29bc6d6f6bdd08145ae479930", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w6.ttf": [ + "a598f0a77993d97584523f5f7d6265371bac690c", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w7.ttf": [ + "1904d37c5e84fe3db0d34015996bca78553577a2", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w8.ttf": [ + "7786275e903f42b7eb2c08885ba82c194a069a48", + "support" + ], + "fonts/CSSTest/csstest-weights-full-w9.ttf": [ + "cd23f280c1c0e146d6eca47422ad59d177eea4a3", + "support" + ], + "fonts/CSSTest/csstest-weights.ttf": [ + "582e828f80ae5ba5c158953fb6e9d17fada60c32", + "support" + ], "fonts/CanvasTest.ttf": [ "10a7017b4caead6817aa08b25f14950e6402dd95", "support" ], + "fonts/CanvasTest.ttf.sub.headers": [ + "ac876cf9750337fcde99e547f5dc1223bb200772", + "support" + ], + "fonts/GentiumPlus-R.woff": [ + "d09831467a1b1a17f97271ff027d413e28b4bacb", + "support" + ], "fonts/README.md": [ "eb192c5fe03811a1b69578c92bf77d8abab89f29", "support" ], + "fonts/Revalia.woff": [ + "f2b20022818e53e9c9c5f22bcc52703c6858eb1c", + "support" + ], + "fonts/adobe-fonts/CSSFWOrientationTest.otf": [ + "c36af3e6a778f52bd8ce898b182ce4651f1042a2", + "support" + ], + "fonts/adobe-fonts/CSSHWOrientationTest.otf": [ + "0fe77ba7c8e9950d253898fecb9e0053fa6f8a41", + "support" + ], + "fonts/adobe-fonts/LICENSE": [ + "3d2a62aab9fdce77d74b2444dc9fdd77d0beec0c", + "support" + ], + "fonts/adobe-fonts/README.md": [ + "096dabb800e7ae2002ee107c0cdcc1b7664f0e08", + "support" + ], + "fonts/ahem-extra/AHEM_Ahem!.TTF": [ + "9afd71ca86f449710e8a6a484f3027d9bbb592dc", + "support" + ], + "fonts/ahem-extra/AHEM_MissingItalicOblique.TTF": [ + "43c3e2839a8b94d63119f7d44f14192f20860f1f", + "support" + ], + "fonts/ahem-extra/AHEM_MissingNormal.TTF": [ + "6a4219f5852f2a17444a8fe35b6b8bbc2ca8e704", + "support" + ], + "fonts/ahem-extra/AHEM_SmallCaps.TTF": [ + "aefda72260c7030806a25b15e65ccea7e0763bab", + "support" + ], + "fonts/ahem-extra/AHEM_WhiteSpace.TTF": [ + "a75fb30ca73759b7e45b0be9dabc683d2f7ed24b", + "support" + ], + "fonts/ahem-extra/AHEM_cursive.TTF": [ + "3a83557886033e1718dc1fa0d7266fab3968d0d9", + "support" + ], + "fonts/ahem-extra/AHEM_default.TTF": [ + "66b305e684f1378d784a3f9996d963cd957ccf72", + "support" + ], + "fonts/ahem-extra/AHEM_fantasy.TTF": [ + "7924d9f52d175d98d4496ba61a58438fe1670ac9", + "support" + ], + "fonts/ahem-extra/AHEM_inherit.TTF": [ + "b25a3eb616c222ee3c15d93529546376403d1311", + "support" + ], + "fonts/ahem-extra/AHEM_initial.TTF": [ + "92bca8bf84d561e13fc9fcf450db10f5cb17186d", + "support" + ], + "fonts/ahem-extra/AHEM_monospace.TTF": [ + "d75b974c28ab871158124be8fe4af948bec3269c", + "support" + ], + "fonts/ahem-extra/AHEM_sans-serif.TTF": [ + "4fb82e7aa67a73ab0548e59f003737f571b18ff8", + "support" + ], + "fonts/ahem-extra/AHEM_serif.TTF": [ + "6f3884860a84b9b6e7524c84626638e303a14660", + "support" + ], + "fonts/mplus-1p-regular.woff": [ + "708040c72a525e3ca122156c0212ca7ec14852bd", + "support" + ], + "fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ + "ec660b17dff69058c2bbf122ca85ab83b920fce7", + "support" + ], + "fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ + "dea38de8b3affb6060e50e4727682ab3eff7b0c6", + "support" + ], + "fonts/noto/NotoSansAdlam-hinted/README": [ + "837f8d36a2d38637c424b878c7b068930a07c377", + "support" + ], + "fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ + "ec660b17dff69058c2bbf122ca85ab83b920fce7", + "support" + ], + "fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ + "12a8cdf3af7376abf50426eae30d490c8f83f13e", + "support" + ], + "fonts/noto/NotoSansCypriot-hinted/README": [ + "837f8d36a2d38637c424b878c7b068930a07c377", + "support" + ], + "fonts/noto/NotoSansDeseret-Regular.ttf": [ + "b6a1a40fb1e10ce264b4bea355a05f7670386a10", + "support" + ], + "fonts/sileot-webfont.woff": [ + "b39ac96673d0f3a2b75935c6d18bce61e05ace22", + "support" + ], + "fonts/tcu-font.woff": [ + "82edfdbafded72202c8a7aa3610c42ea53884c96", + "support" + ], "fullscreen/OWNERS": [ "b97db394860afcd858ccfd1a4982ba6dfca2078c", "support" @@ -324270,22 +324234,6 @@ "1cb8a0e23d31dcdeb5ba273a40e35c021c0c53f2", "support" ], - "generic-sensor/SensorErrorEvent-constructor.https.html": [ - "99bcfb42c91e084a3b847ab4bab2bad80e548540", - "testharness" - ], - "generic-sensor/generic-sensor-feature-policy-test.sub.js": [ - "c7c9c4d1c578f267cbb4241d7ea7a981be6f49ee", - "support" - ], - "generic-sensor/generic-sensor-tests.js": [ - "0f1cea2c0d3f38220cbfdbe4f47d713214987cbd", - "support" - ], - "generic-sensor/idlharness.https.html": [ - "22f96f98d5349b430f9b6fe9fcb3213c73376fd7", - "testharness" - ], "geolocation-API/OWNERS": [ "4c338ed1db3ab41c3a0664ea20c95dc6896c377e", "support" @@ -324359,7 +324307,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html": [ - "f67a0c9e416e45326d7301c2a40c758029011738", + "5c9b0421e10e87ce540ae89304cb06189521db28", "testharness" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -324371,7 +324319,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "fb033fd0f0d891e9b6ed2b54b835f8f06364643e", + "2d21ee198d079dde55f02fda3eb7f8e8fb6dfac4", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https-expected.txt": [ @@ -324379,7 +324327,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html": [ - "06e4487981f8e6e062d9e9fea14d52e64b6b5035", + "2eac643f35086d5051333674f6a01a9ee524786d", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https-expected.txt": [ @@ -324387,7 +324335,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html": [ - "e8287121361749246b874207dcffb92e459dfbec", + "49e7799a36358602efabfb219a93422078456111", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -324399,7 +324347,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "4222f48c8c2a932c5b65b6426bb9a0ad476ddd0c", + "4ad92dcbcc737cbc14ba3bc2c19dc8f78e75d0a1", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -324411,11 +324359,11 @@ "support" ], "geolocation-sensor/GeolocationSensor.https.html": [ - "c9d32faca641ec784acf9096a079d73781330216", + "502b4dbd03312a2e1e0c18fb3983a077335efde6", "testharness" ], "geolocation-sensor/GeolocationSensor_insecure_context.html": [ - "58fd65d3a72e6734392381fe225e3fbd7007fc06", + "f2e8f58fd7e09cfaa311c83adc4456f9463a3456", "testharness" ], "geolocation-sensor/GeolocationSensor_onerror-manual.https-expected.txt": [ @@ -324423,7 +324371,7 @@ "support" ], "geolocation-sensor/GeolocationSensor_onerror-manual.https.html": [ - "2b7aac7d60271e12ce71f6293405ffafb471c8c8", + "8c5a4e48439ff0620d6267b127a5d49f85657896", "manual" ], "geolocation-sensor/idlharness.https-expected.txt": [ @@ -324431,7 +324379,7 @@ "support" ], "geolocation-sensor/idlharness.https.html": [ - "ea9edf12752af0a97cd9fe825ae927bd07090a56", + "8e22460ccb5e31bdcf9c9d3fc135abc55345e7ab", "testharness" ], "graphics-aam/graphics-document_on_html_element-manual-expected.txt": [ @@ -324483,7 +324431,7 @@ "manual" ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html": [ - "bc6f85cb3506d3e3e062eef43dca88bf3a4ebe89", + "b7fb169e2a3de0df84a44b9775677d1a005e2446", "testharness" ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html.headers": [ @@ -324491,15 +324439,15 @@ "support" ], "gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "cc1f4082fa420a9076f929d88268f5a1d921a44a", + "0887871a9f337da76cdbf8fc0ea7a6aafa6eec37", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html": [ - "75429c87bbebd19df7b4edaddc5869c6202b3fab", + "b5d7fe16df3356e7e8ea202088e63734291810f0", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy.https.html": [ - "5129c05f9b226650a9b7fed4841871045525bf15", + "92bd0aee5d2d54b50e907155fe3a6dd5b2634021", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy.https.html.headers": [ @@ -324507,7 +324455,7 @@ "support" ], "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html": [ - "2603bd858929ae6f84ebbe0cce34c5417ccdae06", + "b1af2b9e1787c1ace4619509d95e4085ac0f0fc7", "testharness" ], "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -324519,15 +324467,15 @@ "support" ], "gyroscope/Gyroscope.https.html": [ - "504abfa42529e08576e49c3296464bcea5fe0b8a", + "7d30725e44905d774a0b4554b55842cba78e1462", "testharness" ], "gyroscope/Gyroscope_insecure_context.html": [ - "74e51a1efc06bf8180db430b418d484fc50c07f9", + "79688da94e1ea93646c288bdbfdb17487e846560", "testharness" ], "gyroscope/Gyroscope_onerror-manual.https.html": [ - "1e15b883bd317ca83783864fc563794cb0f6df8e", + "c89ff6361146a5d3065c2d44088b313e5560ba8d", "manual" ], "gyroscope/OWNERS": [ @@ -324535,7 +324483,7 @@ "support" ], "gyroscope/idlharness.https.html": [ - "c7080ff63868e28bebd6fe982e13e88d756977ae", + "c6c627cc2e250664e174edf90aa9b402ea5c0500", "testharness" ], "hr-time/OWNERS": [ @@ -338134,6 +338082,26 @@ "fac66843e9577a88ef16b1421a846c6aaf759972", "testharness" ], + "html/semantics/forms/autofocus/first-when-later-but-before-expected.txt": [ + "d59ab5bb50fc3c09ea0f82339bee92b51d8ad7b3", + "support" + ], + "html/semantics/forms/autofocus/first-when-later-but-before.html": [ + "7ff85a6d8c4a799b6f3bb56ac85a7b8834d40f9f", + "testharness" + ], + "html/semantics/forms/autofocus/first-when-later.html": [ + "bf544ea6bcb56dbb1ddbb3cee33985298aa6f595", + "testharness" + ], + "html/semantics/forms/autofocus/first.html": [ + "b335e4dd4297d650740b1793792477eeb7b17456", + "testharness" + ], + "html/semantics/forms/autofocus/not-on-first-task.html": [ + "29403d1f358129fe21f4643a1662409848c98572", + "testharness" + ], "html/semantics/forms/categories/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -344326,10 +344294,6 @@ "89fa62f6e0d1fdb497ce6550804b57a5d4ee0d0f", "support" ], - "interfaces/generic-sensor.idl": [ - "3b2cb524838f2274463664621fddc7c927ac95af", - "support" - ], "interfaces/geolocation-sensor.idl": [ "7f5defe8969fd21ed1b8eeaedc9a766cb4b695c1", "support" @@ -344386,6 +344350,10 @@ "f9f483a150b0e918f653f6ce4e84eb9c044d921f", "support" ], + "interfaces/sensors.idl": [ + "3b2cb524838f2274463664621fddc7c927ac95af", + "support" + ], "interfaces/touchevents.idl": [ "6ce4f601cda6cd3b99a300e0b28d2886647f06d3", "support" @@ -344647,7 +344615,7 @@ "support" ], "magnetometer/Magnetometer-disabled-by-feature-policy.https.html": [ - "9af542095f2fcd57691c0432ef3248b04a0207a0", + "a050a0aff6039883d521735bff4b96e0628de20d", "testharness" ], "magnetometer/Magnetometer-disabled-by-feature-policy.https.html.headers": [ @@ -344659,7 +344627,7 @@ "support" ], "magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "47829ff5747eed99ba22e79b12ddfff288fd031e", + "0bdab54bc63a9b28b89c7be70409a9c6c7d943c5", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https-expected.txt": [ @@ -344667,7 +344635,7 @@ "support" ], "magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html": [ - "3b6314e9176a24976d9d882644c30f00554eed6d", + "22a4580c08716b0395d6a0e49679b29619e2ce35", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy.https-expected.txt": [ @@ -344675,7 +344643,7 @@ "support" ], "magnetometer/Magnetometer-enabled-by-feature-policy.https.html": [ - "05128cdb7171ba230143e7b68b09968a484b602a", + "8cc0dfc032b1f063e88ca43a0516b89ab05e057f", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy.https.html.headers": [ @@ -344687,7 +344655,7 @@ "support" ], "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html": [ - "3240dafd2bc810dea0dc1ebc31728c86a29f2ec5", + "ac9154aca0c01825a78aad12b9ed242ec8780937", "testharness" ], "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -344699,11 +344667,11 @@ "support" ], "magnetometer/Magnetometer.https.html": [ - "240e7d0af55b8681f2f45ca22283634acc406325", + "bb74316d74c488daf753ee8576761ec78db457df", "testharness" ], "magnetometer/Magnetometer_insecure_context.html": [ - "0eeb95340d7c74a0243eac8d3f004b6e06b87a92", + "aef2810b55ac8672dff86b85f5d93d152b81dfe4", "testharness" ], "magnetometer/Magnetometer_onerror-manual.https-expected.txt": [ @@ -344711,7 +344679,7 @@ "support" ], "magnetometer/Magnetometer_onerror-manual.https.html": [ - "da4e6b8975beecdcae24da26920a56a652f781e4", + "f073df598684ce24f429d968da343812d68cb142", "manual" ], "magnetometer/OWNERS": [ @@ -344723,7 +344691,7 @@ "support" ], "magnetometer/idlharness.https.html": [ - "c584cccdc933d705c81c4b13736c44044b402835", + "2a08a46bc2fa6e5b75c3c05c0396b48280075892", "testharness" ], "media-capabilities/OWNERS": [ @@ -353415,7 +353383,7 @@ "manual" ], "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html": [ - "0c7657e32b46c64e5f050f04e40ccfc0dce32e47", + "9db710ef183a7bc65e6649526defe869c5fb66e9", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -353423,15 +353391,15 @@ "support" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "71a6966fb91f8ddfe15ee690c843e4621a3b4720", + "05c28d8975c13aea8e248d2a1a5341fb146c82a5", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html": [ - "9bbe39e1be4a669f31f0fb3960aca22d7d159c5e", + "e3679a5c3a5f1783d3311556788af9e5a18b9287", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html": [ - "9f110b8ceca3dd3ce3d2a9e2567d92a3fc6462bf", + "923b5167c76b8f8405c94043dae6d4312383d00e", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -353439,7 +353407,7 @@ "support" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "c4404cf0b16c4d9ad15308392ecf52caee445b86", + "873f248fa5c359322f6d8b143758122450c2279c", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -353455,19 +353423,19 @@ "support" ], "orientation-sensor/OrientationSensor.https.html": [ - "ea9a61f9d526183071a0336e11ca844f59c284a9", + "6b53127c74c55a8cf5697bc5527f36b7276e2681", "testharness" ], "orientation-sensor/OrientationSensor_insecure_context.html": [ - "eb64da888f1bedf9d5ed8b11edc1626da88b322b", + "4161a365bd3a72226c29049cbe46c123b8b07a04", "testharness" ], "orientation-sensor/OrientationSensor_onerror-manual.https.html": [ - "6f0eb976affc21e49f48c42c1bd9d9eb0083ee40", + "7d28e6caf629f82b058a33b018de34940f34916f", "manual" ], "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html": [ - "8c6c5f8f3bc4421f5143a3e4fab287564cf4907d", + "a8178651dd87ac80268a7c9de06858a6c5ee2125", "testharness" ], "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -353475,15 +353443,15 @@ "support" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "34a79c9033a41c0aceab3fa6a470dd5a76f2ac81", + "895e2cb7837bd9cb4a8ba7b3c90f414b4d3677ea", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html": [ - "0e6260ccdaa8163b8db96516960be226a4d85ba7", + "745fc51713614d6082dec199e3491e001cf3396e", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html": [ - "243b2d60d4c528a77e9cfb68fa256b35234e7346", + "bccd08cf93fddcf3c8e2dc18fe394454580f2c88", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -353491,7 +353459,7 @@ "support" ], "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "c9f234f6508fb778fdf91277bb8950c99479979d", + "3ea7f029d22c4f05f99fc0cc5c4016670265cea7", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -353499,7 +353467,7 @@ "support" ], "orientation-sensor/idlharness.https.html": [ - "30f9a5f56c1eb360be09b2a7f2fd1d5148469e12", + "05a95e835ce72800601fcd18007eaec0c05dc79a", "testharness" ], "page-visibility/OWNERS": [ @@ -353890,8 +353858,12 @@ "cee3a8a8b9d25b5a44445a416b1bc9be2b341a04", "testharness" ], + "payment-request/payment-request-ctor-pmi-handling.https-expected.txt": [ + "7ce23837915999ca0934c22d51fd20fdd11a8eef", + "support" + ], "payment-request/payment-request-ctor-pmi-handling.https.html": [ - "1be7fcc83fe7d90e59135b5c16e42bbd27b7390f", + "f2372d7eea1cc49cd739ed4818c74cf9e5a39151", "testharness" ], "payment-request/payment-request-id-attribute.https.html": [ @@ -353987,7 +353959,7 @@ "manual" ], "payment-request/show-method-optional-promise-resolves-manual.https.html": [ - "cc65cc042e4eca1c6e70aa2fcc1f48b6ea0e1fa0", + "a07f98e117bce1f040c5e62ef3acbd2ef7475338", "manual" ], "payment-request/updateWith-method-pmi-handling-manual.https.html": [ @@ -354530,6 +354502,10 @@ "b69da90e272530d4f42bf6d9c5b3b772d1ffce48", "testharness" ], + "preload/link-header-on-subresource-expected.txt": [ + "201e6d7d19583b068cd5a49a1827596e72821b3f", + "support" + ], "preload/link-header-on-subresource.html": [ "ea2f018b648d77b13b8010b4ebe63cdc5f846603", "testharness" @@ -354574,6 +354550,10 @@ "9f85f429c75d8469ef4bad843a09a307a20c6f58", "testharness" ], + "preload/onload-event-expected.txt": [ + "492b635e46bfa67221a89f54a73f9f7d14652cc0", + "support" + ], "preload/onload-event.html": [ "a02dd91451d598684a91575e8b09bda81c90e43f", "testharness" @@ -354586,6 +354566,10 @@ "5dc342bc568e96a53d5d8c0259a4f3c32a9a6ae5", "testharness" ], + "preload/preload-with-type-expected.txt": [ + "3357374170a78785fac96aa31a108a24f6cbed36", + "support" + ], "preload/preload-with-type.html": [ "ede6cb60bc1fff4f5b7740f66f039c88adb23f6f", "testharness" @@ -354602,14 +354586,6 @@ "ac876cf9750337fcde99e547f5dc1223bb200772", "support" ], - "preload/resources/CanvasTest.ttf": [ - "10a7017b4caead6817aa08b25f14950e6402dd95", - "support" - ], - "preload/resources/CanvasTest.ttf.sub.headers": [ - "ac876cf9750337fcde99e547f5dc1223bb200772", - "support" - ], "preload/resources/dummy-preloads-subresource.css": [ "788dde4e1879591cdd0e8298741f30b0d12578cd", "support" @@ -354702,6 +354678,10 @@ "8476855931b0148754287ca5674000a1b6a9bca2", "testharness" ], + "preload/single-download-preload-expected.txt": [ + "6bfb3b3398ec4ca59a8231f97429245455037851", + "support" + ], "preload/single-download-preload.html": [ "2b7af8e911957d6b49246a17ceb284b97981241e", "testharness" @@ -363194,6 +363174,22 @@ "01ae6e757d428800555012783e290ebba575bcab", "testharness" ], + "sensors/SensorErrorEvent-constructor.https.html": [ + "99bcfb42c91e084a3b847ab4bab2bad80e548540", + "testharness" + ], + "sensors/generic-sensor-feature-policy-test.sub.js": [ + "c7c9c4d1c578f267cbb4241d7ea7a981be6f49ee", + "support" + ], + "sensors/generic-sensor-tests.js": [ + "0f1cea2c0d3f38220cbfdbe4f47d713214987cbd", + "support" + ], + "sensors/idlharness.https.html": [ + "02c734b907075c8abb7504fc7e2b93730ac80a0c", + "testharness" + ], "server-timing/OWNERS": [ "2d4c432bb4394da88cb55e11d1e7a0c5dd5203d8", "support" @@ -371863,7 +371859,7 @@ "support" ], "webrtc/RTCDTMFSender-insertDTMF.https-expected.txt": [ - "d99dc206d1a1d9659a0e2e1e993225ca9d8c2271", + "bf02910128fcc6b12071db553900d0a4b117787e", "support" ], "webrtc/RTCDTMFSender-insertDTMF.https.html": [ @@ -371875,7 +371871,7 @@ "testharness" ], "webrtc/RTCDTMFSender-ontonechange.https-expected.txt": [ - "7e88fbcd7cf741604271f1500d980a2ade7414c7", + "eee9ec7f5a022d109c10368a262c17b244401937", "support" ], "webrtc/RTCDTMFSender-ontonechange.https.html": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-disabled-by-feature-policy.https.html index 9476efb..9481f30 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html index aa8ea10..809fe0b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html index 860a027..3f53de0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy.https.html index 889047a0..dca391ba 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html index bf45852..cc05a38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html index 9563270..73c579c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/accelerometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html index ff1f083..81b33dd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/accelerometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Note:</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html index f69b1b6..ed5f190 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/accelerometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/idlharness.https.html index 78a95713..3c3c96e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/idlharness.https.html
@@ -32,7 +32,7 @@ promise_test(() => { return Promise.all([ "/interfaces/dom.idl", - "/interfaces/generic-sensor.idl", + "/interfaces/sensors.idl", "/interfaces/accelerometer.idl", ].map(fetchText)).then(doTest); }, "Test IDL implementation of Accelerometer Sensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001-ref.html index f5cc3bd65..0acbd33 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001-ref.html
@@ -7,7 +7,7 @@ font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001.html index 065be3a4..b6f9d18 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-001.html
@@ -13,14 +13,14 @@ font-family: 'A-no-space'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); unicode-range: U+0061; /* Not including U+0020, so it cannot be the first available font*/ } @font-face { font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002-ref.html index cbfcd31..ff9464b9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002-ref.html
@@ -7,7 +7,7 @@ font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002.html index cfd5809..36437b69 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-002.html
@@ -13,14 +13,14 @@ font-family: 'A-no-space'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); unicode-range: U+0061; /* Not including U+0020, so it cannot be the first available font*/ } @font-face { font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003-ref.html index afcbe3b..8b01bb7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003-ref.html
@@ -7,7 +7,7 @@ font-family: 'A'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); } div { position: absolute;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003.html index 948171d..74a850e2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-003.html
@@ -13,13 +13,13 @@ font-family: 'A'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); } @font-face { font-family: 'B-no-space'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); unicode-range: U+0062; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-004.html index d2fb1616..c7ae1cb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-004.html
@@ -14,13 +14,13 @@ font-family: 'A'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); } @font-face { font-family: 'B-no-space'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); unicode-range: U+0062; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-005.html index bf46a9f..8f6f66b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-005.html
@@ -13,21 +13,21 @@ font-family: 'A-no-space'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); unicode-range: U+0061; } @font-face { font-family: 'B-no-space'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); unicode-range: U+0061; } @font-face { font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-006.html index 6f54384..fb50b9b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-006.html
@@ -13,21 +13,21 @@ font-family: 'A-no-space'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); unicode-range: U+0061; } @font-face { font-family: 'B-no-space'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); unicode-range: U+0061; } @font-face { font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-007.html index a05b029a..fce9c99 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/first-available-font-007.html
@@ -13,14 +13,14 @@ font-family: 'A-no-space'; font-style: normal; font-weight: 400; - src: url(support/Revalia.woff) format('woff'); + src: url(/fonts/Revalia.woff) format('woff'); unicode-range: U+0061; } @font-face { font-family: 'B'; font-style: normal; font-weight: 400; - src: url(support/AD.woff) format('woff'); + src: url(/fonts/AD.woff) format('woff'); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/format-specifiers-variations.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/format-specifiers-variations.html index a5c36d21..8caf2f3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/format-specifiers-variations.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/format-specifiers-variations.html
@@ -25,7 +25,7 @@ "woff2-variations" ]; -var defaultAhemSrc = 'url("../../fonts/Ahem.ttf") format("INSERT_FORMAT")'; +var defaultAhemSrc = 'url("/fonts/Ahem.ttf") format("INSERT_FORMAT")'; function runTestOnFormatSpecifiers(formats, expectFail) { for (var i = 0; i < formats.length; ++i) {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position-ref.html deleted file mode 100644 index beebd7e..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position-ref.html +++ /dev/null
@@ -1,42 +0,0 @@ -<!DOCTYPE html> -<title>Reference for position:sticky elements should not affect the flow position of other elements</title> - -<style> -.scroller { - height: 200px; - width: 100px; - overflow-y: scroll; - margin-bottom: 15px; -} - -.sticky { - background-color: green; -} - -.box { - height: 50px; - width: 50px; -} - -.before { - background-color: fuchsia; -} - -.after { - background-color: orange; -} - -.padding { - height: 450px; -} -</style> - -<div class="scroller"> - <div class="before box"></div> - <div class="box"></div> - <div class="after box"></div> - <div class="sticky box"></div> - <div class="padding"></div> -</div> - -<div>You should see a fuchsia box, a one-box gap, an orange box, and then a green box above.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position.html index fc7e829..a6774b7a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-inflow-position.html
@@ -1,46 +1,58 @@ <!DOCTYPE html> <title>position:sticky elements should not affect the flow position of other elements</title> -<link rel="match" href="position-sticky-inflow-position-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="This test checks that position:sticky elements do not affect the flow position of other elements" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + <style> .scroller { + position: relative; height: 200px; width: 100px; - overflow-y: scroll; - margin-bottom: 15px; + overflow: scroll; } -.sticky { +#sticky { background-color: green; position: sticky; top: 150px; } -.box { - height: 50px; - width: 50px; -} - -.before { +#before { background-color: fuchsia; } -.after { +#after { background-color: orange; } +.box { + height: 50px; + width: 50px; +} + .padding { height: 500px; } </style> <div class="scroller"> - <div class="before box"></div> - <div class="sticky box"></div> - <div class="after box"></div> + <div id="before" class="box"></div> + <div id="sticky" class="box"></div> + <div id="after" class="box"></div> <div class="padding"></div> </div> -<div>You should see a fuchsia box, a one-box gap, an orange box, and then a green box above.</div> +<script> +test(() => { + // The sticky element is pushed to be stuck 150 pixels from the top. + assert_equals(sticky.offsetTop, 150); + + // Neither 'before' or 'after' should be affected by the change in the sticky + // element's location. + assert_equals(before.offsetTop, 0); + assert_equals(after.offsetTop, before.clientHeight + sticky.clientHeight); +}, 'sticky offset should not affect the position of other elements.'); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins-ref.html deleted file mode 100644 index 3049039..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins-ref.html +++ /dev/null
@@ -1,63 +0,0 @@ -<!DOCTYPE html> -<title>Reference for position:sticky elements should properly interact with margins</title> - -<style> -.group { - display: inline-block; - position: relative; - width: 180px; - height: 400px; -} - -.scroller { - width: 150px; - height: 300px; - overflow-y: scroll; - overflow-x: hidden; -} - -.indicator { - position: relative; - background-color: green; - margin: 15px; -} - -.box { - width: 100px; - height: 100px; -} - -.padding { - height: 385px; -} -</style> -<script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 0; - document.getElementById('scroller2').scrollTop = 60; - document.getElementById('scroller3').scrollTop = 120; -}); -</script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="indicator box" style="top: 0;"></div> - <div class="padding"></div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="indicator box" style="top: 50px;"></div> - <div class="padding"></div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="indicator box" style="top: 85px;"></div> - <div class="padding"></div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins.html index 5b38ab4c..b2d9944 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-margins.html
@@ -1,92 +1,49 @@ <!DOCTYPE html> <title>position:sticky elements should properly interact with margins</title> -<link rel="match" href="position-sticky-margins-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="position:sticky elements should ignore margins when sticking, but consider them when making sure sticky elements do not escape their containing block" /> -<style> -.group { - display: inline-block; - position: relative; - width: 180px; - height: 400px; -} +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> -.scroller { - position: relative; - width: 150px; - height: 300px; - overflow-y: scroll; - overflow-x: hidden; -} +<script src="resources/sticky-util.js"></script> -.holder { - width: 130px; - height: 200px; -} +<body></body> -.sticky { - position: sticky; - background-color: green; - top: 5px; - margin: 15px; -} - -.indicator { - left: 15px; - position: absolute; - background-color: red; -} - -.box { - width: 100px; - height: 100px; -} - -.padding { - height: 300px; -} -</style> <script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 0; - document.getElementById('scroller2').scrollTop = 60; - document.getElementById('scroller3').scrollTop = 120; -}); +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.margin = '15px'; + elements.scroller.scrollTop = 100; + assert_equals(elements.sticky.offsetTop, + elements.container.offsetTop + elements.filler.clientHeight + 15); +}, 'Before sticking, the margin should be obeyed.'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.margin = '15px'; + + elements.scroller.scrollTop = 200; + + // This math cancels to sticky.offsetTop == (scroller.scrollTop + 50), but + // for clarity the calculations are left explicit. + const nonStickyTopY = elements.container.offsetTop + + elements.filler.clientHeight; + const targetTopY = elements.scroller.scrollTop + 50; + const stickyOffset = targetTopY - nonStickyTopY; + + assert_equals(elements.sticky.offsetTop, nonStickyTopY + stickyOffset); +}, 'Whilst stuck, the margin is irrelevant.'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.margin = '15px'; + + elements.scroller.scrollTop = 300; + + const maxOffsetInContainer = elements.container.offsetTop + + elements.container.clientHeight - elements.sticky.clientHeight; + assert_equals(elements.sticky.offsetTop, maxOffsetInContainer - 15); +}, 'The margin is taken into account when making sure the sticky element ' + + 'does not escape its container'); </script> - -<!-- Before sticking, the margin should be obeyed. --> -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="indicator box" style="top: 15px;"></div> - <div class="holder"> - <div class="sticky box"></div> - </div> - <div class="padding"></div> - </div> -</div> - -<!-- Whilst stuck, the margin is irrelevant. --> -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="indicator box" style="top: 65px;"></div> - <div class="holder"> - <div class="sticky box"></div> - </div> - <div class="padding"></div> - </div> -</div> - -<!-- The margin does count when making sure the sticky element does not escape - its containing block. --> -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="indicator box" style="top: 100px;"></div> - <div class="holder"> - <div class="sticky box"></div> - </div> - <div class="padding"></div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding-ref.html deleted file mode 100644 index b0e1d46..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding-ref.html +++ /dev/null
@@ -1,69 +0,0 @@ -<!DOCTYPE html> -<title>Reference for position:sticky elements should respect padding on their ancestor overflow element</title> - -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} - -.scroller { - padding: 20px 0; - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} - -.contents { - height: 500px; -} - -.indicator { - background-color: green; - position: absolute; - left: 0; -} - -.box { - width: 100%; - height: 100px; -} -</style> - -<script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 175; - document.getElementById('scroller3').scrollTop = 220; -}); -</script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 170px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 195px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 220px;"></div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding.html index 0324861..fab6f2f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-overflow-padding.html
@@ -1,106 +1,54 @@ <!DOCTYPE html> <title>position:sticky elements should respect padding on their ancestor overflow element</title> -<link rel="match" href="position-sticky-overflow-padding-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="This test checks that position:sticky elements respect padding on their ancestor overflow element" /> -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> -.scroller { - /* The target sticky position should be offset by this padding. */ - padding: 20px 0; - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} +<script src="resources/sticky-util.js"></script> -.contents { - height: 500px; -} - -.prepadding { - height: 100px; -} - -.container { - height: 200px; -} - -.innerpadding { - height: 50px; -} - -.indicator { - background-color: red; - position: absolute; - left: 0; -} - -.sticky { - background-color: green; - position: sticky; - top: 0; -} - -.box { - width: 100%; - height: 100px; -} -</style> +<body></body> <script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 175; - document.getElementById('scroller3').scrollTop = 220; -}); +test(() => { + const elements = setupStickyTest('top', 50); + elements.scroller.style.padding = '20px 0'; + + // Before sticking; the element isn't within the padding range. + elements.scroller.scrollTop = 150; + const nonStickyTopY = elements.container.offsetTop + + elements.filler.clientHeight; + assert_equals(elements.sticky.offsetTop, nonStickyTopY); +}, 'A sticky element should not be affected by ancestor padding until it ' + + 'reaches it'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.top = '0'; + elements.scroller.style.padding = '20px 0'; + + elements.scroller.scrollTop = 200; + + // This math cancels to sticky.offsetTop == (scroller.scrollTop + 50), but + // for clarity the calculations are left explicit. + const nonStickyTopY = elements.container.offsetTop + + elements.filler.clientHeight; + const targetTopY = elements.scroller.scrollTop; + const stickyOffset = targetTopY - nonStickyTopY; + + assert_equals(elements.sticky.offsetTop, nonStickyTopY + stickyOffset + 20); +}, 'A sticky element should be offset by ancestor padding even when stuck'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.top = '0'; + elements.scroller.style.padding = '20px 0'; + + elements.scroller.scrollTop = 315; + const maxOffsetInContainer = elements.container.offsetTop + + elements.container.clientHeight - elements.sticky.clientHeight; + assert_equals(elements.sticky.offsetTop, maxOffsetInContainer); +}, 'Ancestor overflow padding does not allow a sticky element to escape its ' + + 'container'); </script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="indicator box" style="top: 170px;"></div> - <div class="contents"> - <div class="prepadding"></div> - <div class="container"> - <div class="innerpadding"></div> - <div class="sticky box"></div> - </div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="indicator box" style="top: 195px;"></div> - <div class="contents"> - <div class="prepadding"></div> - <div class="container"> - <div class="innerpadding"></div> - <div class="sticky box"></div> - </div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="indicator box" style="top: 220px;"></div> - <div class="contents"> - <div class="prepadding"></div> - <div class="container"> - <div class="innerpadding"></div> - <div class="sticky box"></div> - </div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller-ref.html deleted file mode 100644 index a6ded09..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller-ref.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!DOCTYPE html> -<title>Reference for position:sticky should operate correctly for the root scroller</title> - -<style> -body { - /* Assumption: 3000px is taller than any user agents test window size. */ - height: 3000px; -} - -.indicator { - background-color: green; - position: absolute; - top: 750px; -} - -.box { - width: 200px; - height: 200px; -} -</style> - -<script> -window.addEventListener('load', function() { - window.scrollTo(0, 700); -}); -</script> - -<div class="indicator box"></div> - -<div style="position: absolute; top: 1000px;">You should see a green box above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller.html index 35ab8dc0..596fd9b2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-root-scroller.html
@@ -1,39 +1,31 @@ <!DOCTYPE html> <title>position:sticky should operate correctly for the root scroller</title> -<link rel="match" href="position-sticky-root-scroller-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="This test checks that position:sticky elements work when using the root (document) scroller" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + <style> body { /* Assumption: 3000px is taller than any user agents test window size. */ height: 3000px; } -.indicator { - background-color: red; - position: absolute; -} - -.sticky { - background-color: green; +#sticky { position: sticky; top: 50px; -} - -.box { width: 200px; height: 200px; + background-color: green; } </style> +<div id="sticky"></div> + <script> -window.addEventListener('load', function() { +test(() => { window.scrollTo(0, 700); -}); + assert_equals(sticky.offsetTop, 700 + 50); +}, 'Sticky elements work with the root (document) scroller'); </script> - -<div class="indicator box" style="top: 750px;"></div> -<div class="sticky box"></div> - -<div style="position: absolute; top: 1000px;">You should see a green box above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-ref.html deleted file mode 100644 index f865a9be..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-ref.html +++ /dev/null
@@ -1,81 +0,0 @@ -<!DOCTYPE html> -<title>Reference for transforms on position:sticky elements should apply after sticking</title> - -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} - -.scroller { - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} - -.contents { - height: 500px; -} - -.indicator { - background-color: green; - position: relative; -} - -.box { - width: 100%; - height: 50px; -} - -.rotated { - transform: rotateX(60deg); - height: 100px; - width: 100%; -} - -.perspective { - transform: perspective(3px) translateZ(1px); - height: 50px; - width: 50px; -} -</style> - -<script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 50; - document.getElementById('scroller3').scrollTop = 50; -}); -</script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="contents"> - <div class="indicator box" style="height: 100px; top: 75px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="contents"> - <div class="rotated indicator" style="top: 100px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <!-- Required for blending. --> - <div class="perspective" style="position: absolute; background: red; top: 100px;"></div> - <div class="contents"> - <div class="perspective indicator" style="top: 100px;"></div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate-ref.html deleted file mode 100644 index b3577953..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate-ref.html +++ /dev/null
@@ -1,67 +0,0 @@ -<!DOCTYPE html> -<title>Reference for translations on position:sticky elements should apply after sticking</title> - -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} - -.scroller { - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} - -.contents { - height: 500px; -} - -.indicator { - background-color: green; - position: relative; -} - -.box { - width: 100%; - height: 50px; -} -</style> - -<script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 70; - document.getElementById('scroller3').scrollTop = 50; -}); -</script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 50px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 50px;"></div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="contents"> - <div class="indicator box" style="top: 200px;"></div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate.html index 076db9e..791b035 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms-translate.html
@@ -1,92 +1,45 @@ <!DOCTYPE html> <title>translations on position:sticky elements should apply after sticking</title> -<link rel="match" href="position-sticky-transforms-translate-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="This test checks that translations on position:sticky elements are carried out on their stuck position" /> -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> -.scroller { - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} +<script src="resources/sticky-util.js"></script> -.contents { - height: 500px; -} - -.container { - height: 150px; -} - -.indicator { - background-color: red; - position: absolute; - left: 0; -} - -.sticky { - background-color: green; - position: sticky; - top: 50px; -} - -.box { - width: 100%; - height: 50px; -} -</style> +<body style="margin: 0;"></body> <script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 70; - document.getElementById('scroller3').scrollTop = 50; -}); +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.transform = 'translateY(-100%)'; + elements.scroller.scrollTop = 100; + // Transforms don't affect offsetTop, so use getBoundingClientRect. + assert_equals(elements.sticky.getBoundingClientRect().y, + elements.scroller.getBoundingClientRect().y); +}, 'Translation transform can move sticky element past sticking point'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.transform = 'translateY(50%)'; + elements.scroller.scrollTop = 200; + // Transforms don't affect offsetTop, so use getBoundingClientRect. + const stickyElementOffset = elements.sticky.getBoundingClientRect().y - + elements.scroller.getBoundingClientRect().y; + assert_equals(stickyElementOffset, 100); +}, 'Stuck elements can still be moved via translations'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.container.style.transform = 'translateY(100px)'; + elements.scroller.scrollTop = 200; + // Transforms don't affect offsetTop, so use getBoundingClientRect. + // Here the sticky element will originally have stuck at 50px from the top, + // but is then 'pulled' downwards by the 100px container transform. + const stickyElementOffset = elements.sticky.getBoundingClientRect().y - + elements.scroller.getBoundingClientRect().y; + assert_equals(stickyElementOffset, 150); +}, 'The sticky element should stick before the container is offset by a ' + + 'translation'); </script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="indicator box" style="top: 50px;"></div> - <div class="contents"> - <div class="container"> - <div class="sticky box" style="transform: translateY(-100%);"></div> - </div> - </div> - </div> -</div> - -<!-- The pre-transform sticky is not allowed to escape its containing block. --> -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="indicator box" style="top: 50px;"></div> - <div class="contents"> - <div class="container"> - <div class="sticky box" style="transform: translateY(-100%);"></div> - </div> - </div> - </div> -</div> - -<!-- The sticky element should stick before the container is transformed. --> -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="indicator box" style="top: 200px;"></div> - <div class="contents"> - <div class="container" style="transform: translateY(100px);"> - <div class="sticky box"></div> - </div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms.html index f9e63865..9f18d58 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-position/position-sticky-transforms.html
@@ -1,101 +1,49 @@ <!DOCTYPE html> <title>transforms on position:sticky elements should apply after sticking</title> -<link rel="match" href="position-sticky-transforms-ref.html" /> <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> <meta name="assert" content="This test checks that transforms on position:sticky elements are carried out on their stuck position" /> -<style> -.group { - display: inline-block; - position: relative; - width: 150px; - height: 250px; -} +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> -.scroller { - position: relative; - width: 100px; - height: 200px; - overflow-x: hidden; - overflow-y: auto; -} +<script src="resources/sticky-util.js"></script> -.contents { - height: 500px; -} - -.container { - height: 150px; -} - -.indicator { - background-color: red; - position: absolute; -} - -.sticky { - background-color: green; - position: sticky; - top: 50px; -} - -.box { - width: 100%; - height: 50px; -} - -.rotated { - transform: rotateX(60deg); - width: 100%; - height: 100px; -} - -.perspective { - transform: perspective(3px) translateZ(1px); - height: 50px; - width: 50px; -} -</style> +<body style="margin: 0;"></body> <script> -window.addEventListener('load', function() { - document.getElementById('scroller1').scrollTop = 50; - document.getElementById('scroller2').scrollTop = 50; - document.getElementById('scroller3').scrollTop = 50; -}); +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.transform = 'scale(2)'; + elements.scroller.scrollTop = 200; + + // Transforms don't affect offsetTop, so use getBoundingClientRect. + // Scaling the sticky element by 2 means its top-y moves (1/2 * height) + // upwards, in this case placing it at the top of the viewport. + const boundingRect = elements.sticky.getBoundingClientRect(); + assert_equals(boundingRect.y, elements.scroller.getBoundingClientRect().y); +}, 'Scale transforms are carried out on the stuck element position'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.transform = 'rotateX(60deg)'; + elements.scroller.scrollTop = 200; + + // Transforms don't affect offsetTop, so use getBoundingClientRect. + // Rotating around the x-axis essentially 'squashes' it (from the camera's + // viewpoint), in this case shifting the offset to 75 rather than 50. + const stickyElementOffset = elements.sticky.getBoundingClientRect().y - + elements.scroller.getBoundingClientRect().y; + assert_equals(stickyElementOffset, 75); +}, 'Rotate transforms are carried out on the stuck element position'); + +test(() => { + const elements = setupStickyTest('top', 50); + elements.sticky.style.transform = 'perspective(3px) translateZ(1px)'; + elements.scroller.scrollTop = 200; + + // Transforms don't affect offsetTop, so use getBoundingClientRect. + const stickyElementOffset = elements.sticky.getBoundingClientRect().y - + elements.scroller.getBoundingClientRect().y; + assert_equals(stickyElementOffset, 25); +}, 'Perspective transforms are carried out on the stuck element position'); </script> - -<div class="group"> - <div id="scroller1" class="scroller"> - <div class="indicator box" style="height: 100px; top: 75px;"></div> - <div class="contents"> - <div class="container"> - <div class="sticky box" style="transform: scale(2);"></div> - </div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller2" class="scroller"> - <div class="rotated indicator" style="top: 100px;"></div> - <div class="contents"> - <div class="container" style="height: 250px;"> - <div class="rotated sticky"></div> - </div> - </div> - </div> -</div> - -<div class="group"> - <div id="scroller3" class="scroller"> - <div class="perspective indicator" style="top: 100px;"></div> - <div class="contents"> - <div class="container"> - <div class="perspective sticky"></div> - </div> - </div> - </div> -</div> - -<div>You should see three green boxes above. No red should be visible.</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-010-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-010-ref.xht index 6f88d9b..6bcba28 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-010-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-010-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("../support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-011-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-011-ref.xht index d1485142..23c3813b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-011-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-011-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("../support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-012-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-012-ref.xht index dfccd65..13eb7d5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-012-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-012-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("../support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-013-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-013-ref.xht index 36be520..8fb8eaa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-013-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/reference/text-decoration-line-013-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("../support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-010.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-010.xht index 456a282..f4b16e3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-010.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-010.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-011.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-011.xht index d62259ac..78f6e54 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-011.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-011.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-012.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-012.xht index 2e185144..9a569eb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-012.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-012.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-013.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-013.xht index 4ad9781..db379e38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-013.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-013.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-014.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-014.xht index 6db1518..7d5f057 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-014.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text-decor/text-decoration-line-014.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/adlam.css b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/adlam.css index 56020ca..89e0db1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/adlam.css +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/adlam.css
@@ -2,7 +2,7 @@ font-family: "Noto Sans Adlam"; font-weight: normal; font-style: normal; - src: url("../../../fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf") format("truetype"); + src: url("/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf") format("truetype"); } p { font-family: "Noto Sans Adlam";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/cypriot.css b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/cypriot.css index 23fcb7d..d739821b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/cypriot.css +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/astral-bidi/support/cypriot.css
@@ -2,7 +2,7 @@ font-family: "Noto Sans Cypriot"; font-weight: normal; font-style: normal; - src: url("../../../fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf") format("truetype"); + src: url("/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf") format("truetype"); } p { font-family: "Noto Sans Cypriot";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-001.html index 2ff57d0..e66d87d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-001.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-002.html index e1c9564..3e5cdc6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-002.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-003.html index 6f450133..549d248 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-003.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-004.html index ae42e77..078fc1d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-004.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-005.html index 1299f55d..395f9059 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-005.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-006.html index c586881..21c594e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-006.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-007.html index b9a49ec..d2baa06 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-007.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-008.html index 22a770b..bffdf99 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-008.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-009.html index 8e7f846..290ee316 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-009.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-010.html index 7a450c80..570b6dbf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-010.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-011.html index 0fc403d..370da94 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-011.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-012.html index 30c37184..510d268 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-012.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-013.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-013.html index 33e5745..b076b3cb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-013.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-013.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-014.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-014.html index f653cc43..2349d5a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-014.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-014.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-015.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-015.html index 978740e..e5b7733 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-015.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-015.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-016.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-016.html index 6030aee..29c19141 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-016.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-016.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-017.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-017.html index b08abf36..7a97acb7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-017.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-017.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-018.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-018.html index c7e5289..55019a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-018.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-018.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-019.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-019.html index 17af8a4..275adf9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-019.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-019.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-020.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-020.html index 971004b..7109f5e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-020.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-020.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-021.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-021.html index e6a65f5..72a2437 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-021.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-021.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-022.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-022.html index 34c6735..7f953155 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-022.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-022.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-023.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-023.html index 4abb966..9064330 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-023.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-023.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-024.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-024.html index d75706f..99b847b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-024.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-024.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-025.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-025.html index 4b4580f..5c17b1f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-025.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-025.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-026.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-026.html index e21662d..6b5dd2e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-026.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-026.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-027.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-027.html index a1ab41b3..f9514c2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-027.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-027.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-028.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-028.html index 307fcf66..0d74635f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-028.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-028.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-029.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-029.html index 67e0d10..5002f80 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-029.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-029.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-030.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-030.html index e3a5673..a875f7a0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-030.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-030.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-031.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-031.html index f41fcf6..89595dec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-031.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-031.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-032.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-032.html index 99ed94f..e1bea31e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-032.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-032.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-033.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-033.html index 66ee3f50..40e1dee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-033.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-033.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-034.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-034.html index 3f678e4..a26d75e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-034.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-034.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-035.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-035.html index 54a3f32..7ba2d5640 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-035.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-035.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-036.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-036.html index 30cd7a3..29676f5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-036.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-036.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-037.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-037.html index 5ca0713..4642fd4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-037.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-037.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-038.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-038.html index 6c11c6f4..e3614dd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-038.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-038.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-039.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-039.html index 74d99d9..51a7f12 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-039.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-039.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-040.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-040.html index 5dabf4a..58831ae8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-040.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-040.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-041.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-041.html index 5d1cffc..c8be9983 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-041.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-041.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-042.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-042.html index e6acd38..ace32448 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-042.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-042.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-043.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-043.html index b903061..1f1b99a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-043.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-043.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-044.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-044.html index 816f87e..0c3fe2ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-044.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-044.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-045.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-045.html index 1bf54214..89fb717 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-045.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-045.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-046.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-046.html index 5e8f5503..c8da6f67 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-046.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-046.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-047.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-047.html index b717edc..bf5e4f3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-047.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-047.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-048.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-048.html index 16df07da..af7b5ff34 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-048.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-048.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-049.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-049.html index 5d1774e..472e687 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-049.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-049.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-050.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-050.html index 40cebd4..2821101 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-050.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-050.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-051.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-051.html index 5a9903f0..c95f3429 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-051.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-051.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-052.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-052.html index 44e5a5ae..9453a142 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-052.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-052.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-054.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-054.html index 95f1f7c..a6584c86 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-054.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-054.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-055.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-055.html index 7d6c878b..61d856a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-055.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-055.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-056.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-056.html index 7bebdaa..12064b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-056.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-056.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-057.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-057.html index 62f4d59..86d91c0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-057.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-057.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-058.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-058.html index a4754f8..5ddf00f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-058.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-058.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-059.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-059.html index e92e226f..ebc35350 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-059.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-059.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-060.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-060.html index 804f367..e485f21 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-060.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-060.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-101.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-101.html index 5002963..9be9b49 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-101.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-101.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-102.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-102.html index 590a2b55..bd4660c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-102.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-102.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-103.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-103.html index a5437829..ca792010 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-103.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-103.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-104.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-104.html index 4fb6c716..1445b6fd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-104.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-104.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-105.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-105.html index 2c9556d..7aaa5d4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-105.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-105.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-106.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-106.html index 45548ad0..423ccfb3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-106.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-106.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-107.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-107.html index 2495797..c41577a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-107.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-107.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-108.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-108.html index 4b1a799..b3cddf3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-108.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-108.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-109.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-109.html index f59a2a4..240cab5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-109.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-109.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-110.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-110.html index ed5ec11..5da07263 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-110.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-110.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-111.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-111.html index f0a04ee..0a35d8d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-111.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-111.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-112.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-112.html index 225dafb..84aabe41 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-112.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-112.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-113.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-113.html index 3f3671c..dd2dc22 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-113.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-113.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-114.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-114.html index b3acdeb..338f67b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-114.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-114.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-115.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-115.html index affc6c66..b99c05f4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-115.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-115.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-116.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-116.html index 5278f06..f2f66f4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-116.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-116.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-117.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-117.html index a646811e..efea7d45 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-117.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-117.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-118.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-118.html index f76038f2..31548df 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-118.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-118.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-119.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-119.html index a5929006..1e136f2a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-119.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-119.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-120.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-120.html index f407e0a1..dd0e695 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-120.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-120.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-121.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-121.html index 299b7650..b0394f1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-121.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-121.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-122.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-122.html index fb52dfd2..82d884b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-122.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-122.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-123.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-123.html index 75066f59..45fbf741 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-123.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-123.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-124.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-124.html index 8bca80e..cdc2732 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-124.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-124.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-125.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-125.html index e9f4a2d..e8db7210 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-125.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-125.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-126.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-126.html index 8da7e8e9..7d5a619 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-126.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-126.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-127.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-127.html index 7995630..efcf54c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-127.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-127.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-128.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-128.html index 9133b912..76ada49 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-128.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-128.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-129.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-129.html index 89a17f4..ec44b417 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-129.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-129.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-130.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-130.html index 7d39f42..e00ecd7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-130.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-130.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-131.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-131.html index 78293ee..eaf52c3a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-131.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-131.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-132.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-132.html index 75c174d..7446e382 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-132.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-132.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-133.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-133.html index 1c015df..beea9ae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-133.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-133.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-134.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-134.html index d6ecc3a7..23324ed 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-134.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-134.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-135.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-135.html index 5e51538d..fb3d471 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-135.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-135.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-138.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-138.html index 341ed1ef..60afbed 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-138.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-138.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-139.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-139.html index 4708ef3..816647c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-139.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-139.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-140.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-140.html index 15225d9..a713d72 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-140.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-140.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-141.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-141.html index fb5190d0a..32ab033 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-141.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-141.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-144.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-144.html index 80b44c6a6..88adc54c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-144.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-144.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-145.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-145.html index d9d97089..8c1eb401 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-145.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-145.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-146.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-146.html index 3d860a5..a420d73 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-146.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-146.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-147.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-147.html index b97902ff..b425202b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-147.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-147.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-148.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-148.html index afdf3d5..e38ee2d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-148.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-148.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-149.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-149.html index db9ae18..5b6f3743 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-149.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-149.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-152.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-152.html index cf927e9..25391bc5c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-152.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-152.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-154.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-154.html index 71144f4..74e86af 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-154.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-154.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-155.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-155.html index 744751e7..cc1d9f8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-155.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-155.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-156.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-156.html index fb30a3f5..fb82b5b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-156.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-156.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-157.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-157.html index 7a5698df..939d99a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-157.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-157.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-158.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-158.html index 48791ecd..ff622c0c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-158.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-158.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-159.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-159.html index aa014e2..e136dd3c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-159.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-159.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-160.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-160.html index e72ada8..5b3980d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-160.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-160.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-201.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-201.html index aed374d..a95a909 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-201.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-201.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-202.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-202.html index c3a0bfa..514a056 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-202.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-202.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-203.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-203.html index 1d3c773..0c977e8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-203.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-203.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-204.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-204.html index 4d1ca84..553cb1c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-204.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-204.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-205.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-205.html index 6c60e365..8be2b12 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-205.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-205.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-206.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-206.html index 9b680c1..256f7a8f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-206.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-206.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-207.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-207.html index 6942b00e2..9587653 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-207.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-207.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-208.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-208.html index 6b6adda..be138b1d9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-208.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-208.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-209.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-209.html index 3a413c4..45344cd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-209.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-209.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-210.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-210.html index 3ccc65a..b198bbc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-210.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-210.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-211.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-211.html index ce9bbb8..abb878e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-211.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-211.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-212.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-212.html index ac23111f..c3e782c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-212.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-212.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-213.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-213.html index 4181dc9..b7041a0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-213.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-213.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-214.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-214.html index 12493b85..8f02c6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-214.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-214.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-215.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-215.html index 0485645..d9bad947 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-215.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-215.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-216.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-216.html index 9ae9bd9b..5d33b53 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-216.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-216.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-217.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-217.html index 9702c39d..686167b7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-217.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-217.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-218.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-218.html index 82ec81a..b383e18 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-218.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-218.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-219.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-219.html index dada86be..adb1bce7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-219.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-219.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-220.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-220.html index ac9f2a5..44d0970 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-220.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-220.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-221.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-221.html index 2f9ed2e..e38a1f9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-221.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-221.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-222.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-222.html index 25c398a..c052cd7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-222.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-222.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-223.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-223.html index 85996cf..b80cfff 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-223.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-223.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-224.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-224.html index e62a07936..b543c7a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-224.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-224.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-225.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-225.html index f9b1e42..548b29a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-225.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-225.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-226.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-226.html index ff21f1b..6e22171 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-226.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-226.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-227.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-227.html index 0d2e13f..eb4add9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-227.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-227.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-228.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-228.html index 57acef96..8c617d1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-228.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-228.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-229.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-229.html index f87a47c..8f7d4b4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-229.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-229.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-230.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-230.html index 56d1948..69e4eba0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-230.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-230.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-231.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-231.html index 1e2af51..1edadfe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-231.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-231.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-232.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-232.html index a565366..6085a92 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-232.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-232.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-233.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-233.html index 5db695a..573aa29 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-233.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-233.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-234.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-234.html index 89a9e6f..d4b10bf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-234.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-234.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-235.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-235.html index cc6364e2..5116116 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-235.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-235.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-236.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-236.html index 6b09d4b..8f07514d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-236.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-236.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-237.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-237.html index 86ad0fbdb..05bee484 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-237.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-237.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-238.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-238.html index cd80d6b..0929f0d1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-238.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-238.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-239.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-239.html index 21bd97e..3d8447b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-239.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-239.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-240.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-240.html index 1ecff54a..605515d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-240.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-240.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-241.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-241.html index a16bd1d4..ae99e8db 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-241.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-241.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-242.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-242.html index 175bac90..f43243b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-242.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-242.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-243.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-243.html index 2487e6a..a2f3c42 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-243.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-243.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-244.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-244.html index 03708679..1431628 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-244.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-244.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-245.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-245.html index b14ecf69..462e805 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-245.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-245.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-246.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-246.html index 4e28cddf..9c277f8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-246.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-246.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-247.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-247.html index 2545e482..c3cb257 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-247.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-247.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-248.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-248.html index 27991d6..8e58a6a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-248.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-248.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-249.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-249.html index db017b4..f2f4d930 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-249.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-249.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-250.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-250.html index ab56bd7..f7f79595 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-250.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-250.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-251.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-251.html index 96634d6..9a2e401 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-251.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-251.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-252.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-252.html index 68c0048..a1903d7d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-252.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-252.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-254.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-254.html index 0ef6d7d8..67961f13 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-254.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-254.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-255.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-255.html index 8b75133..a8a2181 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-255.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-255.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-256.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-256.html index d0d429e..38a09960 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-256.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-256.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-257.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-257.html index 504bd5db..a6bccf56 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-257.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-257.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-258.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-258.html index e2adbac..228dcb2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-258.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-258.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-259.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-259.html index 4adb0bd..8080bac4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-259.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-259.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-260.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-260.html index 34a4dc7..8fc5bf9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-260.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-260.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-301.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-301.html index 44be8e8..fc4588a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-301.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-301.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-302.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-302.html index 0178867..a2bf96e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-302.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-302.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-303.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-303.html index 874447a..0023b1c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-303.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-303.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-304.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-304.html index 8e6ec19..f616605f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-304.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-304.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-305.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-305.html index 7feca2a..29327d5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-305.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-305.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-306.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-306.html index 8da6fe9..54505e8e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-306.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-306.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-307.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-307.html index 41618ca..678bceea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-307.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-307.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-308.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-308.html index f8bd523e..3e1c5b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-308.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-308.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-309.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-309.html index dc36b81e..78f2425 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-309.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-309.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-310.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-310.html index 61b056d..b043a4b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-310.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-310.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-311.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-311.html index 6b29659..448020e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-311.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-311.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-312.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-312.html index 160fab7e..45cb49d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-312.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-312.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-313.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-313.html index b4f5cf9b..d8617d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-313.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-313.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-314.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-314.html index ce034c6..dd25133 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-314.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-314.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-315.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-315.html index 200450a..579c2ae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-315.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-315.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-316.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-316.html index b5fb3517..dd7489b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-316.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-316.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-317.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-317.html index e98d755..34407c6b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-317.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-317.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-318.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-318.html index 85b65c4b..ca2006b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-318.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-318.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-319.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-319.html index c7897732..52b037f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-319.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-319.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-320.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-320.html index 900ec46..9365a82a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-320.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-320.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-321.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-321.html index c48c3821..619119f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-321.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-321.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-322.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-322.html index f0f820b..f121866 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-322.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-322.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-323.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-323.html index 42d0e9f3..10ea9d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-323.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-323.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-324.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-324.html index 393a41d9..745eae23 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-324.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-324.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-325.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-325.html index e6dcd5f..8964578 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-325.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-325.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-326.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-326.html index 67b195ad..3662910 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-326.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-326.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-327.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-327.html index 42f5795..dcfeec2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-327.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-327.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-351.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-351.html index 9556cd83..0288a64 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-351.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-351.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-352.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-352.html index 5f275251..59d57d9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-352.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-352.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-353.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-353.html index ebd19c7..e54d1ea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-353.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-353.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-354.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-354.html index dbfea294..90573a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-354.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-354.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-355.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-355.html index 3fc16d2cd..003bbd6a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-355.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-355.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-358.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-358.html index eb223b2..505a6ce9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-358.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-358.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-359.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-359.html index 510f8c5..797f742 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-359.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-359.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-362.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-362.html index 0bff4c4..d9eb2fb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-362.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-362.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-363.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-363.html index 560eba29..f72075ef 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-363.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-363.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-364.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-364.html index 5e29a9d2..41ff40e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-364.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-364.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-365.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-365.html index bfa27b9..3c58f921 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-365.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-365.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-366.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-366.html index 64c9199..bb6e1e8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-366.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-366.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-367.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-367.html index 1831d3e..43a5bab 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-367.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-367.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-370.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-370.html index ed40fd2..cc64573 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-370.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-370.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-372.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-372.html index abd3e1a..2239909 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-372.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-372.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-373.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-373.html index 7ff0ff8..f48ea99 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-373.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-373.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-374.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-374.html index 9fd044a..adb1fc9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-374.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-374.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-375.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-375.html index 9a7a5967..67ab6ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-375.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-375.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-376.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-376.html index 19b11be..d4894d3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-376.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-376.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-377.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-377.html index 87a6869..7617879 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-377.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-377.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-401.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-401.html index fdc018f7d..e23b7427 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-401.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-401.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-402.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-402.html index 0e84be4..00e446e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-402.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-402.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-403.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-403.html index 8646bb3..a4db632 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-403.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-403.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-404.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-404.html index 1350b82..36f967a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-404.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-404.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-405.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-405.html index d471395c..8bee630 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-405.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-405.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-406.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-406.html index b3320ad..bc64155 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-406.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-406.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-407.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-407.html index 90518be2..7c384ed9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-407.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-407.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-408.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-408.html index e511bb8..de17327 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-408.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-408.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-409.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-409.html index 46625fc..ecaea8a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-409.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-409.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-410.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-410.html index bfe0aa83..924040d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-410.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-410.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-411.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-411.html index 79415ca8..0fb1df0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-411.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-411.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-412.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-412.html index dbcd94ac6..557a6136 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-412.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-412.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-413.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-413.html index 9ba90176..3664122 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-413.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-413.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-414.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-414.html index 99f8d67..b63c1e9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-414.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-414.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-415.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-415.html index 9bf83dc..a70d799a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-415.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-415.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-416.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-416.html index 86b927e7..a100744 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-416.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-416.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-417.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-417.html index 77927b1..83232140 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-417.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-417.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-418.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-418.html index e833b391..9c64b7b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-418.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-418.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-419.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-419.html index bbb7d74..7d7019b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-419.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-419.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-420.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-420.html index 56761e7..79eb64b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-420.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-420.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-421.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-421.html index 6d07781..239efc3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-421.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-421.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-422.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-422.html index 64311cb..89c59de 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-422.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-422.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-423.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-423.html index fc5d7d5..40f50ca3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-423.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-423.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-424.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-424.html index 0decaac..52c7e0f8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-424.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-424.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-425.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-425.html index 2e880902..94f3343 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-425.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-425.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-426.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-426.html index 2ed0fd1..bc0074ee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-426.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-426.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-427.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-427.html index c6512ab7..2ef11296 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-427.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-jazh-427.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-001.html index 30165780..65d7327 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-001.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-002.html index a5c9068..ca03be54 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-002.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-003.html index d0d9bef..ec0b661 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-003.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-004.html index 96b3539..686f380 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-004.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: CSSFW; - src: url('../../fonts/adobe-fonts/CSSFWOrientationTest.otf'); + src: url('/fonts/adobe-fonts/CSSFWOrientationTest.otf'); } .test, .ref { font-size: 30px; font-family: CSSFW, sans-serif; width: 3em; padding: 0; border: 1px solid orange; line-height: 1em; } </style>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-005.html index 24f5247..78b50f18b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-005.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-006.html index 218fc9f4..36cfeba 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-006.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-007.html index 025c88d0..aa520e1d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-007.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-008.html index 3c7e7f73..ebc4b90 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-008.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-009.html index 9b27f36..d0bcd7f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-009.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-010.html index 0df9065..89c8f3f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-010.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-011.html index 3e1f592..9a338ae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-011.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-012.html index 57c85b2..9d6ea3d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-012.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-013.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-013.html index 54c0c0a..4d3c9ca4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-013.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-013.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-014.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-014.html index c06f89f..5a25666 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-014.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-014.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-015.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-015.html index 216862a..1408381d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-015.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-015.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-016.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-016.html index bcf80f1..ff9f5a79 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-016.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-016.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-017.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-017.html index cfef2c0..f1aceca3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-017.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-017.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-018.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-018.html index b6130a7..be8cd0c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-018.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-018.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-019.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-019.html index e7eed71..15ef881c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-019.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-019.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-020.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-020.html index 3553846..0d972121 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-020.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-020.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-021.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-021.html index 0a17d8372..8ad6f601 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-021.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-021.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-022.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-022.html index e30c8b7..8d0c58f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-022.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-022.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-023.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-023.html index ad5a401..14e03e79 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-023.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-023.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-024.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-024.html index 0919657b..d54eccfd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-024.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-024.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-025.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-025.html index c1ac3a43..fca5eab 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-025.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-025.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-026.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-026.html index 060fb9f..a7f87a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-026.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-026.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-027.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-027.html index d4f8848..2f00731 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-027.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-027.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-028.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-028.html index 0901d9e9..62a4f29c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-028.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-028.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-029.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-029.html index e1224b65..003beb5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-029.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-029.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-030.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-030.html index d0159ef..74a3f3d0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-030.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-030.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-031.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-031.html index 12a8e3d2..c1744316 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-031.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-031.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-032.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-032.html index 2ab11f65..20094b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-032.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-032.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-033.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-033.html index c589fea..ae72cbcc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-033.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-033.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-034.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-034.html index 05eafecd..37bc76b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-034.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-034.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-035.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-035.html index 5c8a2d89..dcaa880 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-035.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-035.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-036.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-036.html index 9540773e..ac62455f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-036.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-036.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-037.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-037.html index c95111e0..e684869c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-037.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-037.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-038.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-038.html index 76dc4f5..0238636 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-038.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-038.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-039.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-039.html index db3b0aed..1cc30a0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-039.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-039.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-040.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-040.html index df7b72c8..2478f1b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-040.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-040.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-041.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-041.html index 6749e1e2..a56e4de 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-041.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-041.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-042.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-042.html index 33c11a9..37b9d38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-042.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-042.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-043.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-043.html index 71cadfd..70aaa89 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-043.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-043.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-044.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-044.html index 5a84913..4801e30 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-044.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-044.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-045.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-045.html index e0f677e..ab03da2b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-045.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-045.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-046.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-046.html index 8abc726..65cd602 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-046.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-046.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-047.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-047.html index 6e704b28..bf39278 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-047.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-047.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-048.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-048.html index ad2a1444..a2fd90ba 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-048.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-048.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-049.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-049.html index 1f92efd..8c9a86c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-049.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-049.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-050.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-050.html index d16cbb05..6b3d4973 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-050.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-050.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-051.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-051.html index 1d51978d..c028e0b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-051.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-051.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-052.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-052.html index 2db8f5e4..73ad096 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-052.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-052.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-053.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-053.html index 1bfe6ba1..be5dd30d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-053.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-053.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-054.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-054.html index a038b8d..2c22489c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-054.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-054.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-055.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-055.html index 307ad5e..2546535 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-055.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-055.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-056.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-056.html index 8c3f85a..102cf4d2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-056.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-056.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-057.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-057.html index ac17225..49ccc36e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-057.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-057.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-058.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-058.html index 0e6abc94..42938495 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-058.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-058.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-059.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-059.html index 0ba5ecc..65b95b4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-059.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-059.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-060.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-060.html index 62e9986..98a0423a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-060.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-060.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-061.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-061.html index eafa68a..e351406 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-061.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-061.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-062.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-062.html index a9af9e65..af9b75e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-062.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-062.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-063.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-063.html index a17ba57..fb4dee8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-063.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-063.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-064.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-064.html index 8f9183a..1efb48b7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-064.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-064.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-065.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-065.html index 6e73493c..c0a17ec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-065.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-065.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-100.html index 980d477..d97591c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-100.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-101.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-101.html index 3a04b0a..125ea52c2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-101.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-101.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-102.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-102.html index a729343..f3e6879 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-102.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-102.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-103.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-103.html index 2894145d..5a5fd93 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-103.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-103.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-104.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-104.html index f1772ac..e35c82a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-104.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-104.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-105.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-105.html index 83f4316..d8baaf0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-105.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-105.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-106.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-106.html index aa7b465..200ff0c0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-106.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-106.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-107.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-107.html index 5eaa58b..b76f797 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-107.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-107.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-108.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-108.html index 9a0ad83..d33e85c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-108.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-108.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-109.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-109.html index b9b835c..89dd7bb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-109.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-109.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-110.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-110.html index 70a70f5..e89c12b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-110.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-110.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-111.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-111.html index 4afbcfb..db0a276 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-111.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-111.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: CSSFW; - src: url('../../fonts/adobe-fonts/CSSFWOrientationTest.otf'); + src: url('/fonts/adobe-fonts/CSSFWOrientationTest.otf'); } .test, .ref { font-size: 30px; font-family: CSSFW, sans-serif; width: 3em; padding: 0; border: 1px solid orange; line-height: 1em; } </style>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-112.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-112.html index e3ed1df0..01e7faa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-112.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-112.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-113.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-113.html index c81b8d2..314674d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-113.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-113.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-114.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-114.html index 5af54c9..2a9c9f2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-114.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-114.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-115.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-115.html index 758fbb0..eb5cbe0d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-115.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-115.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-116.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-116.html index 107991c..21ddae5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-116.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-116.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-117.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-117.html index b38f7e66e..7fa697a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-117.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-117.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-118.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-118.html index 5c0ebe6..c460ee4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-118.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-118.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-119.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-119.html index adfb543..d6ae588 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-119.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-119.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-120.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-120.html index 40e2a8e4..147d624 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-120.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-120.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-121.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-121.html index d6db8b78..20e7abc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-121.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-121.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-122.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-122.html index 959fb7bc..13ad23e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-122.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-122.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-123.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-123.html index ace0d6d..d0f81dcb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-123.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-123.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-124.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-124.html index 740d21d..2c4aa745 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-124.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-124.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-125.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-125.html index 188eb74..de99e5c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-125.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-125.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-126.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-126.html index 12cf863..8e5a501d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-126.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-126.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-127.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-127.html index 4bb26d3..4901e91 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-127.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-127.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-128.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-128.html index 2bf06c9..a7362c1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-128.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-128.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-129.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-129.html index 37cd4e91..de172e28 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-129.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-129.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-130.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-130.html index ddda11d14..3fdc7b1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-130.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-130.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-131.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-131.html index 8210086..93b70636 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-131.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-131.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-132.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-132.html index 51e90c22..8c83a80f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-132.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-132.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-133.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-133.html index ab2b9e4..35216919 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-133.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-133.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-134.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-134.html index cc82426..6a10266 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-134.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-134.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-135.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-135.html index 822d44e..1f91909b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-135.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-135.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-136.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-136.html index 378aa5a..6b0cddc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-136.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-136.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-137.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-137.html index 5b029ad6..f6578dc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-137.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-137.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-138.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-138.html index 36bbcd3..6fe9782 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-138.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-138.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-139.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-139.html index dfaffbd9..9b9cb61e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-139.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-139.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-140.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-140.html index f49ff12..676eed0c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-140.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-140.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-141.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-141.html index 10bcff9..6b6d021d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-141.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-141.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-142.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-142.html index e397d4c..95ddc35 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-142.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-142.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-143.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-143.html index f533a02..d3338c2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-143.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-143.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-144.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-144.html index 73932c8..397cee69 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-144.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-144.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-145.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-145.html index c89e7fb5..f3c7598 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-145.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-145.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-146.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-146.html index 2bc68d3..21570bb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-146.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-146.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-147.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-147.html index 48b4814d..3f20bcf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-147.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-147.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-148.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-148.html index f4477a72..5628127 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-148.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-148.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-149.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-149.html index 60b478f..cc2a9539 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-149.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-149.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-150.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-150.html index 16417cad..380893f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-150.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-150.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-151.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-151.html index 1e0c7746..87c1db2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-151.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-151.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-152.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-152.html index 10b6b10..6f6767c7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-152.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-152.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-153.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-153.html index 5a58da50..bf0381a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-153.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-153.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-154.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-154.html index ad1ddc76..47b8ed0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-154.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-154.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-155.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-155.html index 7f03ab4..c1a26be 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-155.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-155.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-156.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-156.html index 46c0151..d346417 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-156.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-156.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-157.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-157.html index 511ce4e..808bb91 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-157.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-157.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-158.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-158.html index 03c4ba8..d5d0309 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-158.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-158.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-159.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-159.html index c728fab..296673a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-159.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-159.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-160.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-160.html index c58320e..1b7419f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-160.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-160.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-161.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-161.html index f2eb8df..11de841 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-161.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-161.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-162.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-162.html index d9fa4b75..1e373b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-162.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-162.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-163.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-163.html index b8b6752..53deaaa0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-163.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-163.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-164.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-164.html index 5da3c4e..5a59c95 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-164.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-164.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-165.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-165.html index 26bf8c4..48b071f3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-165.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-165.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-166.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-166.html index e09927a6..a8d357ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-166.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-166.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-167.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-167.html index 5201b73..c37ca17 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-167.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-167.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-168.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-168.html index 7291591d..eb43c63 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-168.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-168.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-169.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-169.html index 70b34ba8..bb65486 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-169.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-169.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-170.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-170.html index ebb5721e..a67d271c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-170.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-170.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-171.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-171.html index 516a885..1e931fae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-171.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-171.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-200.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-200.html index 39cff9c3..57460aa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-200.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-200.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-201.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-201.html index df1c16e..09ccb28f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-201.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-201.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-202.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-202.html index cc2dc2b..70280cee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-202.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-202.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-203.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-203.html index af74d9c9..21228668 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-203.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-203.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-204.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-204.html index 0d4dac9..d85601c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-204.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-204.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-205.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-205.html index b9b40ab1..64eba30 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-205.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-205.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-206.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-206.html index 322e4a8b..0d26e5e0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-206.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-206.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-207.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-207.html index daa7174..e98aeee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-207.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-207.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-208.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-208.html index a65fc5a..86128f8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-208.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-208.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-209.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-209.html index 30a4c40..1b8da91 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-209.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-209.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-210.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-210.html index a1eb8be..7274002 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-210.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-210.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-211.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-211.html index b8b1de3..22268f4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-211.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-211.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-212.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-212.html index 1e83d02..5368110 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-212.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-212.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-213.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-213.html index 55b9a30..37f6b15 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-213.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-213.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-214.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-214.html index ba3b457d..1295120 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-214.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-214.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-215.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-215.html index 0f103b96..ec7b51fe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-215.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-215.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-216.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-216.html index 2121df1..6cace8e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-216.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-216.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-217.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-217.html index bd40ba7..fdd4a3b2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-217.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-217.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-218.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-218.html index b20bb02b..c10d0d61 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-218.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-218.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-219.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-219.html index 2a1793b..1d991ab 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-219.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-219.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-220.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-220.html index cd25c5c..eabf2c9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-220.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-220.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-221.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-221.html index 11cda59..5fdf1d54 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-221.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-221.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-222.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-222.html index 42be6f8b..ad07476 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-222.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-222.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-223.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-223.html index aeedb65..e156415 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-223.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-223.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-224.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-224.html index 3f18e7a..11517ac 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-224.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-224.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-225.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-225.html index ca6a36f..1bd5a3a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-225.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-225.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-226.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-226.html index 0625a020..70c1c6d8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-226.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/css3-text-line-break-opclns-226.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-001-ref.html index 529c2a4..f038e69 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-001-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-002-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-002-ref.html index 1ec32ea..695015e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-002-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-002-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-003-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-003-ref.html index 91aa011..5dbbb7f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-003-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-003-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-004-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-004-ref.html index 77c98348..2457628 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-004-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-004-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-005-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-005-ref.html index 5aa94cc..560b337 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-005-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-005-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-006-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-006-ref.html index c641c38..bec4d8cf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-006-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-006-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-007-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-007-ref.html index 88d5134..9af2627 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-007-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-007-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-008-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-008-ref.html index 0bfd77c..a10f72cf7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-008-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-008-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-009-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-009-ref.html index 54fc96c..f64c008 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-009-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-009-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-010-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-010-ref.html index cd9d37a..f9d1390 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-010-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-010-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-011-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-011-ref.html index 4268e41..32cf232 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-011-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-011-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-012-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-012-ref.html index ee12521f..96924df 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-012-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-012-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-013-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-013-ref.html index 6e0ec21..a7b7384 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-013-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-013-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-014-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-014-ref.html index 8fb910f2..8a03e58 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-014-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-014-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-015-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-015-ref.html index 9825aea..f8a4d56 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-015-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-015-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-016-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-016-ref.html index a979fb0..8a18c2fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-016-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-016-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-017-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-017-ref.html index 22d1d6b..d6afa5f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-017-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-017-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-018-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-018-ref.html index 68f26b4..c638c79 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-018-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-018-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-019-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-019-ref.html index caf621cf..70989ad9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-019-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-019-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-020-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-020-ref.html index 5a66f8f..c1f6a40 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-020-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-020-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-021-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-021-ref.html index 29b27258..b61d7d3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-021-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-021-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-022-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-022-ref.html index c9f1fc7f..1345777 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-022-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-022-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-023-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-023-ref.html index fac1002e..5563076 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-023-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-023-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-024-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-024-ref.html index 79b5d7f..f98f561 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-024-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-024-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-025-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-025-ref.html index c8da9373..c0438851 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-025-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-025-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-026-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-026-ref.html index ca27b4b9..ea625cd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-026-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-026-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-027-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-027-ref.html index 2bc3e6c..32e58c0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-027-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-027-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-028-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-028-ref.html index d16a469..cce47312 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-028-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-028-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-029-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-029-ref.html index abde151..63d518a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-029-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-029-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-030-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-030-ref.html index 0c53c9fb..d76cbc8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-030-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-030-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-031-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-031-ref.html index 0646987..df860b2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-031-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-031-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-032-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-032-ref.html index 01c6be0..8316cf4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-032-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-032-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-033-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-033-ref.html index f055bd7a..237c599 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-033-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-033-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-034-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-034-ref.html index fac561c..20a706b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-034-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-034-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-035-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-035-ref.html index 9d1929ab..0f795502 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-035-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-035-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-036-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-036-ref.html index 503813e..30922c15 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-036-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-036-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-037-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-037-ref.html index 3dd67f6..242c27df 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-037-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-037-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-038-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-038-ref.html index 4f109897..431ed59 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-038-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-038-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-039-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-039-ref.html index d89c92f..698bed7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-039-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-039-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-040-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-040-ref.html index 032c3bc..0cf77da 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-040-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-040-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-041-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-041-ref.html index 57743e8..38a2248 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-041-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-041-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-042-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-042-ref.html index f599f0c..51fabf7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-042-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-042-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-043-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-043-ref.html index 92df08c..bdf2e68 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-043-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-043-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-044-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-044-ref.html index a6bd593..a367f67 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-044-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-044-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-045-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-045-ref.html index ec6b839..adf8122d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-045-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-045-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-046-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-046-ref.html index cefbc18..80758ab 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-046-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-046-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-047-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-047-ref.html index a2b581b..08b085e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-047-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-047-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-048-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-048-ref.html index 526e977..0e5bd4d9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-048-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-048-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-049-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-049-ref.html index 56c8f6a..f377e89 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-049-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-049-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-050-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-050-ref.html index 04d88c7e..892012a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-050-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-050-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-051-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-051-ref.html index 5fb3475..45108e0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-051-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-051-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-052-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-052-ref.html index e988a50..1ea1307 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-052-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-052-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-054-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-054-ref.html index c749e5e..ad9b0fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-054-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-054-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-055-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-055-ref.html index feccbc5..258a691897 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-055-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-055-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-056-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-056-ref.html index fdc82a4..df6ab01 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-056-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-056-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-057-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-057-ref.html index df2fda9..71c6e8b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-057-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-057-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-058-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-058-ref.html index 5a41044..649d1c3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-058-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-058-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-059-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-059-ref.html index 55ceb945..b68f89f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-059-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-059-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-060-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-060-ref.html index 4c5c7c5..fb2c83a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-060-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-060-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-101-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-101-ref.html index 4f1cef9..7cd7292 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-101-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-101-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-102-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-102-ref.html index 3cfe66f..2246b06 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-102-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-102-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-103-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-103-ref.html index 8f0b4c9..b2e45e17 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-103-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-103-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-104-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-104-ref.html index 5f5b1c18..430235e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-104-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-104-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-105-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-105-ref.html index 21736d9..87c9256 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-105-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-105-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-106-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-106-ref.html index 651857ed..6d076ed 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-106-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-106-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-107-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-107-ref.html index e08e076..ffe87c55 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-107-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-107-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-108-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-108-ref.html index 82d275f..e417d168 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-108-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-108-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-109-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-109-ref.html index bb71e55..b42f93c7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-109-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-109-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-110-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-110-ref.html index bc0c0c2..7780e07b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-110-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-110-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-111-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-111-ref.html index 2d7e79f4..77b0fbf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-111-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-111-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-112-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-112-ref.html index dff39cc..6e5bf840 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-112-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-112-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-113-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-113-ref.html index e817f834..d471effa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-113-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-113-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-114-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-114-ref.html index 351dd879..2e1b8b64 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-114-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-114-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-115-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-115-ref.html index ddc058ff..f33e7ecd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-115-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-115-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-116-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-116-ref.html index b47d54eb..2bd48ed 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-116-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-116-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-117-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-117-ref.html index 5fda0f7..9ac8973 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-117-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-117-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-118-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-118-ref.html index 19a6dec..637e227 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-118-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-118-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-119-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-119-ref.html index 7d41cb25..a3c03a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-119-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-119-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-120-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-120-ref.html index 47e1096..04f0d19 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-120-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-120-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-121-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-121-ref.html index 6bde837..10e8458 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-121-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-121-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-122-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-122-ref.html index ba9fcef..7fd3f1a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-122-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-122-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-123-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-123-ref.html index 56da3714..65158df 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-123-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-123-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-124-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-124-ref.html index 7cfaad5..9a934db8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-124-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-124-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-125-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-125-ref.html index 421b200..a072368 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-125-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-125-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-126-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-126-ref.html index 2172f51..2603949 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-126-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-126-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-127-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-127-ref.html index 75d27a9b..c2c1aa0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-127-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-127-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-128-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-128-ref.html index 9df0980..1bdf857 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-128-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-128-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-129-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-129-ref.html index 41b8d5d..a480560c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-129-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-129-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-130-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-130-ref.html index 54bc27c..9e6be7a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-130-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-130-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-131-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-131-ref.html index a4944526..d5746461 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-131-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-131-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-132-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-132-ref.html index f5bfd7de..e43edb6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-132-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-132-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-133-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-133-ref.html index 73f7933..7e0449d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-133-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-133-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-134-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-134-ref.html index d427a77..75b0f593 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-134-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-134-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-135-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-135-ref.html index e409d93..0135fb0c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-135-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-135-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-138-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-138-ref.html index 6de058b..f7ca6a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-138-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-138-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-139-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-139-ref.html index 51d93b7..8bbcee22 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-139-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-139-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-140-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-140-ref.html index a79c518..a0aab3c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-140-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-140-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-141-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-141-ref.html index b758239e..796c8bf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-141-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-141-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-144-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-144-ref.html index 5b05211..ccb6f4906 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-144-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-144-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-145-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-145-ref.html index d3edb83..136ae62 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-145-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-145-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-146-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-146-ref.html index 66cb151..6b8422a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-146-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-146-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-147-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-147-ref.html index 03a73dff..ee6b467 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-147-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-147-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-148-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-148-ref.html index ff4fdc0..3aa5b14 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-148-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-148-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-149-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-149-ref.html index ff988560..00a7f4f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-149-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-149-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-152-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-152-ref.html index ff2b2d0..53d7f2c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-152-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-152-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-154-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-154-ref.html index 35a99d1..a69f361 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-154-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-154-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-155-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-155-ref.html index 28be22c..31fe768 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-155-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-155-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-156-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-156-ref.html index ba67361..ed10733 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-156-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-156-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-157-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-157-ref.html index 2f8503c..06bd81a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-157-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-157-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-158-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-158-ref.html index b102fb1..2821002 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-158-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-158-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-159-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-159-ref.html index a283411..82282b7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-159-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-159-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-160-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-160-ref.html index 0eca8de..36e446d2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-160-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-160-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-201-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-201-ref.html index d65fcf8c..0d3abe21 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-201-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-201-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-202-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-202-ref.html index 1fabcad5..b078f522 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-202-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-202-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-203-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-203-ref.html index 1ccca65..1da911cb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-203-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-203-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-204-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-204-ref.html index f6bb661..8711bd3d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-204-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-204-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-205-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-205-ref.html index 07f7e3c..2aedd5ea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-205-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-205-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-206-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-206-ref.html index 2980b01..149310cf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-206-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-206-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-207-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-207-ref.html index a66fa5e..1041f0c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-207-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-207-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-208-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-208-ref.html index b3e0a06e..d1f68e7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-208-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-208-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-209-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-209-ref.html index f282bb8f..872ed64 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-209-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-209-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-210-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-210-ref.html index 447554e..c662bec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-210-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-210-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-211-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-211-ref.html index 025ffdb..6cbaec6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-211-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-211-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-212-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-212-ref.html index a6b69eb..751d21f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-212-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-212-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-213-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-213-ref.html index 6464b8a..47724ce9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-213-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-213-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-214-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-214-ref.html index 6f9eaae..7408ff8f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-214-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-214-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-215-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-215-ref.html index 6c3d0dd2..abf0386 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-215-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-215-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-216-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-216-ref.html index 37216459..d2de4d9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-216-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-216-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-217-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-217-ref.html index fb139eb..e482f1b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-217-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-217-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-218-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-218-ref.html index 9f7fdef..a8e5d27 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-218-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-218-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-219-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-219-ref.html index 6a7fa10..37dd1a4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-219-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-219-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-220-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-220-ref.html index 97cc92a0..87fd769 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-220-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-220-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-221-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-221-ref.html index 7dd0a98..fb15f73 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-221-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-221-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-222-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-222-ref.html index 2b406478..2f872b53 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-222-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-222-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-223-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-223-ref.html index 9031b95..d63772e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-223-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-223-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-224-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-224-ref.html index 5c5be39..115118f9a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-224-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-224-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-225-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-225-ref.html index 2c09fae..bed7290 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-225-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-225-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-226-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-226-ref.html index b3a0d76..06f98c6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-226-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-226-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-227-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-227-ref.html index 9658d83..7581702 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-227-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-227-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-228-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-228-ref.html index 19276285..fde791a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-228-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-228-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-229-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-229-ref.html index eb1c65c..4c35acf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-229-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-229-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-230-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-230-ref.html index 7dc60be..7a2eb9c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-230-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-230-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-231-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-231-ref.html index b2f5b4b..f261d27 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-231-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-231-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-232-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-232-ref.html index 89397459..22568be 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-232-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-232-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-233-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-233-ref.html index 5a4df076..fb0ac93a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-233-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-233-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-234-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-234-ref.html index 4066f51c..f4e84bd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-234-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-234-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-235-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-235-ref.html index 85a34780..59b00fae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-235-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-235-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-236-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-236-ref.html index 05829c7..5a4d3e1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-236-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-236-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-237-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-237-ref.html index 207fd24..dca3f05f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-237-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-237-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-238-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-238-ref.html index 30224d8..cb92b6b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-238-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-238-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-239-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-239-ref.html index 12bab42..2ee3d26d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-239-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-239-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-240-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-240-ref.html index f00a407..d6d2294 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-240-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-240-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-241-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-241-ref.html index 646fa036..6fdcd88 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-241-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-241-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-242-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-242-ref.html index ec4f145..bf92e87 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-242-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-242-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-243-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-243-ref.html index 667be36..7c52a11 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-243-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-243-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-244-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-244-ref.html index 252bc189..a6149f1f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-244-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-244-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-245-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-245-ref.html index e302f39..c2bb165 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-245-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-245-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-246-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-246-ref.html index f42897b..77ef571 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-246-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-246-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-247-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-247-ref.html index 7c91652a..4725e790 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-247-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-247-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-248-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-248-ref.html index 658f966..f2cad74 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-248-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-248-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-249-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-249-ref.html index c1f21af..bf602c4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-249-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-249-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-250-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-250-ref.html index 7ccd793..1b75f33 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-250-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-250-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-251-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-251-ref.html index 3c78562..2e96e412 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-251-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-251-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-252-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-252-ref.html index 837feb367..088d529 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-252-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-252-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-254-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-254-ref.html index a472eac..a0ca36d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-254-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-254-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-255-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-255-ref.html index 8390de8..c2d854ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-255-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-255-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-256-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-256-ref.html index 974b7e7..aa737fdc038 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-256-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-256-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-257-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-257-ref.html index 8a6049b..df1dddd1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-257-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-257-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-258-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-258-ref.html index 819560ea..c7487f0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-258-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-258-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-259-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-259-ref.html index 94e030a2..fb23329 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-259-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-259-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-260-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-260-ref.html index 206a523..62b441f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-260-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-260-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-301-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-301-ref.html index 7431b62..cc3ad23 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-301-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-301-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-302-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-302-ref.html index 1fce738..a77e22e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-302-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-302-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-303-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-303-ref.html index f3663d5..4492033 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-303-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-303-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-304-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-304-ref.html index 2da5dd44..1fcc220 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-304-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-304-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-305-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-305-ref.html index 58f718c..24db1833 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-305-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-305-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-306-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-306-ref.html index 01fc969..4293032 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-306-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-306-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-307-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-307-ref.html index 9a8c01c..de4366fa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-307-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-307-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-308-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-308-ref.html index 4442a43..613fe43 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-308-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-308-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-309-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-309-ref.html index 450ea39..9fb475732 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-309-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-309-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-310-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-310-ref.html index 26fc989..0585929 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-310-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-310-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-311-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-311-ref.html index 996b1a6..cc653fb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-311-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-311-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-312-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-312-ref.html index bcc2a0e..e46aa97 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-312-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-312-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-313-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-313-ref.html index 49f4c18e..f40a57e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-313-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-313-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-314-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-314-ref.html index 266a4d7f..0bb89b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-314-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-314-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-315-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-315-ref.html index ccb7d9e1..1f08cdc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-315-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-315-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-316-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-316-ref.html index e5eb65e1..8b599e71 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-316-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-316-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-317-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-317-ref.html index 2009008..8adec79 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-317-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-317-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-318-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-318-ref.html index 0abbf5e..f6030d94 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-318-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-318-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-319-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-319-ref.html index 11c2095..5f3b9f1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-319-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-319-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-320-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-320-ref.html index e98c060..cc54c15 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-320-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-320-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-321-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-321-ref.html index 0abbf5e..f6030d94 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-321-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-321-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-322-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-322-ref.html index e4cfcc63..c156ff5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-322-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-322-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-323-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-323-ref.html index bf1628e1..15339ff 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-323-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-323-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-324-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-324-ref.html index 9fa3c2f28..fbcc316 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-324-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-324-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-325-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-325-ref.html index d552e6e9..1b3e533 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-325-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-325-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-326-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-326-ref.html index b23fbf31..9ee68d6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-326-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-326-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-327-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-327-ref.html index 0073a1d..237027a9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-327-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-327-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-351-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-351-ref.html index 044b9c5..42de27d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-351-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-351-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-352-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-352-ref.html index e443d4a..c7b91811 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-352-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-352-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-353-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-353-ref.html index 0819ae2..aba0b2f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-353-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-353-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-354-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-354-ref.html index 7aa13961..3aa60e8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-354-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-354-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-355-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-355-ref.html index adc2935..d452a111 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-355-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-355-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-358-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-358-ref.html index 3b5dda4..99d59db6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-358-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-358-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-359-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-359-ref.html index cd514d5..31ce0d60 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-359-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-359-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-362-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-362-ref.html index 60b9edc2..b030726 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-362-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-362-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-363-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-363-ref.html index 0512120..94a27b9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-363-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-363-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-364-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-364-ref.html index 8663223..0d1df47 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-364-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-364-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-365-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-365-ref.html index 08a89abe..27c15fe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-365-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-365-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-366-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-366-ref.html index a5a198a..f22a77c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-366-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-366-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-367-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-367-ref.html index ca3dec6..b2351f4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-367-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-367-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-370-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-370-ref.html index 96bbc1a..14233e58 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-370-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-370-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-372-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-372-ref.html index bcb5b964..4bd341b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-372-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-372-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-373-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-373-ref.html index 29475b3..e7b8abb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-373-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-373-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-374-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-374-ref.html index b7daa28..8280c676 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-374-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-374-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-375-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-375-ref.html index ccc7618..1a4098da 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-375-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-375-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-376-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-376-ref.html index 261c27f..49cdff53 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-376-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-376-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-377-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-377-ref.html index 6e2742a..bf848bb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-377-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-377-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-401-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-401-ref.html index 6f73f41..09cbf2f0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-401-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-401-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-402-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-402-ref.html index 7d8ea80..04087361 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-402-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-402-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-403-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-403-ref.html index cacd300..286805c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-403-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-403-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-404-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-404-ref.html index 6e2f6aa..02decf3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-404-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-404-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-405-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-405-ref.html index d69377f..9e9b0c8a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-405-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-405-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-406-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-406-ref.html index 8dffd70..035c77a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-406-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-406-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-407-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-407-ref.html index e143c88..774593d00 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-407-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-407-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-408-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-408-ref.html index 5a64560..8edd279d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-408-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-408-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-409-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-409-ref.html index 64b9719..801ad7eb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-409-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-409-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-410-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-410-ref.html index 9d7ecae..df70f562 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-410-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-410-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-411-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-411-ref.html index a1c4e132..c865ab0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-411-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-411-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-412-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-412-ref.html index 3b57555..dc0f4a5b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-412-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-412-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-413-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-413-ref.html index c5aa0b4b..8069e629 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-413-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-413-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-414-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-414-ref.html index 6aa35e3..09a265e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-414-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-414-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-415-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-415-ref.html index 044e27fe..df22f360 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-415-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-415-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-416-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-416-ref.html index cf02f05..66477b17 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-416-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-416-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-417-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-417-ref.html index eb811d7..5add0af 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-417-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-417-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-418-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-418-ref.html index 0098eb6..44217930 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-418-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-418-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-419-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-419-ref.html index be526c3..7c3ead4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-419-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-419-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-420-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-420-ref.html index cb1a0671..0cefda8c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-420-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-420-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-421-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-421-ref.html index 0098eb6..44217930 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-421-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-421-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-422-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-422-ref.html index a7f6073..206486d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-422-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-422-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-423-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-423-ref.html index 634dba7b..ebb86a2a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-423-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-423-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-424-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-424-ref.html index 056635e..e1bf2f3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-424-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-424-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-425-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-425-ref.html index 3f8c452d..1e3f252c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-425-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-425-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-426-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-426-ref.html index d61999e7..af31192 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-426-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-426-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-427-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-427-ref.html index f590f2e..15f99c9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-427-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-jazh-427-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 93px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html index 8711d6c..d3827a52 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-001-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-002-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-002-ref.html index 8dba82d..73c071c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-002-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-002-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-003-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-003-ref.html index 9e75ce6d..9ca9689 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-003-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-003-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-004-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-004-ref.html index 06ee93c..8124c123 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-004-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-004-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: CSSFW; - src: url('../../../fonts/adobe-fonts/CSSFWOrientationTest.otf'); + src: url('/fonts/adobe-fonts/CSSFWOrientationTest.otf'); } .test, .ref { font-size: 30px; font-family: CSSFW, sans-serif; width: 3em; padding: 0; border: 1px solid orange; line-height: 1em; } </style>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-005-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-005-ref.html index 6cbbc0eb..0e46ad5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-005-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-005-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-006-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-006-ref.html index 8c5615f..daeeed42 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-006-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-006-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-007-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-007-ref.html index 6100c45..6776e6a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-007-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-007-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-008-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-008-ref.html index f68605d..8e25a1d5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-008-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-008-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-009-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-009-ref.html index cf8ed34a..839b139 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-009-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-009-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-010-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-010-ref.html index e4bdb1d..75b225e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-010-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-010-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-011-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-011-ref.html index b749a89..fb0d865 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-011-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-011-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-012-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-012-ref.html index 54703ddf..c039c527 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-012-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-012-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html index 71c42e22..666a8b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-013-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html index 4ddeb09..4e60ba25 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-014-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-015-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-015-ref.html index 42a90bd3..1ca390af 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-015-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-015-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-016-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-016-ref.html index 6acd92e8..4d59b931 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-016-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-016-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-017-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-017-ref.html index f00b4fd..ed03663d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-017-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-017-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-018-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-018-ref.html index 83ee033..1aaa849a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-018-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-018-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-019-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-019-ref.html index e5b6118..548ac5d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-019-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-019-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-020-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-020-ref.html index cf062f1..28f4eca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-020-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-020-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-021-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-021-ref.html index e9591ba..7bb2c28 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-021-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-021-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-022-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-022-ref.html index 414fde4..df5b9c0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-022-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-022-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-023-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-023-ref.html index a7b9a7b5..7cce8d4d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-023-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-023-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-024-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-024-ref.html index c05c6262..3629e8a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-024-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-024-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-025-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-025-ref.html index 082eb56..308ebc2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-025-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-025-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-026-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-026-ref.html index 0d93db3..c45c1264 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-026-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-026-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-027-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-027-ref.html index e966377..6265af1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-027-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-027-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-028-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-028-ref.html index 754bcbd9..de3148e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-028-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-028-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-029-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-029-ref.html index 6fe7895..468b023 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-029-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-029-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-030-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-030-ref.html index c83e5c8..3cb02501 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-030-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-030-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-031-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-031-ref.html index 0c65ec331..80cfca2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-031-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-031-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-032-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-032-ref.html index 914bf07..671f7668 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-032-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-032-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-033-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-033-ref.html index e2e4bd53..372f5dd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-033-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-033-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-034-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-034-ref.html index f65fab0d..065ff59 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-034-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-034-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-035-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-035-ref.html index d9d36af3..5a640de 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-035-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-035-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-036-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-036-ref.html index f4adeea..68b6ef3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-036-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-036-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-037-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-037-ref.html index 04a0d56..eb8b6a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-037-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-037-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-038-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-038-ref.html index eb0f861..3839cb8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-038-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-038-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-039-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-039-ref.html index fb8dfbb..2bf1ef9a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-039-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-039-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-040-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-040-ref.html index 6c2d482..c2b7588 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-040-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-040-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-041-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-041-ref.html index f397a36b..198d7433 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-041-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-041-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-042-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-042-ref.html index 85f8efe..d532c08 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-042-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-042-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-043-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-043-ref.html index 1ce17e1..02bf50a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-043-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-043-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-044-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-044-ref.html index 4b8bd9f..97c7b59 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-044-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-044-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-045-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-045-ref.html index b3f6980..f6d4e3bb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-045-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-045-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-046-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-046-ref.html index ced2ab5..e2b57d0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-046-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-046-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-047-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-047-ref.html index 16e3d9a..9281df4b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-047-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-047-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html index 3ccc4b7..b087f2d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-048-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html index 741f0241..32f681ed 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-049-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-050-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-050-ref.html index c3a20a04..63a7039 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-050-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-050-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-051-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-051-ref.html index 5883c82..ec482d35 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-051-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-051-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-052-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-052-ref.html index 15a4e000..b8dde25 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-052-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-052-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-053-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-053-ref.html index aac35a9a..81e02aad 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-053-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-053-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-054-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-054-ref.html index 932c18d..77904a9e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-054-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-054-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-055-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-055-ref.html index 1a55f36b..96b9bc12 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-055-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-055-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-056-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-056-ref.html index 2e3ddf09..56e1e23 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-056-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-056-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-057-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-057-ref.html index 1a7778a..9b32b7a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-057-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-057-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-058-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-058-ref.html index ce42de2f..bf7ffd1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-058-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-058-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-059-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-059-ref.html index 15cadd9..c44b1f4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-059-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-059-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-060-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-060-ref.html index bfd8b29..938b7158 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-060-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-060-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-061-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-061-ref.html index e22136e0..2e803c28 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-061-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-061-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-062-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-062-ref.html index fb8ad3f..5993718 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-062-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-062-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-063-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-063-ref.html index 3b15bc5..5cff8aa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-063-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-063-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-064-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-064-ref.html index 6b28cc4..bcf1f9fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-064-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-064-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-065-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-065-ref.html index f4700c2e..9851bbd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-065-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-065-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-100-ref.html index b97cad5..4ff2ead 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-100-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-101-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-101-ref.html index 5f26dfa..16ebd4d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-101-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-101-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-102-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-102-ref.html index b2fef82..f9c58c3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-102-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-102-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-103-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-103-ref.html index 2dddfd00..78a67ad2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-103-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-103-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-104-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-104-ref.html index 3ebdb2bec..29c95e4d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-104-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-104-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-105-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-105-ref.html index 8becdcd..935dcff 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-105-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-105-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-106-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-106-ref.html index 196a44e..8641c94 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-106-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-106-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-107-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-107-ref.html index e1f2c71..3ab7951 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-107-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-107-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-108-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-108-ref.html index c72654e..859959f2c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-108-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-108-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-109-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-109-ref.html index 1dd57cf7..67c80c3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-109-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-109-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-110-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-110-ref.html index fc4e6d0..55c1a600 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-110-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-110-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-111-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-111-ref.html index 013ff06a..b0c0a8b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-111-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-111-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: CSSFW; - src: url('../../../fonts/adobe-fonts/CSSFWOrientationTest.otf'); + src: url('/fonts/adobe-fonts/CSSFWOrientationTest.otf'); } .test, .ref { font-size: 30px; font-family: CSSFW, sans-serif; padding: 0; width: 3em; border: 1px solid orange; line-height: 1em; } </style>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-112-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-112-ref.html index 1505c6d..717e3c57 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-112-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-112-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-113-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-113-ref.html index aacad6b3..d0f48e5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-113-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-113-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-114-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-114-ref.html index f8a37e26..3c89cb89 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-114-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-114-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-115-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-115-ref.html index 807386f..7c677f54 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-115-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-115-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-116-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-116-ref.html index 6524d39c..a06da3d5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-116-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-116-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-117-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-117-ref.html index 9918f56..5338dc3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-117-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-117-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html index e59c668..3aeff410 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-118-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html index dcbdbab..f73bf2e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-119-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-120-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-120-ref.html index 6f733c3c..f051e3f5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-120-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-120-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-121-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-121-ref.html index 78987085..fee6089 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-121-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-121-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-122-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-122-ref.html index 4a3529d..dab0f5d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-122-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-122-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-123-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-123-ref.html index 739a5dd..76b68ff 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-123-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-123-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-124-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-124-ref.html index 62f1c73..2b732cb1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-124-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-124-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-125-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-125-ref.html index 841c655..78d4530 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-125-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-125-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-126-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-126-ref.html index 5fb351d..dccad04 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-126-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-126-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-127-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-127-ref.html index a1ddd3b..1605b6f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-127-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-127-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-128-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-128-ref.html index 7038723..e283da7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-128-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-128-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-129-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-129-ref.html index 22e4476..dd15ec19 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-129-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-129-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-130-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-130-ref.html index 2092852f..f1c2003 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-130-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-130-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-131-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-131-ref.html index 5c815b7..07bd001 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-131-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-131-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-132-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-132-ref.html index 29bc4fc..65195337 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-132-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-132-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-133-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-133-ref.html index fdfaf187..8e56f61 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-133-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-133-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-134-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-134-ref.html index baab4cc7..39943a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-134-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-134-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-135-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-135-ref.html index 1815b4e..d4e1daa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-135-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-135-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-136-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-136-ref.html index 5c9fdb6a..3a222be 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-136-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-136-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-137-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-137-ref.html index c6b05d6..0ad5152 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-137-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-137-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-138-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-138-ref.html index ab3a414e..7e11d6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-138-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-138-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-139-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-139-ref.html index ec073ce..f8c884d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-139-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-139-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-140-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-140-ref.html index f95093c6..1b844fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-140-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-140-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-141-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-141-ref.html index c2a3013..adad14aa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-141-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-141-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-142-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-142-ref.html index 300fa617..992e113 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-142-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-142-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-143-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-143-ref.html index b56f253..c8ce0649 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-143-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-143-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-144-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-144-ref.html index 2244cdf..10bed506 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-144-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-144-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-145-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-145-ref.html index 856a80b5..34492a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-145-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-145-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-146-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-146-ref.html index 44e8252..29adb6f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-146-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-146-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-147-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-147-ref.html index f8ccc94..bd57d46 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-147-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-147-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-148-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-148-ref.html index 171101a..a516eb1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-148-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-148-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-149-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-149-ref.html index a9db0c7..f2a4dd5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-149-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-149-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-150-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-150-ref.html index 1a1bd5d..0b3ee5d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-150-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-150-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-151-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-151-ref.html index 156f8d81..38bf135 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-151-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-151-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-152-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-152-ref.html index cad7749..2f8e31b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-152-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-152-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-153-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-153-ref.html index 56323b9..62d192d2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-153-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-153-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html index 9ebe4f53..e1e1361 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-154-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html index f12a36c..fe510c9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-155-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-156-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-156-ref.html index 757bb14..287aa82 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-156-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-156-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-157-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-157-ref.html index 1914e8f..4c4e918 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-157-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-157-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-158-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-158-ref.html index 5fb73c56..33093895 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-158-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-158-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-159-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-159-ref.html index 14255c1..71fcdce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-159-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-159-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-160-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-160-ref.html index f1e73f4..100bef1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-160-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-160-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-161-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-161-ref.html index 2630bac..2378a46 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-161-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-161-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-162-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-162-ref.html index 951ce7d..a3b9f00 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-162-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-162-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-163-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-163-ref.html index 69a6f1b9..8149f16f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-163-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-163-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-164-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-164-ref.html index 79bc53a..452a169 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-164-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-164-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-165-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-165-ref.html index 7f083e8..e5a4d7ae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-165-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-165-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-166-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-166-ref.html index 393b51a..8c4edcc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-166-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-166-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-167-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-167-ref.html index 4d67db31..50ffcbd6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-167-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-167-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-168-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-168-ref.html index 01a9c9bd..ce49bd84 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-168-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-168-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-169-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-169-ref.html index f0f081b0..e19675d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-169-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-169-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-170-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-170-ref.html index fa067fa..dde385f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-170-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-170-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-171-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-171-ref.html index 3874e4a8..24ad24e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-171-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-171-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-200-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-200-ref.html index ac841608..fcda746 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-200-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-200-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-201-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-201-ref.html index f64a19c..264e1967 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-201-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-201-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-202-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-202-ref.html index ec186bb..33c1e225 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-202-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-202-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-203-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-203-ref.html index 2c7c8fad..c5d34d1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-203-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-203-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-204-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-204-ref.html index 0411393..660caae 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-204-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-204-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-205-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-205-ref.html index 0d0891e..0ed44a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-205-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-205-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-206-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-206-ref.html index 85fe9c6c..aa8a56d5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-206-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-206-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-207-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-207-ref.html index be430e8..7848018 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-207-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-207-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-208-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-208-ref.html index e828ca7..18c7295 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-208-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-208-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-209-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-209-ref.html index be59fff..2ede741 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-209-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-209-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-210-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-210-ref.html index eaf44e6..cf6402e5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-210-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-210-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-211-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-211-ref.html index dc203a5..2bf76901 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-211-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-211-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-212-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-212-ref.html index 75edefb..cc3f3a5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-212-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-212-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-213-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-213-ref.html index ed760d3b..14d7e57 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-213-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-213-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-214-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-214-ref.html index 10a9424..fcaa1eb6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-214-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-214-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-215-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-215-ref.html index d4b3de8..301baa76 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-215-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-215-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html index 2018d6a..a93b226 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-216-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html index 8f1d650..1ec0df6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-217-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-218-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-218-ref.html index ba2d2930..307b1f2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-218-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-218-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-219-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-219-ref.html index 3acff880..b786389d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-219-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-219-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-220-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-220-ref.html index 2af37b1..cd15967 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-220-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-220-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-221-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-221-ref.html index 67a2850..b6dec87e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-221-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-221-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-222-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-222-ref.html index 15312a5a..0147d69 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-222-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-222-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-223-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-223-ref.html index e87cf0a..5186d38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-223-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-223-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html index d874ef3..b0b4f739 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-224-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html index b5065f8..6f03c09e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-225-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-226-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-226-ref.html index cf4a827..ea55b48 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-226-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-226-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-250-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-250-ref.html index e542c14..28bd74a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-250-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-250-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-251-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-251-ref.html index b351ad3..a1902e01 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-251-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-251-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-252-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-252-ref.html index 6676fe5..d3df881 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-252-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-252-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-253-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-253-ref.html index 4279560..3b225ad 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-253-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-253-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-254-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-254-ref.html index 0efc2d1..d45f61d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-254-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-254-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-255-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-255-ref.html index 7f31328b..dc1db9b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-255-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-255-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-256-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-256-ref.html index 3e527e0..d55dc72 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-256-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-256-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-257-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-257-ref.html index dd6eefc..2730292d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-257-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-257-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-258-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-258-ref.html index 9f8a82d..848764b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-258-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-258-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-259-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-259-ref.html index a488eb4..e825a25 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-259-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-259-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-260-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-260-ref.html index 00ca5cab..e0426d6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-260-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-260-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-261-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-261-ref.html index 45ccde2..a4860e49 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-261-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-261-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-262-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-262-ref.html index 846828a..a81e04ec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-262-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-262-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-263-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-263-ref.html index 66711b3..971464c5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-263-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-263-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-264-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-264-ref.html index d9ccaf8..1bea8d6b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-264-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-264-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-265-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-265-ref.html index 40f6d3d..3c89e82 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-265-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-265-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-266-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-266-ref.html index 2b90338..e1fc44ec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-266-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-266-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-267-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-267-ref.html index 9448918..57bcf9e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-267-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-267-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-268-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-268-ref.html index d03b4a8..c5eea6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-268-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-268-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-269-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-269-ref.html index 160e0ed0..1651a6e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-269-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/css3-text-line-break-opclns-269-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'mplus-1p-regular'; - src: url('support/mplus-1p-regular.woff') format('woff'); + src: url('/fonts/mplus-1p-regular.woff') format('woff'); /* filesize: 803K */ } .test, .ref { font-size: 30px; font-family: mplus-1p-regular, sans-serif; width: 95px; padding: 0; border: 1px solid orange; line-height: 1em; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/support/mplus-1p-regular.woff deleted file mode 100644 index 42cfff6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/reference/support/mplus-1p-regular.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/support/mplus-1p-regular.woff deleted file mode 100644 index 42cfff6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/support/mplus-1p-regular.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-021.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-021.xht index 2015f10..a956d30 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-021.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-021.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-022.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-022.xht index bfb6f7f..22a2a8a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-022.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-022.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023a.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023a.xht index 8ac8324..7723250e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023a.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023a.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023b.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023b.xht index b8631d3..6f867c8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023b.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-023b.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024a.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024a.xht index 20d4d560..cbbeff8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024a.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024a.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024b.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024b.xht index a8d5773..e0da408 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024b.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-024b.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-025.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-025.xht index d439829..87dcaf3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-025.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-normal-025.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-011.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-011.xht index 97ead7a..3ba2e88 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-011.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-011.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-012.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-012.xht index 61d97ba..28358b8ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-012.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-012.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-013.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-013.xht index 70084d9..b946883 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-013.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-013.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-014.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-014.xht index d601926b0..8cb4660e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-014.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-014.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-015.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-015.xht index a4d00e71..8549f73a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-015.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-015.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016a.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016a.xht index e9a4df4..55e54340 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016a.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016a.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016b.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016b.xht index a5479d4..66ed3de 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016b.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-016b.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017a.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017a.xht index 0cac047c..4c8f9ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017a.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017a.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017b.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017b.xht index 4c63abb..95629cb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017b.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-017b.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018a.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018a.xht index d2859890..d65f525 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018a.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018a.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018b.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018b.xht index 0707126a..62315b9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018b.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/line-break-strict-018b.xht
@@ -13,7 +13,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-021-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-021-ref.xht index ba0240f4..1393746 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-021-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-021-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-022-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-022-ref.xht index 247defe..c9508ab 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-022-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-022-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023a-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023a-ref.xht index db36981..07fb202 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023a-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023a-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023b-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023b-ref.xht index fdea6fe0..302ddd6d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023b-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-023b-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024a-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024a-ref.xht index e09316eb..63580b2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024a-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024a-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024b-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024b-ref.xht index f9b353a..1c63f173 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024b-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-024b-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-025-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-025-ref.xht index 0baae43..5f62f08 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-025-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-normal-025-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-011-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-011-ref.xht index 09d3bef..1a2841b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-011-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-011-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-012-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-012-ref.xht index eef347d4..0deeb9f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-012-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-012-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-013-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-013-ref.xht index 3e4ab44..40e5b1d9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-013-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-013-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-014-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-014-ref.xht index f73dea9..2676a3b4b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-014-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-014-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-015-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-015-ref.xht index 419b01c2..5bcd3c2c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-015-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-015-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016a-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016a-ref.xht index e597a06..b95368ff7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016a-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016a-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016b-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016b-ref.xht index 6522e70..57698e5a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016b-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-016b-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017a-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017a-ref.xht index 385ecd11..7234804 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017a-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017a-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017b-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017b-ref.xht index b9d6e8c..3960275 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017b-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-017b-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018a-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018a-ref.xht index ab6093b..ec2860f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018a-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018a-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018b-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018b-ref.xht index 04ab6c0..8d654a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018b-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/line-break-strict-018b-ref.xht
@@ -10,7 +10,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ /* mplus-1p-regular.ttf can be downloaded at/from [TBD later]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/support/mplus-1p-regular.woff deleted file mode 100644 index 42cfff6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/reference/support/mplus-1p-regular.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/support/mplus-1p-regular.woff deleted file mode 100644 index 42cfff6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/line-break/support/mplus-1p-regular.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-001-ref.html index 30f42ab..afb8ba0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-001-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-003-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-003-ref.html index d0b0b815..72c023f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-003-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-003-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-005-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-005-ref.html index 84450bff..2d4e590 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-005-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-005-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-007-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-007-ref.html index 826a3e8..18d644a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-007-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-007-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-009-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-009-ref.html index 0b29e0b..fcfcd33 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-009-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-009-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-010-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-010-ref.html index f18cbd8..19f0c37 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-010-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-010-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-011-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-011-ref.html index ab952b84..abd595d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-011-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-011-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-014-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-014-ref.html index d880a91..d97eeec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-014-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-014-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html index 4a6a1ed..ac84d5f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-016-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-018-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-018-ref.html index 29e6061..6d4e35aa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-018-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-018-ref.html
@@ -8,8 +8,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-020-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-020-ref.html index 98e6b32..30cb39c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-020-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-020-ref.html
@@ -7,8 +7,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-022-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-022-ref.html index 74069f7..a888563 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-022-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-022-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-024-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-024-ref.html index 06ac0eb..20bc68d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-024-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-024-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-026-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-026-ref.html index 1f5bcede..6a0cb13 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-026-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-026-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-028-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-028-ref.html index a52c5a9..a4df1a0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-028-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-028-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-030-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-030-ref.html index be7b8e5..d5c5df4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-030-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-capitalize-030-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-001-ref.html index 20ebd3e..fd9b5a7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-001-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-002-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-002-ref.html index f70532f..ae73270 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-002-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-002-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-003-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-003-ref.html index 042af4b..bc8750da 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-003-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-003-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-004-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-004-ref.html index b35f94f..99d7c91d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-004-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-004-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-005-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-005-ref.html index 90fdc1d..5919ccd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-005-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-005-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-006-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-006-ref.html index 6937ee5..ebcc1141f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-006-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-006-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-007-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-007-ref.html index 1921066..255d7fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-007-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-007-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-008-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-008-ref.html index d7f93110..b794e11 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-008-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-008-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-009-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-009-ref.html index 4a321965..446fb2c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-009-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-009-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-010-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-010-ref.html index 36cbecf..d2c61f9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-010-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-010-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-011-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-011-ref.html index e103cb3..17f8026 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-011-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-011-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-012-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-012-ref.html index 95eef9f..52e3aea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-012-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-012-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-014-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-014-ref.html index 629c3e2..b9d1a910 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-014-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-014-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-015-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-015-ref.html index 72e0a53..fa717923 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-015-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-015-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-016-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-016-ref.html index 98116cc..e900de1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-016-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-016-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-017-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-017-ref.html index a6f1e5c..4f727de 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-017-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-017-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-018-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-018-ref.html index ca4500e4..bcb4a58 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-018-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-018-ref.html
@@ -8,8 +8,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-019-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-019-ref.html index 4b9d3b32..f63be7d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-019-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-019-ref.html
@@ -8,8 +8,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-020-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-020-ref.html index 322937f2..5c757b38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-020-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-020-ref.html
@@ -7,8 +7,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-021-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-021-ref.html index 9f9f8cd..842a2127 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-021-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-021-ref.html
@@ -7,8 +7,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-022-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-022-ref.html index 99d18c9..b96879a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-022-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-022-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-023-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-023-ref.html index da0c26132..e054d06 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-023-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-023-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-024-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-024-ref.html index 3dd4f0b..fca2cebb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-024-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-024-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-025-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-025-ref.html index eb9df5f..7304d5fd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-025-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-025-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-026-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-026-ref.html index 0bbe98f0..9582472 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-026-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-026-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-027-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-027-ref.html index 11a99b6..1e327b7d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-027-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-027-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-028-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-028-ref.html index d4faf9d..041def4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-028-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-028-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-029-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-029-ref.html index 3fefafb..7484709 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-029-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-029-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-030-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-030-ref.html index f2fab79..ae88eb2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-030-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-030-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-031-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-031-ref.html index 3e3f1c66..5ee04a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-031-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-031-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-033-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-033-ref.html index e3550509..28c8624 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-033-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-033-ref.html
@@ -9,7 +9,7 @@ /* the CSS below is not part of the test */ @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-034-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-034-ref.html index 5afe60f..eafe630 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-034-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-034-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-035-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-035-ref.html index 6f531b5c..cfd3720d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-035-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-035-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-038-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-038-ref.html index f5e8471..bc7f562d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-038-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-038-ref.html
@@ -8,7 +8,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-039-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-039-ref.html index ba8123e..a00b836 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-039-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-039-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-040-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-040-ref.html index 1fdb897..143ba2a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-040-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-040-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-041-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-041-ref.html index 76c4bce..0b80eb9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-041-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-041-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-042-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-042-ref.html index ee70285..10c0d36 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-042-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-042-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-043-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-043-ref.html index fde2108..d629a319 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-043-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-043-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-101-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-101-ref.html index 61bac52c..3d21333e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-101-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-101-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-102-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-102-ref.html index 1b519c5f..0328b65 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-102-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-102-ref.html
@@ -7,7 +7,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-103-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-103-ref.html index 17961904..1f4d421 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-103-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-103-ref.html
@@ -7,8 +7,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-104-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-104-ref.html index 7695cbdb..878393c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-104-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/reference/text-transform-upperlower-104-ref.html
@@ -7,8 +7,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-001.html index 1974ef0c..be0dc731 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-001.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-003.html index 9030b0f..33664a3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-003.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-005.html index 5d1d5f1..bdb44e55 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-005.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html index cbe3dde..f99412c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-009.html index 7060852..868e629 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-009.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-010.html index 2d991bb..25aa18ba 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-010.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-011.html index 7bab1f0..a66ef35 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-011.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-014.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-014.html index 5608e79..6fbd05e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-014.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-014.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-016.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-016.html index e164681..2a45c96 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-016.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-016.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-018.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-018.html index 9ca4686..210ced55 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-018.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-018.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-020.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-020.html index 0aa7375c..d46f346 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-020.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-020.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-022.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-022.html index 8930ba8..f8b7489 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-022.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-022.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-024.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-024.html index 4c3c9e2..67a9304 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-024.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-024.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-026.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-026.html index fd9e38b9..76999c2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-026.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-026.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-028.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-028.html index 8785e2e..b2259705 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-028.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-028.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-030.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-030.html index 8773ea7..1924d3e3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-030.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-capitalize-030.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-001.html index 6e390a0..a30be4e8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-001.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-002.html index 0c42526..e82a967 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-002.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-003.html index df727cff..8422a9a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-003.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html index 837c5f6..e686383 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-005.html index 12083ba..d8164b6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-005.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-006.html index 5876dfeb..c4d607a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-006.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-007.html index ad8a699a..1d3e591 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-007.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-008.html index 94357691..09e80791 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-008.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-009.html index b44c394..dcb0896 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-009.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-010.html index c2dc440..e36491a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-010.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-011.html index bc12940..50dbbcd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-011.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-012.html index 7b3c6177..8e47999 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-012.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-014.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-014.html index a1dc9f1..3e391da8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-014.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-014.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-015.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-015.html index 60d1db89..a06cdf5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-015.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-015.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-016.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-016.html index ec256af..e6cd03f6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-016.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-016.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-017.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-017.html index 7eb202d..821fcf9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-017.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-017.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-018.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-018.html index c944829..0f4d314c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-018.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-018.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-019.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-019.html index 6f80c22..683336e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-019.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-019.html
@@ -11,8 +11,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-020.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-020.html index 05c7a77..42b3906f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-020.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-020.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-021.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-021.html index 47a70d4..4a4718f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-021.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-021.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-022.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-022.html index 28168b45..2f89f31 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-022.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-022.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-023.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-023.html index a807c4b..e92ca82 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-023.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-023.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-024.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-024.html index 1ab8262..ec3312b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-024.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-024.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-025.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-025.html index 90134e3..4974553e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-025.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-025.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-026.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-026.html index 3bc9c56c..b44d892 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-026.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-026.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-027.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-027.html index 395e94e..0e48060 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-027.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-027.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-028.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-028.html index 3c1ae9d..0e85b79c7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-028.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-028.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-029.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-029.html index 089a19c..eb56f45 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-029.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-029.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansDeseret-Regular.ttf') format('truetype'); + src: url('/fonts/noto/NotoSansDeseret-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-030.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-030.html index c0dd75c..554aa9e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-030.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-030.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-031.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-031.html index 004b08e..0393ae5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-031.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-031.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); + src: url('/fonts/NotoSansGeorgian-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-033.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-033.html index cc27405d..6cd59895 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-033.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-033.html
@@ -12,7 +12,7 @@ /* the CSS below is not part of the test */ @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-034.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-034.html index 7327573..2fa234e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-034.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-034.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/NotoSansArmenian-Regular') format('truetype'); + src: url('/fonts/NotoSansArmenian-Regular') format('truetype'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-035.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-035.html index ec26a58..cc5e984 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-035.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-035.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-038.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-038.html index 3e5d712..462ed6a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-038.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-038.html
@@ -11,7 +11,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-039.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-039.html index 2f60ecd4..d15c225d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-039.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-039.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-040.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-040.html index 03ac309..b430764c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-040.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-040.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-041.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-041.html index 4fad974..dc24950 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-041.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-041.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-042.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-042.html index 53d42ed..d4d9225 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-042.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-042.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-043.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-043.html index 3fcb21d..5f5d325 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-043.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-043.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-101.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-101.html index 702c277..46b48a920 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-101.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-101.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-102.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-102.html index b9ba213..d36bc36 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-102.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-102.html
@@ -10,7 +10,7 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/DoulosSIL-R.woff') format('woff'); + src: url('/fonts/DoulosSIL-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-103.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-103.html index ed940c5..ba669c02 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-103.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-103.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-104.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-104.html index 29ba897..9d5c269 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-104.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-text/text-transform/text-transform-upperlower-104.html
@@ -10,8 +10,8 @@ <style type='text/css'> @font-face { font-family: 'webfont'; - src: url('../../fonts/GentiumPlus-R.woff2') format('woff2'), - url('../../fonts/GentiumPlus-R.woff') format('woff'); + src: url('/fonts/GentiumPlus-R.woff2') format('woff2'), + url('/fonts/GentiumPlus-R.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-001.html index e4dda03..d8215ad2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-002.html index 3d500003b..73bc465 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-003.html index d923b3d..596892d6c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-004.html index e6d6b88..ddd5229 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-005.html index ac71d49..a9afc3b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-006.html index d45c3314..2034885 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-007.html index 32b357a..4885f68 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-008.html index 20e176b..da43f26 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-009.html index 31835040..c65fb45 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-010.html index fb1f052c..67d3fb99 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-011.html index df49cded..a3423501 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-embed-011.html
@@ -17,7 +17,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-001.html index b9cc6e2..335791b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-002.html index b34742f..f321cec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-003.html index dc4162a..c678cd6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-004.html index 0c956d2..5a6a9410 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-005.html index 5912cb4..5ea947d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-006.html index cf34cee8..271845c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-007.html index cc0a516..d9b2e9f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-008.html index 32fcc51..6bcf0929 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-009.html index 710f0e9c..4b762c3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-010.html index c4e3faf..eb62623 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-011.html index 5baf7ff..c636cc2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-011.html
@@ -17,7 +17,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-001.html index d683abf..f539fbaa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-002.html index ceb176a08..80a19c4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-003.html index 3c41503..2252895 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-004.html index 2750e53..c2597f7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-005.html index 749b943..b92e16a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-006.html index 963a735..dbf1e29f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-007.html index 9b0b137..3cb763f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-008.html index abc29650..3f93984 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-009.html index 5de0b71b..d149762 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-010.html index a6a6db29..9e6db40 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-011.html index 9cafa11..331ce20 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-011.html
@@ -17,7 +17,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-012.html index 82fdb8a..2e93f34 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-isolate-override-012.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-001.html index 9fe992d..59479c53 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-002.html index 1ff7ef9..054142fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-003.html index 1d30369..de3d48fa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-004.html index ad94f57..365e21bd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-005.html index 7008f84..10d262221 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-006.html index 8fa9e1b..20d44b7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-007.html index 69390ce..0bb38f9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-008.html index 3b1587f..fe58f3f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-009.html index 3ee24824..72d7350 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-010.html index 37684ab1..4300140 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-011.html index c56fa178..54bca7e23 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-normal-011.html
@@ -17,7 +17,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-001.html index fae4b1c..985ecc6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-002.html index dfea017..a22d4815 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-003.html index a5e5eb3..fe8f320 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-004.html index 7413be1..cd607c1c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-005.html index 69a272b..863ad05 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-006.html index ac0725d0..77d4aad 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-007.html index add0289d..5ad916d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-008.html index 55b7e2f1..891dfc2e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-009.html index 08cce9c..936cdf4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-010.html index 1d20bc2..1b6c7a5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-011.html index c7c8fe9..3ae442f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-011.html
@@ -17,7 +17,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-012.html index 9545c0e8..8d353765 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-override-012.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-001.html index e4ebe685..afb57d2f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-002.html index e0256e0..dc44a46 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-003.html index 05e9e94e..2afb754 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-004.html index b51f6c5..a5b4603 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-005.html index 5f6ac25..75e0337 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-006.html index b7142b3..d48c948 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-007.html index c455fad..0a15eee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-008.html index be4b519b..3f878ea 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-009.html index af90f9e2..68983b2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-010.html index 36a1a49..c1e955e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-011.html index aef7e931..df75c33 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-plaintext-011.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-table-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-table-001.html index 5e2ae76..860a4b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-table-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-table-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-001.html index ede070c..1f25284 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-002.html index 91e4e392..7360cde 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-003.html index c70a544..f7758c7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-004.html index 2015288..f8b8788 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-005.html index 5eb8c4b..3b3a7a2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-005.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-006.html index 386e834..440918cc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-007.html index b04f068..db4d014 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-007.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-008.html index 83df25ba..290488a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-008.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-009.html index 0588d4c5..5c03c76 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-009.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-010.html index b1e5589..f850eb6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/bidi-unset-010.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-001.html index 75ba1d6f..260c19fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-002.html index 7905f11..ad1c4ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-003.html index 2ecc7c3..aedb9d3e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-embed-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-001.html index 427b732..72fbce8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-002.html index 5c97ad1..558c9af 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-003.html index 5ec9ac2..94744d49 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-004.html index 93ffb527..46205ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-001.html index dfafd93..0c126dd9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-002.html index 6373504..8422136 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-003.html index dea6ce3..2e6122a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-004.html index 86c2a1f..3bb9e84 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-override-isolate-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-001.html index e489388..22b6340 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-001.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-002.html index 40e99775..41c0a1b6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-002.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-003.html index cb24704..3b31280b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-003.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-004.html index 0b7d26c9..9586a1c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-004.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-005.html index b17a088fc..3bd4d17a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-005.html
@@ -15,7 +15,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-006.html index 7eb57e3..ab966ad 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/block-plaintext-006.html
@@ -16,7 +16,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-001.html index dd27d55..24723ad 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-002.html index 7565090..fa9d254c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-003.html index 332e8557..a8e1cb77 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-004.html index 6986f139..32f96a1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-005.html index a321f50..cd46ded 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-006.html index a01098cd..c111084b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-007.html index 507a293..b6117e48 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-008.html index f30ca537..d38b1b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-009.html index 15f64e2..146789a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-010.html index 5afeafb..2643873 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-011.html index a550d58..e1a01b4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-embed-011.html
@@ -14,7 +14,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-001.html index 8289b29..40f9409 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-002.html index b77f5e9..c1abbd01 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-003.html index 2015852..3ea23c5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-004.html index c6c0d41..4e8674fa9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-005.html index a06066f1..7e4471c9b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-006.html index 972065b6..eb4a12bd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-007.html index 9526b30..36c3649 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-008.html index 7e70a58f..f9e21cdd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-009.html index 47aff59..77e72e7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-010.html index 2098bfe..5e436f8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-011.html index 2ac954b..5fc0714 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-011.html
@@ -14,7 +14,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-001.html index a0e036b..b9d066a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-002.html index 59ed5ca..56b9e7ec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-003.html index 42c6f91..ec28350 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-004.html index 26fd5e8..8b02488 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-005.html index fc3fdce2..03db742 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-006.html index 0513660..2f42138 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-007.html index 1dba58c..379a20b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-008.html index 6875e74..12500526 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-009.html index fa31d87e..af9a6eb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-010.html index 42e06266..3bf9c69 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-011.html index 2c2bba4..c2e4d6b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-011.html
@@ -14,7 +14,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-012.html index 9d87b0a..341913d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-isolate-override-012.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-001.html index bec5010..a57042f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-002.html index 7933e86..6ae0ba13 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-003.html index 27437f0..1af0f83d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-004.html index 948a41a..deb58776 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-005.html index a336d2f..c1419547 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-006.html index 054fc91..ddd877b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-007.html index 2f5dd35..cd4508fd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-008.html index 8fb21eb..74e3609 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-009.html index 73e3092..97b8591 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-010.html index eb05ec1..cc9a249 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-011.html index 0fe2b2b..295e577 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-normal-011.html
@@ -14,7 +14,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-001.html index 9a5099d..ba01516 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-002.html index d0b0b4de..d147bfb1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-003.html index a1d620e..3b200b3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-004.html index 094f1ef..9a6c9604 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-005.html index 5687df97..980becac 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-006.html index f06ac1e..f40ad50 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-007.html index b8c88082..4d70ebf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-008.html index b90409a..a92c6ba 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-009.html index 419b5acc..1cf791a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-010.html index c378844e..654e575 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-011.html index 7d2b6dd..19589173 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-011.html
@@ -14,7 +14,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-012.html index 577e7c5..9bb8ef8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-012.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-override-012.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-001.html index 5595b2b..932d7461 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-002.html index 9b75b3b0..63e4a61 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-003.html index 0a10398..82457f38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-004.html index 1edd969..e91be7c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-005.html index 0b8adb2..4301099 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-006.html index 91ef16b6..32b211e9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-007.html index 44067d7..7b5d23bb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-008.html index 8215b3e..6201cbe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-009.html index e202027..a2885a191 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-010.html index 8374e98..2b814fc 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-011.html index 379265d..91115a5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-011.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-plaintext-011.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-table-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-table-001.html index 0db3f3a..076e17e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-table-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-table-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-001.html index d145814..ca8ead03 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-002.html index 465cc881..8b52582d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-003.html index be2334c..364c85b6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-004.html index 2237222..3c8ab54 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-005.html index 0b0e81c3..877572e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-006.html index 63c1ebc..84e87ff2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-007.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-007.html index ec2cfc8..10f74193 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-007.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-007.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-008.html index acaeb58..6e86d03 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-008.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-008.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-009.html index e7214ffd..bee3e7eb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-009.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-009.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-010.html index 4fc4682..f80faf1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-010.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/bidi-unset-010.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-001.html index f17115ee..52e9244 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-002.html index 4f5e2ae..e3ab7a3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-003.html index 1141095e..1f0f8a9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-embed-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-001.html index 006abf29..61cf4f6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-002.html index baa36bb9..3ac969b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-003.html index ccab072..96131d4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-004.html index 96e2fef8e..3ae03a68 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-001.html index d0aebce..9e132ce8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-002.html index 7491bfc2..c3e50f5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-003.html index 95e0471..fc8da85 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-004.html index 0525d68e..8de24ce 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-override-isolate-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-001.html index a2031fd..2c2129fe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-001.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-002.html index ef14981..ebc0b8f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-002.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-002.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-003.html index 2b93c79..5f9457d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-003.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-003.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-004.html index e80be5d..de5c09a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-004.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-004.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-005.html index ecc665c2..014cbf01 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-005.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-005.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-006.html index 001bf14..8a68e2b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/block-plaintext-006.html
@@ -13,7 +13,7 @@ input { margin: 5px; } @font-face { font-family: 'ezra_silregular'; - src: url('support/sileot-webfont.woff') format('woff'); + src: url('/fonts/sileot-webfont.woff') format('woff'); font-weight: normal; font-style: normal; }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/sileot-webfont.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/sileot-webfont.woff deleted file mode 100644 index 81547578..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/sileot-webfont.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/tcu-font.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/tcu-font.woff deleted file mode 100644 index c880aaab..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/support/tcu-font.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/text-combine-upright-value-single-character.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/text-combine-upright-value-single-character.html index d25602d7..aeda4e4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/text-combine-upright-value-single-character.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/reference/text-combine-upright-value-single-character.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: tcu-font; - src: url("support/tcu-font.woff"); + src: url("/fonts/tcu-font.woff"); } .test {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSFWOrientationTest.otf b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSFWOrientationTest.otf deleted file mode 100644 index f9cbd2b..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSFWOrientationTest.otf +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSHWOrientationTest.otf b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSHWOrientationTest.otf deleted file mode 100644 index 84ad57b..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/CSSHWOrientationTest.otf +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/LICENSE b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/LICENSE deleted file mode 100644 index ac5f0b04..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/LICENSE +++ /dev/null
@@ -1,31 +0,0 @@ -CSS Half-Width Orientation Test and CSS Full-Width Orientation Test are released under the SIL Open Font License - please read it carefully and do not download the fonts unless you agree to the the terms of the license: -Copyright © 2013 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Names CSS Half-Width Orientation Test and CSS Full-Width Orientation Test -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. -"Reserved Font Name" refers to any names specified as such after the copyright statement(s). -"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). -"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. -"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/README.md b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/README.md deleted file mode 100644 index 61f68705..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/adobe-fonts/README.md +++ /dev/null
@@ -1,43 +0,0 @@ -CSS Orientation Test -==== - -Overview ----- -CSS Orientation Test are special-purpose OpenType fonts. This open source project provides all of the source files -that were used to build these OpenType fonts by using the AFDKO *makeotf* tool. - -Getting Involved ----- -Send suggestions for changes to the CSS Orientation Test project maintainer, lunde@adobe.com, for consideration. - -Building -==== - -Pre-built font binaries ----- -The installable font resources (font binaries) are not part of the source files. -They are available at https://github.com/adobe-fonts/css-orientation-test/ -The latest version of the font binaries is 1.005 (April 4th 2015). - - -Requirements ----- - -For building binary font files from source, installation of the -[Adobe Font Development Kit for OpenType](http://www.adobe.com/devnet/opentype/afdko.html) (AFDKO) -is necessary. The AFDKO tools are widely used for font development today, and are part of most font editor applications. - -Building the fonts ----- - -The key to building OpenType fonts is *makeotf*, which is part of AFDKO. Information and usage instructions can be found -by executing *makeotf -h*. - -In this repository, all necessary files are in place for building the OpenType fonts. For example, build a binary OTF font -for the full-width version like this, which also includes a post-process for inserting a "stub" 'DSIG' table: - - % makeotf -f cidfont.ps -r -ch UnicodeAll-UTF32-H - % sfntedit -a DSIG=DSIG.bin CSSFWOrientationTest.otf - % sfntedit -f CSSFWOrientationTest.otf - -That is all.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/mplus-1p-regular.woff deleted file mode 100644 index 42cfff6..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/mplus-1p-regular.woff +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001-ref.html index aa085fa..e1b7b34 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001-ref.html
@@ -8,7 +8,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .vrl { border:solid;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001.html index 88a3430..1cf8a7d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-line-breaking-rules-001.html
@@ -11,7 +11,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .vrl { border:solid;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-value-all-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-value-all-001.html index cd6f35c..a0e85ec 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-value-all-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-combine-upright-value-all-001.html
@@ -11,7 +11,7 @@ <style> @font-face { font-family: tcu-font; - src: url("support/tcu-font.woff"); + src: url("/fonts/tcu-font.woff"); } .test {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-010.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-010.xht index 97a400ff..39da5561 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-010.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-010.xht
@@ -12,7 +12,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); } div
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-011.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-011.xht index 931f42c..fb32e97 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-011.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-011.xht
@@ -17,7 +17,7 @@ @font-face { font-family: "CSS Full-Width Orientation Test"; - src: url("support/adobe-fonts/CSSFWOrientationTest.otf") format("opentype"); + src: url("/fonts/adobe-fonts/CSSFWOrientationTest.otf") format("opentype"); } div
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-012.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-012.xht index 52ab5239..59d815a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-012.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-012.xht
@@ -17,7 +17,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); } div
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-slr-015.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-slr-015.xht index b26e539..daa1705 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-slr-015.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-slr-015.xht
@@ -16,7 +16,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-srl-016-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-srl-016-ref.xht index 342f6ff..bae223a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-srl-016-ref.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-srl-016-ref.xht
@@ -12,7 +12,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100-ref.html index 0b9ba9b1..26e2cb7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100.html index 35052c6..9e577f1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vlr-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-002.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-002.xht index c8f1021..506b9d7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-002.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-002.xht
@@ -12,7 +12,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100-ref.html index e6e8981..77de672 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100.html index 38bc406..183217dd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-mixed-vrl-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001.html index 4194c8a..cc86fd4a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001a.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001a.html index 1cfee2e7..7c99433 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001a.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001a.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001b.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001b.html index af220a0..3801352 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001b.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001b.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001c.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001c.html index bf96879..956dd9d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001c.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001c.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001d.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001d.html index d24f8300..50298281 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001d.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001d.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001e.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001e.html index c4d8c7b..de1bfaa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001e.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001e.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001f.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001f.html index 78ae052..63711f90 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001f.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001f.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001g.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001g.html index c48f6abe..fa577bd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001g.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001g.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001h.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001h.html index ed7c107..79953b8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001h.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001h.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001i.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001i.html index ee03d52..aae690b5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001i.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001i.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001j.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001j.html index 2faaf02..645f57a9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001j.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001j.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001k.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001k.html index 3f3301a..aa48f86 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001k.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001k.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001l.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001l.html index 61f9c878..7a3a413 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001l.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001l.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001m.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001m.html index c9da49b..f34a082 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001m.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001m.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001n.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001n.html index 692e230..89af46a6 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001n.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001n.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001o.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001o.html index 81077d1e..e7d9dd7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001o.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001o.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001p.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001p.html index da71fecc..7f0532fd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001p.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001p.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001q.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001q.html index e0bcb08..f0fd901 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001q.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-script-001q.html
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-slr-019.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-slr-019.xht index 6ab03e7..edaefc7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-slr-019.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-slr-019.xht
@@ -16,7 +16,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100-ref.html index 9710ebb..5b186ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100.html index 571d7b9..a3b73bb2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vlr-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100-ref.html index 7240ae1..255efc8 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100.html index 91cb00f..52355db1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-sideways-vrl-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-slr-017.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-slr-017.xht index e7310d86..a668d13d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-slr-017.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-slr-017.xht
@@ -16,7 +16,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); /* filesize: 803300 bytes (784.5 KBytes) */ }
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100-ref.html index 8769c6be..b99ca51 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100.html index 34ccb72..a0c59c4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vlr-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-lr;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-002.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-002.xht index 307ecee..511854d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-002.xht +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-002.xht
@@ -12,7 +12,7 @@ @font-face { font-family: "mplus-1p-regular"; - src: url("support/mplus-1p-regular.woff") format("woff"); + src: url("/fonts/mplus-1p-regular.woff") format("woff"); } div {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100-ref.html index 3621f93..350526f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100-ref.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100-ref.html
@@ -5,7 +5,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100.html index 9a2961f..566d046 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/text-orientation-upright-vrl-100.html
@@ -7,7 +7,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { writing-mode: vertical-rl;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-ref.ejs b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-ref.ejs index 89cd382d..f4bc801a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-ref.ejs +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-ref.ejs
@@ -9,7 +9,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } html { <%= prefix %>writing-mode: <%= writingMode %>;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-script.ejs b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-script.ejs index dd96af25..5366366 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-script.ejs +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/tools/generators/text-orientation-script.ejs
@@ -10,7 +10,7 @@ <style> @font-face { font-family: "orientation"; - src: url("support/adobe-fonts/CSSHWOrientationTest.otf"); + src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf"); } .test { font: 16px/1 "orientation";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade-expected.txt new file mode 100644 index 0000000..1211348 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +FAIL Upgrading an element directly (example from the spec) customElements.upgrade is not a function +FAIL Two elements as children of the upgraded node customElements.upgrade is not a function +FAIL Two elements as descendants of the upgraded node customElements.upgrade is not a function +FAIL Two elements as shadow-including descendants (and not descendants) of the upgraded node customElements.upgrade is not a function +FAIL Elements inside a template contents DocumentFragment node customElements.upgrade is not a function +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade.html b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade.html new file mode 100644 index 0000000..3a72dbd --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/upgrade.html
@@ -0,0 +1,154 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>customElements.upgrade()</title> +<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-customelementregistry-upgrade"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +"use strict"; + +test(() => { + const el = document.createElement("spider-man"); + + class SpiderMan extends HTMLElement {} + customElements.define("spider-man", SpiderMan); + + assert_false(el instanceof SpiderMan, "The element must not yet be upgraded"); + + customElements.upgrade(el); + assert_true(el instanceof SpiderMan, "The element must now be upgraded"); +}, "Upgrading an element directly (example from the spec)"); + +test(() => { + const el1 = document.createElement("element-a-1"); + const el2 = document.createElement("element-a-2"); + const container = document.createElement("div"); + container.appendChild(el1); + container.appendChild(el2); + + class Element1 extends HTMLElement {} + class Element2 extends HTMLElement {} + customElements.define("element-a-1", Element1); + customElements.define("element-a-2", Element2); + + assert_false(el1 instanceof Element1, "element 1 must not yet be upgraded"); + assert_false(el2 instanceof Element2, "element 2 must not yet be upgraded"); + + customElements.upgrade(container); + assert_true(el1 instanceof Element1, "element 1 must now be upgraded"); + assert_true(el2 instanceof Element2, "element 2 must now be upgraded"); +}, "Two elements as children of the upgraded node"); + +test(() => { + const el1 = document.createElement("element-b-1"); + const el2 = document.createElement("element-b-2"); + const container = document.createElement("div"); + const subContainer = document.createElement("span"); + const subSubContainer = document.createElement("span"); + container.appendChild(subContainer); + subContainer.appendChild(el1); + subContainer.appendChild(subSubContainer); + subSubContainer.appendChild(el2); + + class Element1 extends HTMLElement {} + class Element2 extends HTMLElement {} + customElements.define("element-b-1", Element1); + customElements.define("element-b-2", Element2); + + assert_false(el1 instanceof Element1, "element 1 must not yet be upgraded"); + assert_false(el2 instanceof Element2, "element 2 must not yet be upgraded"); + + customElements.upgrade(container); + assert_true(el1 instanceof Element1, "element 1 must now be upgraded"); + assert_true(el2 instanceof Element2, "element 2 must now be upgraded"); +}, "Two elements as descendants of the upgraded node"); + +test(() => { + const el1 = document.createElement("element-d-1"); + const el2 = document.createElement("element-d-2"); + + const container = document.createElement("div"); + const subContainer = document.createElement("span"); + subContainer.attachShadow({ mode: "open" }); + const subSubContainer = document.createElement("span"); + subSubContainer.attachShadow({ mode: "open" }); + + container.appendChild(subContainer); + subContainer.shadowRoot.appendChild(el1); + subContainer.shadowRoot.appendChild(subSubContainer); + subSubContainer.shadowRoot.appendChild(el2); + + class Element1 extends HTMLElement {} + class Element2 extends HTMLElement {} + customElements.define("element-d-1", Element1); + customElements.define("element-d-2", Element2); + + assert_false(el1 instanceof Element1, "element 1 must not yet be upgraded"); + assert_false(el2 instanceof Element2, "element 2 must not yet be upgraded"); + + customElements.upgrade(container); + assert_true(el1 instanceof Element1, "element 1 must now be upgraded"); + assert_true(el2 instanceof Element2, "element 2 must now be upgraded"); +}, "Two elements as shadow-including descendants (and not descendants) of the upgraded node"); + +test(() => { + const template = document.createElement("template"); + template.innerHTML = ` + <div> + <element-c-1></element-c-1> + <element-c-2> + <element-c-3></element-c-3> + <span> + <element-c-4></element-c-4> + </span> + </element-c-2> + </div> + <element-c-5></element-c-5> + `; + + // This code feels repetitive but I tried to make it use loops and it became harder to see the correctness. + + const el1 = template.content.querySelector("element-c-1"); + const el2 = template.content.querySelector("element-c-2"); + const el3 = template.content.querySelector("element-c-3"); + const el4 = template.content.querySelector("element-c-4"); + const el5 = template.content.querySelector("element-c-5"); + + class Element1 extends HTMLElement {} + class Element2 extends HTMLElement {} + class Element3 extends HTMLElement {} + class Element4 extends HTMLElement {} + class Element5 extends HTMLElement {} + + customElements.define("element-c-1", Element1); + customElements.define("element-c-2", Element2); + customElements.define("element-c-3", Element3); + customElements.define("element-c-4", Element4); + customElements.define("element-c-5", Element5); + + assert_false(el1 instanceof Element1, "element 1 must not yet be upgraded"); + assert_false(el2 instanceof Element2, "element 2 must not yet be upgraded"); + assert_false(el3 instanceof Element3, "element 3 must not yet be upgraded"); + assert_false(el4 instanceof Element4, "element 4 must not yet be upgraded"); + assert_false(el5 instanceof Element5, "element 5 must not yet be upgraded"); + + customElements.upgrade(template); + + assert_false(el1 instanceof Element1, "element 1 must not yet be upgraded despite upgrading the template"); + assert_false(el2 instanceof Element2, "element 2 must not yet be upgraded despite upgrading the template"); + assert_false(el3 instanceof Element3, "element 3 must not yet be upgraded despite upgrading the template"); + assert_false(el4 instanceof Element4, "element 4 must not yet be upgraded despite upgrading the template"); + assert_false(el5 instanceof Element5, "element 5 must not yet be upgraded despite upgrading the template"); + + customElements.upgrade(template.content); + + assert_true(el1 instanceof Element1, "element 1 must now be upgraded"); + assert_true(el2 instanceof Element2, "element 2 must now be upgraded"); + assert_true(el3 instanceof Element3, "element 3 must now be upgraded"); + assert_true(el4 instanceof Element4, "element 4 must now be upgraded"); + assert_true(el5 instanceof Element5, "element 5 must now be upgraded"); +}, "Elements inside a template contents DocumentFragment node"); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/support/AD.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/AD.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/support/AD.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/AD.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/LICENSE b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/LICENSE similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/LICENSE rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/LICENSE
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/README b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/README similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/README rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/README
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-ascii.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-ascii.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-ascii.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-ascii.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-bold.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-bold.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-bold.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-bold.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-bolditalic.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-bolditalic.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-bolditalic.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-bolditalic.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-italic.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-italic.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-italic.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-italic.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-regular.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-regular.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-basic-regular.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-basic-regular.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-fallback.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-fallback.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-fallback.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-fallback.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-bold.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-bold.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-bold.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-bold.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyA.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyA.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyA.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyA.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyB.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyB.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyB.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyB.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyC.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyC.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname-funkyC.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname-funkyC.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-familyname.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-familyname.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-verify.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-verify.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-verify.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-verify.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-100.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-100.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-100.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-100.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w1.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w1.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w1.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w1.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w4.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w4.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w4.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w4.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w7.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w7.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w7.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w7.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w9.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w9.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-1479-w9.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-1479-w9.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-15-w1.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-15-w1.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-15-w1.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-15-w1.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-15-w5.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-15-w5.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-15-w5.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-15-w5.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-200.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-200.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-200.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-200.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-24-w2.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-24-w2.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-24-w2.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-24-w2.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-24-w4.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-24-w4.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-24-w4.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-24-w4.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w2.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w2.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w2.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w2.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w5.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w5.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w5.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w5.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w6.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w6.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w6.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w6.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w9.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w9.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-2569-w9.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-2569-w9.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w2.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w2.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w2.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w2.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w5.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w5.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w5.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w5.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w8.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w8.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-258-w8.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-258-w8.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-300.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-300.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-300.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-300.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w3.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w3.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w3.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w3.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w5.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w5.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w5.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w5.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w8.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w8.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w8.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w8.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w9.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w9.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-3589-w9.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-3589-w9.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-400.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-400.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-400.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-400.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-47-w4.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-47-w4.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-47-w4.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-47-w4.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-47-w7.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-47-w7.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-47-w7.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-47-w7.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-500.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-500.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-500.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-500.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-600.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-600.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-600.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-600.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-700.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-700.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-700.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-700.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-800.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-800.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-800.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-800.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-900.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-900.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-900.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-900.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w1.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w1.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w1.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w1.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w2.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w2.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w2.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w2.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w3.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w3.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w3.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w3.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w4.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w4.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w4.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w4.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w5.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w5.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w5.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w5.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w6.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w6.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w6.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w6.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w7.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w7.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w7.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w7.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w8.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w8.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w8.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w8.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w9.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w9.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights-full-w9.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights-full-w9.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/CSSTest/csstest-weights.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CSSTest/csstest-weights.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/resources/CanvasTest.ttf.sub.headers b/third_party/WebKit/LayoutTests/external/wpt/fonts/CanvasTest.ttf.sub.headers similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/preload/resources/CanvasTest.ttf.sub.headers rename to third_party/WebKit/LayoutTests/external/wpt/fonts/CanvasTest.ttf.sub.headers
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/support/GentiumPlus-R.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/GentiumPlus-R.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-text/i18n/support/GentiumPlus-R.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/GentiumPlus-R.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/support/Revalia.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/Revalia.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/support/Revalia.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/Revalia.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/CSSFWOrientationTest.otf b/third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/CSSFWOrientationTest.otf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/CSSFWOrientationTest.otf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/CSSFWOrientationTest.otf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/CSSHWOrientationTest.otf b/third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/CSSHWOrientationTest.otf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/CSSHWOrientationTest.otf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/CSSHWOrientationTest.otf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/LICENSE b/third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/LICENSE similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/LICENSE rename to third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/LICENSE
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/README.md b/third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/README.md similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/adobe-fonts/README.md rename to third_party/WebKit/LayoutTests/external/wpt/fonts/adobe-fonts/README.md
diff --git "a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_Ahem\041.TTF" "b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_Ahem\041.TTF" similarity index 100% rename from "third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_Ahem\041.TTF" rename to "third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_Ahem\041.TTF" Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_MissingItalicOblique.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_MissingNormal.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_MissingNormal.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_MissingNormal.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_MissingNormal.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_SmallCaps.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_SmallCaps.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_SmallCaps.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_SmallCaps.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_WhiteSpace.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_WhiteSpace.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_WhiteSpace.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_WhiteSpace.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_cursive.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_cursive.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_cursive.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_cursive.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_default.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_default.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_default.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_default.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_fantasy.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_fantasy.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_fantasy.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_fantasy.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_inherit.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_inherit.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_inherit.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_inherit.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_initial.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_initial.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_initial.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_initial.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_monospace.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_monospace.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_monospace.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_monospace.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_sans-serif.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_sans-serif.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_sans-serif.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_sans-serif.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_serif.TTF b/third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_serif.TTF similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/ahem-extra/AHEM_serif.TTF rename to third_party/WebKit/LayoutTests/external/wpt/fonts/ahem-extra/AHEM_serif.TTF Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-text/support/mplus-1p-regular.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/mplus-1p-regular.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-text/support/mplus-1p-regular.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/mplus-1p-regular.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/README b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/README similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansAdlam-hinted/README rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansAdlam-hinted/README
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/README b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/README similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/noto/NotoSansCypriot-hinted/README rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansCypriot-hinted/README
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/fonts/NotoSansDeseret-Regular.ttf b/third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansDeseret-Regular.ttf similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/fonts/NotoSansDeseret-Regular.ttf rename to third_party/WebKit/LayoutTests/external/wpt/fonts/noto/NotoSansDeseret-Regular.ttf Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/sileot-webfont.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/sileot-webfont.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/sileot-webfont.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/sileot-webfont.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/tcu-font.woff b/third_party/WebKit/LayoutTests/external/wpt/fonts/tcu-font.woff similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/css/css-writing-modes/support/tcu-font.woff rename to third_party/WebKit/LayoutTests/external/wpt/fonts/tcu-font.woff Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html index 9680b875..dd98691 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 66b7832e..45ee97f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html index 5ea2518..b479057 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html index 46ef9b7..08d45f2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html index 1694ed00..651d31c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor.https.html index 6259638..3319c0280 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://wicg.github.io/geolocation-sensor/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <script> runGenericSensorTests(GeolocationSensor);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_insecure_context.html index 6a3a126..6e487cb2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_insecure_context.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_insecure_context.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://wicg.github.io/geolocation-sensor/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <script> runGenericSensorInsecureContext("GeolocationSensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_onerror-manual.https.html index b449346..00d1135b 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_onerror-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/GeolocationSensor_onerror-manual.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://wicg.github.io/geolocation-sensor/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <h2>Precondition</h2> <ol> <li>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/idlharness.https.html index 183b3f8..d674a79f 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-sensor/idlharness.https.html
@@ -28,7 +28,7 @@ promise_test(() => { return Promise.all([ - "/interfaces/generic-sensor.idl", + "/interfaces/sensors.idl", "/interfaces/geolocation-sensor.idl" ].map(fetchText)).then(doTest); }, "Test IDL implementation of Geolocation Sensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-disabled-by-feature-policy.https.html index de4aee2d..5ab2fb4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 3c831bb7..26c5edfa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html index 46473c3a..e76571d60 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy.https.html index 95eee33..d21bd07 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html index ae5a63d1..9626e60 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html index 81cdfdd..8f035222 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/gyroscope/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html index 2ae8117..e821db00 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/gyroscope/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html index f012615..cf330ca 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/gyroscope/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/idlharness.https.html index 39b44c2..ca552a9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/idlharness.https.html
@@ -30,7 +30,7 @@ promise_test(() => { return Promise.all([ "/interfaces/dom.idl", - "/interfaces/generic-sensor.idl", + "/interfaces/sensors.idl", "/interfaces/gyroscope.idl", ].map(fetchText)).then(doTest); }, "Test IDL implementation of Gyroscope Sensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt new file mode 100644 index 0000000..587c981 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree Uncaught Error: assert_equals: expected Element node <input autofocus=""></input> but got Element node <input autofocus=""></input> +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html new file mode 100644 index 0000000..0267f46 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later-but-before.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#autofocusing-a-form-control:-the-autofocus-attribute"> +<link rel="author" title="Domenic Denicola" href="d@domenic.me"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<input autofocus> + +<script> +"use strict"; + +const input1 = document.querySelector("input"); + +const input2 = document.createElement("input"); +input2.autofocus = true; +document.body.prepend(input2); + +step_timeout(() => { + assert_equals(document.activeElement, input1); + assert_not_equals(document.activeElement, input2); + + done(); +}, 100); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later.html new file mode 100644 index 0000000..9ced437f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first-when-later.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>The first autofocus in the document wins, even if elements are inserted later</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#autofocusing-a-form-control:-the-autofocus-attribute"> +<link rel="author" title="Domenic Denicola" href="d@domenic.me"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<input autofocus> + +<script> +"use strict"; + +const input1 = document.querySelector("input"); + +const input2 = document.createElement("input"); +input2.autofocus = true; +document.body.appendChild(input2); + +step_timeout(() => { + assert_equals(document.activeElement, input1); + assert_not_equals(document.activeElement, input2); + + done(); +}, 100); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first.html new file mode 100644 index 0000000..de56cf7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/first.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>The first autofocus in the document wins</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#autofocusing-a-form-control:-the-autofocus-attribute"> +<link rel="author" title="Domenic Denicola" href="d@domenic.me"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<input autofocus> +<input autofocus> + +<script> +"use strict"; + +const [input1, input2] = document.querySelectorAll("input"); + +step_timeout(() => { + assert_equals(document.activeElement, input1); + assert_not_equals(document.activeElement, input2); + + done(); +}, 100); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/not-on-first-task.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/not-on-first-task.html new file mode 100644 index 0000000..50efc17 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/autofocus/not-on-first-task.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>The element is not focused during the initial parsing task</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#autofocusing-a-form-control:-the-autofocus-attribute"> +<link rel="author" title="Domenic Denicola" href="d@domenic.me"> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<input autofocus> +<input autofocus> + +<script> +"use strict"; + +const input = document.querySelector("input"); + +assert_equals(document.activeElement, document.body); +assert_not_equals(document.activeElement, input); + +done(); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/generic-sensor.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/sensors.idl similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/interfaces/generic-sensor.idl rename to third_party/WebKit/LayoutTests/external/wpt/interfaces/sensors.idl
diff --git a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist index d3dc428..7ed377a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist +++ b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist
@@ -90,7 +90,7 @@ AHEM COPY: fonts/Ahem.ttf # None of these are actually Ahem -AHEM COPY: css/fonts/ahem-extra/AHEM_*.TTF +AHEM COPY: fonts/ahem-extra/AHEM_*.TTF # https://github.com/w3c/web-platform-tests/issues/7437 AHEM COPY: css/vendor-imports/mozilla/mozilla-central-reftests/*/Ahem.ttf @@ -379,7 +379,7 @@ SUPPORT-WRONG-DIR: css/*/COPYING SUPPORT-WRONG-DIR: css/*/Makefile SUPPORT-WRONG-DIR: css/*/OWNERS -SUPPORT-WRONG-DIR: css/fonts/* +SUPPORT-WRONG-DIR: fonts/* # The selectors-3 testsuite has a weird build system SUPPORT-WRONG-DIR: css/selectors/* @@ -452,7 +452,7 @@ INDENT TABS: css/css-variables/* INDENT TABS: css/css-writing-modes/* INDENT TABS: css/filter-effects/* -INDENT TABS: css/fonts/* +INDENT TABS: fonts/* INDENT TABS: css/mediaqueries/* INDENT TABS: css/selectors/* INDENT TABS: css/vendor-imports/*
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-disabled-by-feature-policy.https.html index 56a1cc4..3d861c1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html index b5f6798..f6376819 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html index 6cad267..31f83f1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy.https.html index 24e2554b..83e08eb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html index 59dfef5..feb8fecd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html index a3cefc2..496c5281 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/magnetometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html index 45ff584b..74521819 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/magnetometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html index 04b9877..0c823d00 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://www.w3.org/TR/magnetometer/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/idlharness.https.html index f874e19..3ab2bc2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/idlharness.https.html
@@ -31,7 +31,7 @@ promise_test(() => { return Promise.all([ "/interfaces/dom.idl", - "/interfaces/generic-sensor.idl", + "/interfaces/sensors.idl", "/interfaces/magnetometer.idl", ].map(fetchText)).then(doTest); }, "Test IDL implementation of Magnetometer Sensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html index ccefe2e..b3e802ee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 6aed47d..ea416bbb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html index 51bbba1..2fba487 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html index c0b4cc8e..c61c957 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html index 9ce51ab..412a867 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor.https.html index 5e728a6..6fca92d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor.https.html
@@ -6,7 +6,7 @@ <link rel="help" href="https://w3c.github.io/sensors/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_insecure_context.html index 18d41ce..4b71e19 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_insecure_context.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_insecure_context.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://w3c.github.io/sensors/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Note:</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_onerror-manual.https.html index d70ea304..6ea75824 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_onerror-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/OrientationSensor_onerror-manual.https.html
@@ -6,7 +6,7 @@ <link rel="help" href="https://w3c.github.io/sensors/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/generic-sensor/generic-sensor-tests.js"></script> +<script src="/sensors/generic-sensor-tests.js"></script> <div id="log"></div> <h2>Precondition</h2> <ol>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html index 9296af8..e1f4401 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 01b45b0..c1557da 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html index 1bf4119..acd9ca5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html index 7ea2fb5..ca71e3d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html index 6d677bf0..8ed6bde 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html
@@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> -<script src="/generic-sensor/generic-sensor-feature-policy-test.sub.js"></script> +<script src="/sensors/generic-sensor-feature-policy-test.sub.js"></script> <script> "use strict";
diff --git a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/idlharness.https.html index d7658615..d1099b57 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/orientation-sensor/idlharness.https.html
@@ -31,7 +31,7 @@ promise_test(() => { return Promise.all([ "/interfaces/dom.idl", - "/interfaces/generic-sensor.idl", + "/interfaces/sensors.idl", "/interfaces/orientation-sensor.idl", ].map(fetchText)).then(doTest); }, "Test IDL implementation of Orientation Sensor");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https-expected.txt new file mode 100644 index 0000000..9cb986a4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS Must support valid standard URL PMIs +PASS Must not throw on syntactically valid standardized payment method identifiers, even if they are not supported +FAIL Must throw on syntactically invalid standardized payment method identifiers assert_throws: expected RangeError processing invalid standardized PMI "visa,mastercard" function "() => { + const methods = [{ supportedMethods: invalidMethod }]; + new PaymentRequest(methods, defaultDetails); + }" did not throw +PASS Constructor MUST throw if given an invalid URL-based payment method identifier +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https.html b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https.html index ee9e2c0..5f888f03 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/payment-request-ctor-pmi-handling.https.html
@@ -60,6 +60,8 @@ "i488jh6-g18-fck-yb-v7-i", "x-x-t-t-c34-o", "basic-card", + // gets coerced to "basic-card", for compat with old version of spec + ["basic-card"], ]; for (const validMethod of validMethods) { try { @@ -105,6 +107,8 @@ " basic-card ", "this is not supported", " ", + "foo,var", + ["visa","mastercard"], // stringifies to "visa,mastercard" ]; for (const invalidMethod of invalidMethods) { assert_throws( @@ -116,7 +120,7 @@ `expected RangeError processing invalid standardized PMI "${invalidMethod}"` ); } -}); +}, "Must throw on syntactically invalid standardized payment method identifiers"); test(() => { const invalidMethods = [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/payment-request/show-method-optional-promise-resolves-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/payment-request/show-method-optional-promise-resolves-manual.https.html index 44e23b0..777910c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/payment-request/show-method-optional-promise-resolves-manual.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/payment-request/show-method-optional-promise-resolves-manual.https.html
@@ -139,7 +139,7 @@ }); // PaymentDetailsInit -const validDetails = Object.freeze({ +const failDetails = Object.freeze({ displayItems: failPaymentItems, id: "this cannot be changed", modifiers: failModifiers, @@ -156,7 +156,7 @@ function smokeTest() { promise_test(async t => { - const request = new PaymentRequest(validMethods, validDetails); + const request = new PaymentRequest(validMethods, failDetails); await promise_rejects( t, new TypeError(), @@ -178,7 +178,7 @@ const testAssertion = buttonElement.textContent.trim(); buttonElement.disabled = true; promise_test(async t => { - const request = new PaymentRequest(validMethods, validDetails, options); + const request = new PaymentRequest(validMethods, failDetails, options); const detailsPromise = Promise.resolve(details); const acceptPromise = request.show(detailsPromise); assert_equals(request.id, "this cant be changed", "id must never change.");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/link-header-on-subresource-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/preload/link-header-on-subresource-expected.txt new file mode 100644 index 0000000..cca7e5708 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/preload/link-header-on-subresource-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that Link headers on subresources preload resources assert_equals: /preload/resources/CanvasTest.ttf?link-header-on-subresource expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/onload-event-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/preload/onload-event-expected.txt new file mode 100644 index 0000000..3ab26b17 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/preload/onload-event-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that preloaded resources trigger the onload event assert_true: font triggered load event expected true got false +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/preload-with-type-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/preload/preload-with-type-expected.txt new file mode 100644 index 0000000..6559aed --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/preload/preload-with-type-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that preloaded resources with a type attribute trigger the onload event assert_true: font triggered load event expected true got false +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/resources/CanvasTest.ttf b/third_party/WebKit/LayoutTests/external/wpt/preload/resources/CanvasTest.ttf deleted file mode 100644 index 9023592..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/preload/resources/CanvasTest.ttf +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/preload/single-download-preload-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/preload/single-download-preload-expected.txt new file mode 100644 index 0000000..97f91a85 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/preload/single-download-preload-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that preloaded resources are not downloaded again when used assert_equals: resources/CanvasTest.ttf?single-download-preload expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/SensorErrorEvent-constructor.https.html b/third_party/WebKit/LayoutTests/external/wpt/sensors/SensorErrorEvent-constructor.https.html similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/generic-sensor/SensorErrorEvent-constructor.https.html rename to third_party/WebKit/LayoutTests/external/wpt/sensors/SensorErrorEvent-constructor.https.html
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-feature-policy-test.sub.js b/third_party/WebKit/LayoutTests/external/wpt/sensors/generic-sensor-feature-policy-test.sub.js similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-feature-policy-test.sub.js rename to third_party/WebKit/LayoutTests/external/wpt/sensors/generic-sensor-feature-policy-test.sub.js
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js b/third_party/WebKit/LayoutTests/external/wpt/sensors/generic-sensor-tests.js similarity index 100% rename from third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js rename to third_party/WebKit/LayoutTests/external/wpt/sensors/generic-sensor-tests.js
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/sensors/idlharness.https.html similarity index 87% rename from third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.https.html rename to third_party/WebKit/LayoutTests/external/wpt/sensors/idlharness.https.html index 7dd10ce..56208e4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/sensors/idlharness.https.html
@@ -2,7 +2,7 @@ <meta charset="utf-8"> <title>Generic Sensor IDL tests</title> <link rel="author" title="Tobie Langel" href="http://www.codespeaks.com"> -<link rel="help" href="http://www.w3.org/TR/generic-sensor/"> +<link rel="help" href="https://w3c.github.io/sensors"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> @@ -27,7 +27,7 @@ promise_test(() => { return Promise.all(["/interfaces/dom.idl", - "/interfaces/generic-sensor.idl"].map(fetchText)) + "/interfaces/sensors.idl"].map(fetchText)) .then(doTest); }, "Test IDL implementation of Generic Sensor"); </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-insertDTMF.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-insertDTMF.https-expected.txt index f117d7b..045bd48 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-insertDTMF.https-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-insertDTMF.https-expected.txt
@@ -4,6 +4,6 @@ FAIL insertDTMF() should throw InvalidStateError if transceiver is stopped pc.addTransceiver is not a function FAIL insertDTMF() should throw InvalidStateError if transceiver.currentDirection is recvonly pc.addTransceiver is not a function FAIL insertDTMF() should throw InvalidStateError if transceiver.currentDirection is inactive pc.addTransceiver is not a function -FAIL insertDTMF() should set toneBuffer to provided tones normalized, with old tones overridden assert_equals: expected "123" but got "23" +PASS insertDTMF() should set toneBuffer to provided tones normalized, with old tones overridden Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-ontonechange.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-ontonechange.https-expected.txt index 4bc8c18..c2dde3c 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-ontonechange.https-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCDTMFSender-ontonechange.https-expected.txt
@@ -7,7 +7,7 @@ PASS insertDTMF with comma should delay next tonechange event for a constant 2000ms FAIL insertDTMF() with transceiver stopped in the middle should stop future tonechange events from firing assert_unreached: Unexpected promise rejection: TypeError: pc.getTransceivers is not a function Reached unreachable code PASS Calling insertDTMF() in the middle of tonechange events should cause future tonechanges to be updated to new tones -FAIL Calling insertDTMF() multiple times in the middle of tonechange events should cause future tonechanges to be updated the last provided tones assert_equals: Expect current event.tone to be 3 expected "3" but got "1" +PASS Calling insertDTMF() multiple times in the middle of tonechange events should cause future tonechanges to be updated the last provided tones PASS Calling insertDTMF('') in the middle of tonechange events should stop future tonechange events from firing FAIL Setting transceiver.currentDirection to recvonly in the middle of tonechange events should stop future tonechange events from firing pc.addTransceiver is not a function Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html b/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html index cc76045..2dccc3e1 100644 --- a/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html +++ b/third_party/WebKit/LayoutTests/fast/css/content-property-quote-types.html
@@ -40,23 +40,23 @@ <script src="../../resources/testharnessreport.js"></script> <script> test(function () { - assert_equals(getComputedStyle(simple_quotes).content, ''); + assert_equals(getComputedStyle(simple_quotes).content, 'normal'); assert_equals(getComputedStyle(simple_quotes, 'before').content, 'open-quote "quoted A" close-quote'); - assert_equals(getComputedStyle(simple_custom_quotes).content, ''); + assert_equals(getComputedStyle(simple_custom_quotes).content, 'normal'); assert_equals(getComputedStyle(simple_custom_quotes, 'before').content, 'open-quote "quoted A" close-quote'); }, "Check that the content attribute includes quote keywords when quotes are used"); test(function () { - assert_equals(getComputedStyle(complex_quotes).content, ''); + assert_equals(getComputedStyle(complex_quotes).content, 'normal'); assert_equals(getComputedStyle(complex_quotes, 'before').content, 'open-quote "quoted A" open-quote "quoted B" no-close-quote close-quote'); - assert_equals(getComputedStyle(complex_custom_quotes).content, ''); + assert_equals(getComputedStyle(complex_custom_quotes).content, 'normal'); assert_equals(getComputedStyle(complex_custom_quotes, 'before').content, 'open-quote "quoted A" open-quote "quoted B" no-close-quote close-quote'); }, "Check that the content attribute includes quote keywords when nested quotes are used"); test(function () { - assert_equals(getComputedStyle(both_sides_custom_quotes).content, ''); + assert_equals(getComputedStyle(both_sides_custom_quotes).content, 'normal'); assert_equals(getComputedStyle(both_sides_custom_quotes, 'before').content, 'open-quote "quoted A" open-quote "quoted B" no-close-quote close-quote'); assert_equals(getComputedStyle(both_sides_custom_quotes, 'after').content, 'open-quote "quoted C" no-open-quote "quoted D" close-quote no-close-quote'); }, "Check that the content attribute includes quote keywords when quotes are used both :before and :after");
diff --git a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt index 420bcb2..657e497 100644 --- a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt
@@ -129,7 +129,7 @@ column-rule-width: 0px column-span: none column-width: auto -content: +content: normal cursor: auto cx: 0px cy: 0px
diff --git a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt index f2084f64..9bb8a122 100644 --- a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
@@ -129,7 +129,7 @@ column-rule-width: 0px column-span: none column-width: auto -content: +content: normal cursor: auto cx: 0px cy: 0px
diff --git a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-expected.txt index 017a470..e8349c5 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-expected.txt
@@ -23,5 +23,5 @@ PASS blueDiv.innerHTML is "" Mouse is invisible, deleting the red div. PASS blueDiv.offsetTop is 50 -PASS blueText is "" +PASS blueText is "none"
diff --git a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html index 9f52a1f6..afcd6b55 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html +++ b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html
@@ -33,9 +33,9 @@ var blueDiv; var containerDiv; var blueText; -var redTextWhenHovered = "Red hovered."; -var blueTextWhenNotHovered = ""; -var blueTextWhenHovered = '"Hovered."'; +var redDivComputedContentWhenHovered = "Red hovered."; +var blueDivComputedContentWhenNotHovered = ""; +var blueDivComputedContentWhenHovered = '"Hovered."'; function runtest() { if (!window.testRunner || !window.eventSender) @@ -70,7 +70,7 @@ function testAfterDeleteCursorVisible() { - checkBlueHoverText(blueTextWhenHovered); + checkBlueDivComputedContent(blueDivComputedContentWhenHovered); window.setTimeout(testWithInvisibleCursor, 0); } @@ -83,8 +83,8 @@ debug("Setting the mouse cursor to be invisible."); internals.setIsCursorVisible(document, false); - shouldBeEqualToString("redDiv.innerHTML", redTextWhenHovered); - shouldBeEqualToString("blueDiv.innerHTML", blueTextWhenNotHovered); + shouldBeEqualToString("redDiv.innerHTML", redDivComputedContentWhenHovered); + shouldBeEqualToString("blueDiv.innerHTML", blueDivComputedContentWhenNotHovered); debug("Mouse is invisible, deleting the red div."); eventSender.keyDown("a"); @@ -93,14 +93,14 @@ function testAfterDeleteCursorInvisible() { - checkBlueHoverText(blueTextWhenNotHovered); + checkBlueDivComputedContent("none"); testRunner.notifyDone(); } // Helper functions -function checkBlueHoverText(expectedText) +function checkBlueDivComputedContent(expectedText) { shouldBe("blueDiv.offsetTop", "50"); blueText = window.getComputedStyle(document.querySelector('#blue'), ':after').content; @@ -114,7 +114,7 @@ containerDiv.appendChild(redDiv); containerDiv.appendChild(blueDiv); redDiv.addEventListener('mouseover', function(e) { - this.innerHTML = redTextWhenHovered; + this.innerHTML = redDivComputedContentWhenHovered; }); shouldBe("blueDiv.offsetTop", "200"); shouldBe("redDiv.offsetTop", "50"); @@ -125,8 +125,8 @@ debug("Mouse is visible, moving it over the red div."); internals.setIsCursorVisible(document, true); eventSender.mouseMoveTo(100, 100); - shouldBeEqualToString("redDiv.innerHTML", redTextWhenHovered); - shouldBeEqualToString("blueDiv.innerHTML", blueTextWhenNotHovered); + shouldBeEqualToString("redDiv.innerHTML", redDivComputedContentWhenHovered); + shouldBeEqualToString("blueDiv.innerHTML", blueDivComputedContentWhenNotHovered); } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/layers/layer-canvas-log-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/layers/layer-canvas-log-expected.txt index d14ce43..3200056 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/layers/layer-canvas-log-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/layers/layer-canvas-log-expected.txt
@@ -121,7 +121,7 @@ right : 300 top : 0 } - softClipEdgeStyle : false + softClipEdgeStyle : true } } 6 : {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-expected.txt deleted file mode 100644 index 05af13f..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-expected.txt +++ /dev/null
@@ -1,83 +0,0 @@ -Tests that breakpoint added to file system can be removed - -Add breakpoint -Dumping breakpoint storage - file:///var/www/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Remove breakpoint -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add breakpoint again -Dumping breakpoint storage - file:///var/www/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Add network mapping -Dumping breakpoint storage - http://127.0.0.1:8000/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:3window.foo = ()=>'foo'; -Source frame breakpoints -breakpoint at 2 - inline breakpoint at (2, 0) - inline breakpoint at (2, 17) disabled - inline breakpoint at (2, 22) disabled - inline breakpoint at (2, 23) disabled - -Remove breakpoint -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add breakpoint again -Dumping breakpoint storage - http://127.0.0.1:8000/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:3window.foo = ()=>'foo'; -Source frame breakpoints -breakpoint at 2 - inline breakpoint at (2, 0) - inline breakpoint at (2, 17) disabled - inline breakpoint at (2, 22) disabled - inline breakpoint at (2, 23) disabled - -Remove binding and drop iframe -Dumping breakpoint storage - http://127.0.0.1:8000/devtools/persistence/resources/foo.js:1 - file:///var/www/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Remove breakpoint -Dumping breakpoint storage - http://127.0.0.1:8000/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add mapping back -Dumping breakpoint storage - http://127.0.0.1:8000/devtools/persistence/resources/foo.js:1 -Breakpoint sidebar pane -foo.js:3window.foo = ()=>'foo'; -Source frame breakpoints -breakpoint at 2 - inline breakpoint at (2, 0) - inline breakpoint at (2, 17) disabled - inline breakpoint at (2, 22) disabled - inline breakpoint at (2, 23) disabled - -
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url-expected.txt deleted file mode 100644 index 414daa4ffc..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url-expected.txt +++ /dev/null
@@ -1,72 +0,0 @@ -Tests that breakpoint added to file system can be removed when fs url === network url - -Add breakpoint -Dumping breakpoint storage - file:///var/www/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Remove breakpoint -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add breakpoint again -Dumping breakpoint storage - file:///var/www/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Add network mapping -Dumping breakpoint storage - file:///var/www/foo.js:1 -Breakpoint sidebar pane -foo.js:3 window.foo = () => 42; -Source frame breakpoints -breakpoint at 2 - inline breakpoint at (2, 2) - inline breakpoint at (2, 21) disabled - inline breakpoint at (2, 23) disabled - -Remove breakpoint -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add breakpoint again -Dumping breakpoint storage - file:///var/www/foo.js:1 -Breakpoint sidebar pane -foo.js:3 window.foo = () => 42; -Source frame breakpoints -breakpoint at 2 - inline breakpoint at (2, 2) - inline breakpoint at (2, 21) disabled - inline breakpoint at (2, 23) disabled - -Remove binding and drop iframe -Dumping breakpoint storage - file:///var/www/foo.js:1 -Breakpoint sidebar pane -foo.js:2 -Source frame breakpoints -breakpoint at 1 - -Remove breakpoint -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints - -Add mapping back -Dumping breakpoint storage -Breakpoint sidebar pane -No breakpoints -Source frame breakpoints -
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url.js b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url.js deleted file mode 100644 index e6f20d44..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed-same-url.js +++ /dev/null
@@ -1,102 +0,0 @@ -// 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. - -(async function() { - TestRunner.addResult( - `Tests that breakpoint added to file system can be removed when fs url === network url\n`); - await TestRunner.loadModule('sources_test_runner'); - await TestRunner.loadModule('bindings_test_runner'); - await TestRunner.showPanel('sources'); - - const testMapping = BindingsTestRunner.initializeTestMapping(); - const fs = new BindingsTestRunner.TestFileSystem('file:///var/www'); - - fs.root.addFile('foo.js', `function boo() { - - window.foo = () => 42; -}`); - - await fs.reportCreatedPromise(); - const fsUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.FileSystem); - const fsSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(fsUISourceCode); - TestRunner.addResult('Add breakpoint'); - SourcesTestRunner.setBreakpoint(fsSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(fsSourceFrame, 1, false); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Add breakpoint again'); - SourcesTestRunner.setBreakpoint(fsSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Add network mapping'); - await TestRunner.addIframe( - 'resources/frame-with-foo-js-with-source-url.html'); - testMapping.addBinding('foo.js'); - await BindingsTestRunner.waitForBinding('foo.js'); - let networkUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.Network); - let networkSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(networkUISourceCode); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(networkSourceFrame, 2, false); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Add breakpoint again'); - SourcesTestRunner.setBreakpoint(networkSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Remove binding and drop iframe'); - await TestRunner.evaluateInPageAsync(` - (function(){ - const frame = document.querySelector('iframe'); - frame.parentNode.removeChild(frame); - })(); - `); - await testMapping.removeBinding('foo.js'); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(fsSourceFrame, 1, false); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Add mapping back'); - await TestRunner.addIframe( - 'resources/frame-with-foo-js-with-source-url.html'); - testMapping.addBinding('foo.js'); - await BindingsTestRunner.waitForBinding('foo.js'); - networkUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.Network); - networkSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(networkUISourceCode); - dumpBreakpointStorage(); - SourcesTestRunner.dumpBreakpointSidebarPane(); - TestRunner.addResult('Source frame breakpoints'); - SourcesTestRunner.dumpJavaScriptSourceFrameBreakpoints(networkSourceFrame); - - TestRunner.completeTest(); - - function dumpBreakpointStorage() { - var breakpointManager = Bindings.breakpointManager; - var breakpoints = breakpointManager._storage._setting.get(); - TestRunner.addResult('Dumping breakpoint storage'); - for (const {lineNumber, url} of breakpoints) - TestRunner.addResult(` ${url}:${lineNumber}`); - } - - async function waitAndDumpBreakpointsState(sourceFrame) { - await SourcesTestRunner.waitBreakpointSidebarPane(); - dumpBreakpointStorage(); - SourcesTestRunner.dumpBreakpointSidebarPane(); - TestRunner.addResult('Source frame breakpoints'); - SourcesTestRunner.dumpJavaScriptSourceFrameBreakpoints(sourceFrame); - TestRunner.addResult(''); - } -})();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed.js b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed.js deleted file mode 100644 index dd7c1b0..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/fs-breakpoint-can-be-removed.js +++ /dev/null
@@ -1,98 +0,0 @@ -// 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. - -(async function() { - TestRunner.addResult( - `Tests that breakpoint added to file system can be removed\n`); - await TestRunner.loadModule('sources_test_runner'); - await TestRunner.loadModule('bindings_test_runner'); - await TestRunner.showPanel('sources'); - - const testMapping = BindingsTestRunner.initializeTestMapping(); - const fs = new BindingsTestRunner.TestFileSystem('file:///var/www'); - const fsEntry = BindingsTestRunner.addFooJSFile(fs); - await fs.reportCreatedPromise(); - const fsUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.FileSystem); - const fsSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(fsUISourceCode); - TestRunner.addResult('Add breakpoint'); - SourcesTestRunner.setBreakpoint(fsSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(fsSourceFrame, 1, false); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Add breakpoint again'); - SourcesTestRunner.setBreakpoint(fsSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(fsSourceFrame); - - // TODO(kozyatinskiy): after this step we should have both breakpoints by fs - // url and by network url in storage otherwise if we close DevTools right now - // and reopen it later without established mapping then we won't show - // breakpoints in fileSystem UISourceCode. - TestRunner.addResult('Add network mapping'); - await TestRunner.addIframe('resources/frame-with-foo-js.html'); - testMapping.addBinding('foo.js'); - await BindingsTestRunner.waitForBinding('foo.js'); - let networkUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.Network); - let networkSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(networkUISourceCode); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(networkSourceFrame, 2, false); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Add breakpoint again'); - SourcesTestRunner.setBreakpoint(networkSourceFrame, 1, '', true); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.addResult('Remove binding and drop iframe'); - await testMapping.removeBinding('foo.js'); - TestRunner.evaluateInPageAsync(` - (function(){ - const frame = document.querySelector('iframe'); - frame.parentNode.removeChild(frame); - })(); - `); - await waitAndDumpBreakpointsState(fsSourceFrame); - - // TODO(kozyatinskiy): after this step we should have no breakpoints in - // storage - TestRunner.addResult('Remove breakpoint'); - SourcesTestRunner.toggleBreakpoint(fsSourceFrame, 1, false); - await waitAndDumpBreakpointsState(fsSourceFrame); - - TestRunner.addResult('Add mapping back'); - TestRunner.addIframe('resources/frame-with-foo-js.html'); - testMapping.addBinding('foo.js'); - await BindingsTestRunner.waitForBinding('foo.js'); - networkUISourceCode = await TestRunner.waitForUISourceCode( - 'foo.js', Workspace.projectTypes.Network); - networkSourceFrame = - await SourcesTestRunner.showUISourceCodePromise(networkUISourceCode); - await waitAndDumpBreakpointsState(networkSourceFrame); - - TestRunner.completeTest(); - - function dumpBreakpointStorage() { - var breakpointManager = Bindings.breakpointManager; - var breakpoints = breakpointManager._storage._setting.get(); - TestRunner.addResult('Dumping breakpoint storage'); - for (const {lineNumber, url} of breakpoints) - TestRunner.addResult(` ${url}:${lineNumber}`); - } - - async function waitAndDumpBreakpointsState(sourceFrame) { - await SourcesTestRunner.waitBreakpointSidebarPane(); - dumpBreakpointStorage(); - SourcesTestRunner.dumpBreakpointSidebarPane(); - TestRunner.addResult('Source frame breakpoints'); - SourcesTestRunner.dumpJavaScriptSourceFrameBreakpoints(sourceFrame); - TestRunner.addResult(''); - } -})();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js-with-source-url.html b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js-with-source-url.html deleted file mode 100644 index 9ca3f62..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js-with-source-url.html +++ /dev/null
@@ -1,7 +0,0 @@ -<script> - eval(`function boo() { - - window.foo = () => 42; -} -//# sourceURL=file:///var/www/foo.js`); -</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js.html b/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js.html deleted file mode 100644 index f98bf712..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/persistence/resources/frame-with-foo-js.html +++ /dev/null
@@ -1 +0,0 @@ -<script src='foo.js'></script>
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt new file mode 100644 index 0000000..f506e097 --- /dev/null +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
@@ -0,0 +1,6 @@ +Test that DOM node and its JS wrapper appear as a single node. +Took heap snapshot +Parsed snapshot +SUCCESS: found leaking +SUCCESS: retaining path = [EventListener, InternalNode, HTMLDivElement, Window / file://, ] +
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js new file mode 100644 index 0000000..f804ff2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
@@ -0,0 +1,38 @@ +(async function(testRunner) { + var {page, session, dp} = await testRunner.startBlank( + `Test that DOM node and its JS wrapper appear as a single node.`); + + await session.evaluate(` + var retainer = null; + function run() { + function leaking() { + console.log('leaking'); + } + var div = document.createElement('div'); + div.addEventListener('click', leaking, true); + retainer = div; + } + run(); + `); + + var Helper = await testRunner.loadScript('resources/heap-snapshot-common.js'); + var helper = await Helper(testRunner, session); + + var snapshot = await helper.takeHeapSnapshot(); + var node; + for (var it = snapshot._allNodes(); it.hasNext(); it.next()) { + if (it.node.type() === 'closure' && it.node.name() === 'leaking') { + node = it.node; + break; + } + } + if (node) + testRunner.log('SUCCESS: found ' + node.name()); + else + return testRunner.fail('cannot find leaking node'); + + var retainers = helper.firstRetainingPath(node).map(node => node.name()); + var actual = retainers.join(', '); + testRunner.log(`SUCCESS: retaining path = [${actual}]`); + testRunner.completeTest(); +})
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt index a67ac3b..6fa89ac 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
@@ -2,5 +2,5 @@ Took heap snapshot Parsed snapshot SUCCESS: found myEventListener -SUCCESS: retaining path = [EventListener, InternalNode, HTMLBodyElement, HTMLHtmlElement, HTMLDocument] +SUCCESS: retaining path = [EventListener, InternalNode, HTMLBodyElement, HTMLHtmlElement, HTMLDocument, Window / file://, ]
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js index 68c6f12..1fa20236b 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
@@ -29,9 +29,6 @@ return testRunner.fail('cannot find myEventListener node'); var retainers = helper.firstRetainingPath(node).map(node => node.name()); - // Limit to the retainers until the Window object to keep the test robust - // against root node name changes. - retainers = retainers.slice(0, retainers.indexOf('Window')); var actual = retainers.join(', '); testRunner.log(`SUCCESS: retaining path = [${actual}]`); testRunner.completeTest();
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt index 1022d56..fecccaa 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
@@ -4,6 +4,6 @@ SUCCESS: found leaking SUCCESS: immediate retainer is EventListener. SUCCESS: found multiple retaining paths. -SUCCESS: path1 = [HTMLBodyElement, HTMLHtmlElement, HTMLDocument] -SUCCESS: path2 = [HTMLDivElement, HTMLBodyElement, HTMLHtmlElement, HTMLDocument] +SUCCESS: path1 = [HTMLBodyElement, HTMLHtmlElement, HTMLDocument, Window / file://, ] +SUCCESS: path2 = [HTMLDivElement, HTMLBodyElement, HTMLHtmlElement, HTMLDocument, Window / file://, ]
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js index 04f648b..a2d852e 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js +++ b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
@@ -43,9 +43,6 @@ for (var iter = eventListener.retainers(); iter.hasNext(); iter.next()) { var path = helper.firstRetainingPath(iter.retainer.node()); path = path.map(node => node.name()); - // Limit the path until the Window object to keep the test robust - // against root node name changes. - path = path.slice(0, path.indexOf('Window')); retainingPaths.push(path.join(', ')); }
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png index d70e46c..29745472 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-fixed-layer-with-transformed-parent-layer-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png index e0e41849..67a3e6d2 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-in-transformed-layer-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png index e0e41849..ee2d896e 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-with-transformed-parent-layer-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/foreign-object-repaint-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/foreign-object-repaint-expected.png index 5e5582e..d5647f4 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/foreign-object-repaint-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/foreign-object-repaint-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 de2306b..da76c91 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 210194a..047a5c5 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/printing/print-box-shadow-expected.png b/third_party/WebKit/LayoutTests/paint/printing/print-box-shadow-expected.png index 5325356..cf765e8 100644 --- a/third_party/WebKit/LayoutTests/paint/printing/print-box-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/paint/printing/print-box-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/preload/download-resources-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/preload/download-resources-expected.txt new file mode 100644 index 0000000..5ce86f0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/preload/download-resources-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that preloaded resources are downloaded assert_equals: resources/CanvasTest.ttf expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-antialiasing-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-antialiasing-expected.png index 10f5769..023729c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-antialiasing-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-antialiasing-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-inner-bleed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-inner-bleed-expected.png index 2a8eb234..f8903c98 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-inner-bleed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-inner-bleed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/placeholder-position-expected.png index 10626c3..38d51826 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png index 1ecdce3..337068c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png index 1c443440..9b07fef 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png index f69a473..bc9086f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png index 7fabcef4..a25c697 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-creation-expected.png index 7fabcef4..a25c697 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-clipPath-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png index 0f243f83..6c9b6fa 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-foreignObject-expected.png index 5b32ee76..d17fdcd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/printing/fixed-positioned-headers-and-footers-clipped-expected.png index f1c9fa2..e0de8f8 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/linux/printing/iframe-print-expected.png index 47fe9613..eea9f8e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/printing/iframe-print-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/printing/iframe-print-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/linux/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png index 0f243f83..6c9b6fa 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-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 e4288db..62265ca 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/filters-color-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-color-01-b-expected.png index bc21c593..a3b0ff4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-color-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-color-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png index 9b4f05f..4155157 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-events-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-events-01-b-expected.png index d429d9c2..45091ce 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-events-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-events-01-b-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 602bb69..7526f37 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/masking-mask-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png index 37b1dc5..a023baf4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-01-b-expected.png index cfa5f6e..29d4cca 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-02-b-expected.png index 7be3e9c..810d5673 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-03-b-expected.png index d4a3612..c4f8c64 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-05-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-05-f-expected.png index 4001b6b..fb41b18 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-05-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-path-05-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png index 2d67e882..bb50e30 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/textbox-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/textbox-expected.png index d479e1b..86797b2e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/textbox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/textbox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/clip-mask-negative-scale-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/clip-mask-negative-scale-expected.png index b85c915..087ea06 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/clip-mask-negative-scale-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/clip-mask-negative-scale-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/container-opacity-clip-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/container-opacity-clip-viewBox-expected.png index 875f74ee..f4b9ffe 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/container-opacity-clip-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/container-opacity-clip-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/embedding-external-svgs-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/embedding-external-svgs-expected.png index 1c7295e2..6a508da 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/embedding-external-svgs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/embedding-external-svgs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/focus-ring-expected.png index 3ae1880..2a32e7c9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/foreign-object-skew-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/foreign-object-skew-expected.png index 997e938..539b48ae 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/foreign-object-skew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/foreign-object-skew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png index 8f094bf..61f563db 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/preserve-aspect-ratio-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/transformed-outlines-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/transformed-outlines-expected.png index ee2d5e7..fce3e16 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/transformed-outlines-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/transformed-outlines-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/viewbox-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/viewbox-syntax-expected.png index f3d78bba..4ebbd2d0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/viewbox-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/viewbox-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-mask-with-svg-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-mask-with-svg-transform-expected.png index a3046b9..acc3448 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-mask-with-svg-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-mask-with-svg-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-pattern-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-pattern-inside-transformed-html-expected.png index 235833a..cd548eb2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-pattern-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/transforms/text-with-pattern-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png index 8f0e7ac..94f7435 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-foreignObject-expected.png index d306f3f..1f1bc02a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-hixie-mixed-009-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-hixie-mixed-009-expected.png index aaca2a0..1d36e1b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-hixie-mixed-009-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-hixie-mixed-009-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-mask-with-percentages-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-mask-with-percentages-expected.png index b649e9fc..1aa6593 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-mask-with-percentages-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-mask-with-percentages-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/transforms/transformed-focused-text-input-expected.png b/third_party/WebKit/LayoutTests/platform/linux/transforms/transformed-focused-text-input-expected.png index c989c43..e335118 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/transforms/transformed-focused-text-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/transforms/transformed-focused-text-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png new file mode 100644 index 0000000..29bcae693 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-clip-path-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png new file mode 100644 index 0000000..29bcae693 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/images/direct-image-dynamic-clip-path-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.png new file mode 100644 index 0000000..a25c697 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-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-clipPath-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-creation-expected.png new file mode 100644 index 0000000..a25c697 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-clipPath-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 28d9ea4..3cf5699 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 3613fdf..79cdaac6 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/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png index 4a63d3f..148a277e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png new file mode 100644 index 0000000..d17fdcd --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png new file mode 100644 index 0000000..e0de8f8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/iframe-print-expected.png new file mode 100644 index 0000000..eea9f8e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/iframe-print-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/placeholder-position-expected.png index 97647bc..f27d0191 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png index 032aef7..fc2b324 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/placeholder-position-expected.png index 1038764b..7a3e03b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/fixed-positioned-headers-and-footers-clipped-expected.png index d134016..7e67a6d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/iframe-print-expected.png index 93668f0..302936e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/iframe-print-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/printing/iframe-print-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/carto.net/textbox-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/carto.net/textbox-expected.png index f7ab66f..a157554 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/carto.net/textbox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/carto.net/textbox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-filter-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-filter-expected.png deleted file mode 100644 index ef9c0e8..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/mask-with-filter-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png index d134016..7e67a6d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/iframe-print-expected.png index 93668f0..302936e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/iframe-print-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/threaded/printing/iframe-print-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/placeholder-position-expected.png index e07b2a67..da6c6857 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/mask-with-filter-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/mask-with-filter-expected.png index ef9c0e8..54804cf3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/mask-with-filter-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/mask-with-filter-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/preload/download-resources-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/preload/download-resources-expected.txt new file mode 100644 index 0000000..5ce86f0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/preload/download-resources-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Makes sure that preloaded resources are downloaded assert_equals: resources/CanvasTest.ttf expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-inner-bleed-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-inner-bleed-expected.png index 910b209..7901e87 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-inner-bleed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-inner-bleed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png index e07b2a67..da6c6857 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/frames/iframe-scaling-with-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/frames/iframe-scaling-with-scroll-expected.png index 6274b822..5a1a81ac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/frames/iframe-scaling-with-scroll-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/frames/iframe-scaling-with-scroll-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png index 768b1d3..7e9bfe1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png index 1ee2523d..5de8a92 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png index 1730d75a..c1da1d1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-foreignObject-expected.png index 3078cd64..705289c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/mac/printing/fixed-positioned-headers-and-footers-clipped-expected.png index a780e05..5f3f276 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/mac/printing/iframe-print-expected.png index c616851..83bbd1fa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/printing/iframe-print-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/printing/iframe-print-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/mac/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png index 1730d75a..c1da1d1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-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 175c2c2..fb95304 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/filters-color-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-color-01-b-expected.png index 406b581..839e90b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-color-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-color-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png index aa5026e..b486cf8c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-events-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-events-01-b-expected.png index 9e484d4..6634dbc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-events-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-events-01-b-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 e060c762..34eaec14 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/masking-mask-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png index 41574fe8..0f90944 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-01-b-expected.png index 80a1a2b..524136f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-02-b-expected.png index f8d3d32..63bc2f33 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-03-b-expected.png index a6421c3..ae126e8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-05-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-05-f-expected.png index 9cffbb99..a34c4fc8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-05-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-path-05-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png index 9ba5cff3..36b846e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/textbox-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/textbox-expected.png index 73a5e246..7515abf2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/textbox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/textbox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/clip-mask-negative-scale-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/clip-mask-negative-scale-expected.png index 505c436..c7c81734 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/clip-mask-negative-scale-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/clip-mask-negative-scale-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/container-opacity-clip-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/container-opacity-clip-viewBox-expected.png index 92a9815..172e1de 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/container-opacity-clip-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/container-opacity-clip-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/embedding-external-svgs-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/embedding-external-svgs-expected.png index 6bbda6f7..54561bf0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/embedding-external-svgs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/embedding-external-svgs-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 a9240fe..1b65364e 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/foreign-object-skew-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/foreign-object-skew-expected.png index c5a07ab..a7faae6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/foreign-object-skew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/foreign-object-skew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png index 927562ff..4147c93 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/transformed-outlines-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/transformed-outlines-expected.png index 22a6ccab..31aeff6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/transformed-outlines-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/transformed-outlines-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-1-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-2-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-non-svg-namespaced-element-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-non-svg-namespaced-element-expected.png index 433c9b8..c6076f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-non-svg-namespaced-element-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-non-svg-namespaced-element-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.png index 6478eae0..6214b8bb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png index 8c15ae6..fa5ca11 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.png index e4b7bab..c9464aa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png index 77a6b236..fc178a3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-foreignObject-expected.png index 9898f53..c9405381 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-hixie-mixed-009-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-hixie-mixed-009-expected.png index f3c8c29..8d16a15 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-hixie-mixed-009-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-hixie-mixed-009-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-mask-with-percentages-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-mask-with-percentages-expected.png index 7eb094e..ddc255a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-mask-with-percentages-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-mask-with-percentages-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/transforms/transformed-focused-text-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac/transforms/transformed-focused-text-input-expected.png index 22d55c3..dc014a3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/transforms/transformed-focused-text-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/transforms/transformed-focused-text-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png index 4de6ec1..2210f6a5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/threaded/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/threaded/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/threaded/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/mask-with-filter-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/mask-with-filter-expected.png index 38d98ac..afb2050 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/mask-with-filter-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/mask-with-filter-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-inner-bleed-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-inner-bleed-expected.png index 1468cbd1..ad78986 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-inner-bleed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-inner-bleed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/placeholder-position-expected.png index 121a0481..ac048df 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png index cdc63dd9..2fb1f7b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/frames/iframe-scaling-with-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/frames/iframe-scaling-with-scroll-expected.png index 661c1426b3..874c82b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/frames/iframe-scaling-with-scroll-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/frames/iframe-scaling-with-scroll-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png index 8d555d2..7be2366 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/absolute-sized-content-with-resources-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png index 595f4de..71944e2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png index 476c563..a79157a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-foreignObject-expected.png index 6b24b0ce82..19ef50b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png index 476c563..a79157a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-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 3411377..a3529fc 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/filters-color-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-color-01-b-expected.png index d08d30fd..101c81c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-color-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-color-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png index eb0907b..a377f13b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-events-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-events-01-b-expected.png index 86373cb..8b54aee 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-events-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-events-01-b-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 4cbc1e33..da79dae 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/masking-mask-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png index e40d803..2c33d948 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-01-b-expected.png index 8629736..8916be7 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-02-b-expected.png index c0fd67f..8b4b4af 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-03-b-expected.png index fe5205d..061275a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-05-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-05-f-expected.png index e48474e..b44f1c09 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-05-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-path-05-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png index bde53a78..c5d9e06 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-02-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/textbox-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/textbox-expected.png index a3492ea..7b3d475 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/textbox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/textbox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/clip-mask-negative-scale-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/clip-mask-negative-scale-expected.png index 51381ea0b..afb77682 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/clip-mask-negative-scale-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/clip-mask-negative-scale-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/container-opacity-clip-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/container-opacity-clip-viewBox-expected.png index 27e1ed0..4eee57b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/container-opacity-clip-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/container-opacity-clip-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/embedding-external-svgs-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/embedding-external-svgs-expected.png index c739b7d..c4fce55 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/embedding-external-svgs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/embedding-external-svgs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/focus-ring-expected.png index ab17663..ceaca59c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/foreign-object-skew-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/foreign-object-skew-expected.png index 5720dda..29aed966 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/foreign-object-skew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/foreign-object-skew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png index 1b4116c9..1cde9dc4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/preserve-aspect-ratio-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/transformed-outlines-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/transformed-outlines-expected.png index 8298369..2acb6b1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/transformed-outlines-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/transformed-outlines-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.png index 79d11ef..7d27777f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-mask-with-svg-transform-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-mask-with-svg-transform-expected.png index 0d079ddf..deb2010 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-mask-with-svg-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-mask-with-svg-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-pattern-inside-transformed-html-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-pattern-inside-transformed-html-expected.png index 5f639c5c..faf659f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-pattern-inside-transformed-html-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/transforms/text-with-pattern-inside-transformed-html-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png index de6a9a9..bd09c602 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-foreignObject-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-foreignObject-expected.png index ee135391..ab45b52b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-foreignObject-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-foreignObject-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-hixie-mixed-009-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-hixie-mixed-009-expected.png index 8a5709c..c4780f27 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-hixie-mixed-009-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-hixie-mixed-009-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-mask-with-percentages-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-mask-with-percentages-expected.png index 62bbd5ff..40b7dc1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-mask-with-percentages-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-mask-with-percentages-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/transforms/transformed-focused-text-input-expected.png b/third_party/WebKit/LayoutTests/platform/win/transforms/transformed-focused-text-input-expected.png index 6de6ea8..7537b55 100644 --- a/third_party/WebKit/LayoutTests/platform/win/transforms/transformed-focused-text-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/transforms/transformed-focused-text-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png index 886958c..a8af99c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/win7/printing/fixed-positioned-headers-and-footers-clipped-expected.png index de4209d..326b495 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/win7/printing/iframe-print-expected.png deleted file mode 100644 index ad5e80e..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/printing/iframe-print-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/win7/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/filters-color-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/filters-color-01-b-expected.png index 163f9b57..38dcebc 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/filters-color-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/svg/W3C-SVG-1.1/filters-color-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png index de4209d..326b495 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/fixed-positioned-headers-and-footers-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/iframe-print-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/iframe-print-expected.png deleted file mode 100644 index ad5e80e..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/iframe-print-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/subframes-percentage-height-expected.png deleted file mode 100644 index 60622f22..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt b/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt index ed284867..5eb9443 100644 --- a/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt
@@ -129,7 +129,7 @@ column-rule-width: 0px column-span: none column-width: auto -content: +content: normal cursor: auto cx: 0px cy: 0px
diff --git a/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-2-expected.png b/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-2-expected.png index 47529e8..fbd9f878 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-2-expected.png +++ b/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-expected.png b/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-expected.png index 2486aa04..f101697 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-expected.png +++ b/third_party/WebKit/LayoutTests/svg/custom/grayscale-gradient-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/dynamic-updates/SVG-dynamic-css-transform-expected.png b/third_party/WebKit/LayoutTests/svg/dynamic-updates/SVG-dynamic-css-transform-expected.png index 2f5f897d..f1515ed 100644 --- a/third_party/WebKit/LayoutTests/svg/dynamic-updates/SVG-dynamic-css-transform-expected.png +++ b/third_party/WebKit/LayoutTests/svg/dynamic-updates/SVG-dynamic-css-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/zoom/page/zoom-clip-path-expected.png b/third_party/WebKit/LayoutTests/svg/zoom/page/zoom-clip-path-expected.png index 64d8291..ca83829 100644 --- a/third_party/WebKit/LayoutTests/svg/zoom/page/zoom-clip-path-expected.png +++ b/third_party/WebKit/LayoutTests/svg/zoom/page/zoom-clip-path-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/printing/subframes-percentage-height-expected.png b/third_party/WebKit/LayoutTests/virtual/threaded/printing/subframes-percentage-height-expected.png deleted file mode 100644 index c360ac7..0000000 --- a/third_party/WebKit/LayoutTests/virtual/threaded/printing/subframes-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp index 5bca7e4a..091f93be 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
@@ -40,10 +40,9 @@ isolate_, v8::Persistent<v8::Object>::Cast(*value)); ScriptWrappable* traceable = ToScriptWrappable(v8_value); if (traceable) { - // Add v8_value => traceable edge. + Graph::Node* wrapper = GraphNode(v8_value); Graph::Node* graph_node = - GraphNode(traceable, traceable->NameInHeapSnapshot()); - graph_->AddEdge(GraphNode(v8_value), graph_node); + GraphNode(traceable, traceable->NameInHeapSnapshot(), wrapper); // Visit traceable members. This will also add traceable => v8_value edge. ParentScope parent(this, graph_node); traceable->TraceWrappers(this); @@ -65,8 +64,8 @@ // Add an edge from the current parent to this object. // Also push the object to the worklist in order to process its members. const void* traceable = wrapper_descriptor.base_object_payload; - Graph::Node* graph_node = - GraphNode(traceable, wrapper_descriptor.name_callback(traceable)); + Graph::Node* graph_node = GraphNode( + traceable, wrapper_descriptor.name_callback(traceable), nullptr); graph_->AddEdge(current_parent_, graph_node); if (!visited_.Contains(traceable)) { visited_.insert(traceable); @@ -90,14 +89,15 @@ v8::EmbedderGraph::Node* V8EmbedderGraphBuilder::GraphNode( Traceable traceable, - const char* name) const { + const char* name, + v8::EmbedderGraph::Node* wrapper) const { auto iter = graph_node_.find(traceable); if (iter != graph_node_.end()) return iter->value; // Ownership of the new node is transferred to the graph_. // graph_node_.at(tracable) is valid for all BuildEmbedderGraph execution. - auto node = - graph_->AddNode(std::unique_ptr<Graph::Node>(new EmbedderNode(name))); + auto node = graph_->AddNode( + std::unique_ptr<Graph::Node>(new EmbedderNode(name, wrapper))); graph_node_.insert(traceable, node); return node; }
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h index 6210fef..f3ce7f54 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h +++ b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h
@@ -36,19 +36,22 @@ private: class EmbedderNode : public Graph::Node { public: - explicit EmbedderNode(const char* name) : name_(name) {} + EmbedderNode(const char* name, Graph::Node* wrapper) + : name_(name), wrapper_(wrapper) {} // Graph::Node overrides. const char* Name() override { return name_; } size_t SizeInBytes() override { return 0; } + Graph::Node* WrapperNode() override { return wrapper_; } private: const char* name_; + Graph::Node* wrapper_; }; class EmbedderRootNode : public EmbedderNode { public: - explicit EmbedderRootNode(const char* name) : EmbedderNode(name) {} + explicit EmbedderRootNode(const char* name) : EmbedderNode(name, nullptr) {} // Graph::Node override. bool IsRootNode() { return true; } }; @@ -78,7 +81,9 @@ const TraceWrapperDescriptor&) const; Graph::Node* GraphNode(const v8::Local<v8::Value>&) const; - Graph::Node* GraphNode(Traceable, const char* name) const; + Graph::Node* GraphNode(Traceable, + const char* name, + Graph::Node* wrapper) const; void VisitPendingActivities(); void VisitTransitiveClosure();
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp index ff61ebc2..9093d13 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
@@ -78,17 +78,13 @@ static void ReportFatalErrorInMainThread(const char* location, const char* message) { - int memory_usage_mb = Platform::Current()->ActualMemoryUsageMB(); - DVLOG(1) << "V8 error: " << message << " (" << location - << "). Current memory usage: " << memory_usage_mb << " MB"; + DVLOG(1) << "V8 error: " << message << " (" << location << ")."; LOG(FATAL); } static void ReportOOMErrorInMainThread(const char* location, bool is_js_heap) { - int memory_usage_mb = Platform::Current()->ActualMemoryUsageMB(); DVLOG(1) << "V8 " << (is_js_heap ? "javascript" : "process") << " OOM: (" - << location << "). Current memory usage: " << memory_usage_mb - << " MB"; + << location << ")."; OOM_CRASH(); }
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn index 92621b6a..9a7ffe3 100644 --- a/third_party/WebKit/Source/core/BUILD.gn +++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -1778,7 +1778,6 @@ "exported/WebFrameSerializerSanitizationTest.cpp", "exported/WebFrameSerializerTest.cpp", "exported/WebFrameTest.cpp", - "exported/WebHelperPluginTest.cpp", "exported/WebMeaningfulLayoutsTest.cpp", "exported/WebNodeTest.cpp", "exported/WebPluginContainerTest.cpp",
diff --git a/third_party/WebKit/Source/core/CoreInitializer.h b/third_party/WebKit/Source/core/CoreInitializer.h index ece2624..9b70d8f 100644 --- a/third_party/WebKit/Source/core/CoreInitializer.h +++ b/third_party/WebKit/Source/core/CoreInitializer.h
@@ -46,6 +46,7 @@ class LocalFrame; class MediaControls; class Page; +class PictureInPictureController; class Settings; class ShadowRoot; class WebFrameClient; @@ -86,6 +87,8 @@ virtual void ProvideIndexedDBClientToWorker(WorkerClients&) const = 0; virtual MediaControls* CreateMediaControls(HTMLMediaElement&, ShadowRoot&) const = 0; + virtual PictureInPictureController* CreatePictureInPictureController( + Document&) const = 0; // Session Initializers for Inspector Agents in modules/ // These methods typically create agents and append them to a session. // TODO(nverne): remove this and restore to WebDevToolsAgentImpl once that
diff --git a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp index 81fb971..98c5c9c 100644 --- a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp +++ b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp
@@ -1716,6 +1716,12 @@ NOTREACHED(); } } + if (!list->length()) { + PseudoId pseudoId = style.StyleType(); + if (pseudoId == kPseudoIdBefore || pseudoId == kPseudoIdAfter) + return CSSIdentifierValue::Create(CSSValueNone); + return CSSIdentifierValue::Create(CSSValueNormal); + } return list; }
diff --git a/third_party/WebKit/Source/core/editing/suggestion/TextSuggestionController.cpp b/third_party/WebKit/Source/core/editing/suggestion/TextSuggestionController.cpp index edf0a43c..a78c0017 100644 --- a/third_party/WebKit/Source/core/editing/suggestion/TextSuggestionController.cpp +++ b/third_party/WebKit/Source/core/editing/suggestion/TextSuggestionController.cpp
@@ -19,6 +19,7 @@ #include "core/editing/suggestion/TextSuggestionInfo.h" #include "core/frame/FrameView.h" #include "core/frame/LocalFrame.h" +#include "core/frame/Settings.h" #include "core/layout/LayoutTheme.h" #include "services/service_manager/public/cpp/interface_provider.h" @@ -206,6 +207,10 @@ void TextSuggestionController::HandlePotentialSuggestionTap( const PositionInFlatTree& caret_position) { + // TODO(crbug.com/779126): add support for suggestions in immersive mode. + if (GetDocument().GetSettings()->GetImmersiveModeEnabled()) + return; + // It's theoretically possible, but extremely unlikely, that the user has // managed to tap on some text after TextSuggestionController has told the // browser to open the text suggestions menu, but before the browser has
diff --git a/third_party/WebKit/Source/core/exported/BUILD.gn b/third_party/WebKit/Source/core/exported/BUILD.gn index e24c4e4..00fa6cab 100644 --- a/third_party/WebKit/Source/core/exported/BUILD.gn +++ b/third_party/WebKit/Source/core/exported/BUILD.gn
@@ -39,8 +39,6 @@ "WebFrameContentDumper.cpp", "WebFrameSerializer.cpp", "WebHeap.cpp", - "WebHelperPluginImpl.cpp", - "WebHelperPluginImpl.h", "WebHistoryItem.cpp", "WebHitTestResult.cpp", "WebImageCache.cpp",
diff --git a/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.cpp b/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.cpp deleted file mode 100644 index a2b6cd9..0000000 --- a/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.cpp +++ /dev/null
@@ -1,102 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "core/exported/WebHelperPluginImpl.h" - -#include "core/exported/WebPluginContainerImpl.h" -#include "core/frame/LocalFrameClient.h" -#include "core/frame/WebLocalFrameImpl.h" -#include "core/html/HTMLObjectElement.h" -#include "public/platform/TaskType.h" -#include "public/web/WebPlugin.h" - -namespace blink { - -DEFINE_TYPE_CASTS(WebHelperPluginImpl, WebHelperPlugin, plugin, true, true); - -WebHelperPlugin* WebHelperPlugin::Create(const WebString& plugin_type, - WebLocalFrame* frame) { - WebHelperPluginUniquePtr plugin(new WebHelperPluginImpl()); - if (!ToWebHelperPluginImpl(plugin.get()) - ->Initialize(plugin_type, ToWebLocalFrameImpl(frame))) - return nullptr; - return plugin.release(); -} - -bool WebHelperPluginImpl::Initialize(const String& plugin_type, - WebLocalFrameImpl* frame) { - DCHECK(!object_element_ && !plugin_container_); - if (!frame->GetFrame()->Client()) - return false; - - object_element_ = HTMLObjectElement::Create(*frame->GetFrame()->GetDocument(), - CreateElementFlags()); - Vector<String> attribute_names; - Vector<String> attribute_values; - DCHECK(frame->GetFrame()->GetDocument()->Url().IsValid()); - plugin_container_ = frame->GetFrame()->Client()->CreatePlugin( - *object_element_, frame->GetFrame()->GetDocument()->Url(), - attribute_names, attribute_values, plugin_type, false, - LocalFrameClient::kAllowDetachedPlugin); - - if (!plugin_container_) - return false; - - // Getting a placeholder plugin is also failure, since it's not the plugin the - // caller needed. - return !GetPlugin()->IsPlaceholder(); -} - -void WebHelperPluginImpl::ReallyDestroy() { - if (plugin_container_) - plugin_container_->Dispose(); - delete this; -} - -void WebHelperPluginImpl::Destroy() { - // Defer deletion so we don't do too much work when called via - // stopPausableObjects(). - // FIXME: It's not clear why we still need this. The original code held a - // Page and a WebFrame, and destroying it would cause JavaScript triggered by - // frame detach to run, which isn't allowed inside stopPausableObjects(). - // Removing this causes one Chrome test to fail with a timeout. - object_element_->GetDocument() - .GetTaskRunner(TaskType::kUnspecedTimer) - ->PostTask(FROM_HERE, WTF::Bind(&WebHelperPluginImpl::ReallyDestroy, - WTF::Unretained(this))); -} - -WebPlugin* WebHelperPluginImpl::GetPlugin() { - DCHECK(plugin_container_); - DCHECK(plugin_container_->Plugin()); - return plugin_container_->Plugin(); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.h b/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.h deleted file mode 100644 index 0a235a4b..0000000 --- a/third_party/WebKit/Source/core/exported/WebHelperPluginImpl.h +++ /dev/null
@@ -1,73 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef WebHelperPluginImpl_h -#define WebHelperPluginImpl_h - -#include "base/macros.h" -#include "base/memory/scoped_refptr.h" -#include "platform/wtf/Allocator.h" -#include "platform/wtf/text/WTFString.h" -#include "public/web/WebHelperPlugin.h" - -namespace blink { - -class HTMLObjectElement; -class WebLocalFrameImpl; -class WebPluginContainerImpl; - -// Utility class to host helper plugins for media. Internally, it creates a -// detached HTMLPluginElement to host the plugin and uses -// LocalFrameClient::createPlugin() to instantiate the requested plugin. -class WebHelperPluginImpl final : public WebHelperPlugin { - USING_FAST_MALLOC(WebHelperPluginImpl); - - public: - // WebHelperPlugin methods: - WebPlugin* GetPlugin() override; - void Destroy() override; - - private: - friend class WebHelperPlugin; - - WebHelperPluginImpl() = default; - - bool Initialize(const String& plugin_type, WebLocalFrameImpl*); - void ReallyDestroy(); - - Persistent<HTMLObjectElement> object_element_; - Persistent<WebPluginContainerImpl> plugin_container_; - - DISALLOW_COPY_AND_ASSIGN(WebHelperPluginImpl); -}; - -} // namespace blink - -#endif // WebHelperPluginImpl_h
diff --git a/third_party/WebKit/Source/core/exported/WebHelperPluginTest.cpp b/third_party/WebKit/Source/core/exported/WebHelperPluginTest.cpp deleted file mode 100644 index 7292feb..0000000 --- a/third_party/WebKit/Source/core/exported/WebHelperPluginTest.cpp +++ /dev/null
@@ -1,90 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "public/web/WebHelperPlugin.h" - -#include "core/exported/FakeWebPlugin.h" -#include "core/frame/FrameTestHelpers.h" -#include "platform/testing/UnitTestHelpers.h" -#include "public/web/WebFrameClient.h" -#include "public/web/WebLocalFrame.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -namespace { - -class FakePlaceholderWebPlugin : public FakeWebPlugin { - public: - explicit FakePlaceholderWebPlugin(const WebPluginParams& params) - : FakeWebPlugin(params) {} - ~FakePlaceholderWebPlugin() override = default; - - bool IsPlaceholder() override { return true; } -}; - -class WebHelperPluginFrameClient : public FrameTestHelpers::TestWebFrameClient { - public: - WebHelperPluginFrameClient() : create_placeholder_(false) {} - ~WebHelperPluginFrameClient() override = default; - - WebPlugin* CreatePlugin(const WebPluginParams& params) override { - return create_placeholder_ ? new FakePlaceholderWebPlugin(params) - : new FakeWebPlugin(params); - } - - void SetCreatePlaceholder(bool create_placeholder) { - create_placeholder_ = create_placeholder; - } - - private: - bool create_placeholder_; -}; - -class WebHelperPluginTest : public ::testing::Test { - protected: - void SetUp() override { - helper_.InitializeAndLoad("about:blank", &frame_client_); - } - - void DestroyHelperPlugin() { - plugin_.reset(); - // WebHelperPlugin is destroyed by a task posted to the message loop. - testing::RunPendingTasks(); - } - - WebHelperPluginFrameClient frame_client_; - FrameTestHelpers::WebViewHelper helper_; - WebHelperPluginUniquePtr plugin_; -}; - -TEST_F(WebHelperPluginTest, CreateAndDestroyAfterWebViewDestruction) { - plugin_.reset(WebHelperPlugin::Create( - "hello", helper_.GetWebView()->MainFrame()->ToWebLocalFrame())); - EXPECT_TRUE(plugin_); - EXPECT_TRUE(plugin_->GetPlugin()); - - DestroyHelperPlugin(); -} - -TEST_F(WebHelperPluginTest, CreateAndDestroyBeforeWebViewDestruction) { - plugin_.reset(WebHelperPlugin::Create( - "hello", helper_.GetWebView()->MainFrame()->ToWebLocalFrame())); - EXPECT_TRUE(plugin_); - EXPECT_TRUE(plugin_->GetPlugin()); - - DestroyHelperPlugin(); -} - -TEST_F(WebHelperPluginTest, CreateFailsWithPlaceholder) { - frame_client_.SetCreatePlaceholder(true); - - plugin_.reset(WebHelperPlugin::Create( - "hello", helper_.GetWebView()->MainFrame()->ToWebLocalFrame())); - EXPECT_EQ(nullptr, plugin_.get()); -} - -} // namespace - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/frame/BUILD.gn b/third_party/WebKit/Source/core/frame/BUILD.gn index 8e29e3dd..06cb108 100644 --- a/third_party/WebKit/Source/core/frame/BUILD.gn +++ b/third_party/WebKit/Source/core/frame/BUILD.gn
@@ -97,6 +97,8 @@ "PausableTimer.h", "PerformanceMonitor.cpp", "PerformanceMonitor.h", + "PictureInPictureController.cpp", + "PictureInPictureController.h", "PlatformEventController.cpp", "PlatformEventController.h", "PlatformEventDispatcher.cpp",
diff --git a/third_party/WebKit/Source/core/frame/PictureInPictureController.cpp b/third_party/WebKit/Source/core/frame/PictureInPictureController.cpp new file mode 100644 index 0000000..1349fa0 --- /dev/null +++ b/third_party/WebKit/Source/core/frame/PictureInPictureController.cpp
@@ -0,0 +1,37 @@ +// 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 "core/frame/PictureInPictureController.h" + +#include "core/CoreInitializer.h" +#include "core/dom/Document.h" + +namespace blink { + +PictureInPictureController::PictureInPictureController(Document& document) + : Supplement<Document>(document) {} + +// static +const char PictureInPictureController::kSupplementName[] = + "PictureInPictureController"; + +// static +PictureInPictureController& PictureInPictureController::From( + Document& document) { + PictureInPictureController* controller = + Supplement<Document>::From<PictureInPictureController>(document); + if (!controller) { + controller = + CoreInitializer::GetInstance().CreatePictureInPictureController( + document); + ProvideTo(document, controller); + } + return *controller; +} + +void PictureInPictureController::Trace(blink::Visitor* visitor) { + Supplement<Document>::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/frame/PictureInPictureController.h b/third_party/WebKit/Source/core/frame/PictureInPictureController.h new file mode 100644 index 0000000..518731e --- /dev/null +++ b/third_party/WebKit/Source/core/frame/PictureInPictureController.h
@@ -0,0 +1,54 @@ +// 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 PictureInPictureController_h +#define PictureInPictureController_h + +#include "core/CoreExport.h" +#include "core/frame/LocalFrame.h" +#include "platform/Supplementable.h" + +namespace blink { + +// PictureInPictureController allows to know if Picture-in-Picture is allowed +// for a video element in Blink outside of modules/ module. It +// is an interface that the module will implement and add a provider for. +class CORE_EXPORT PictureInPictureController + : public GarbageCollectedFinalized<PictureInPictureController>, + public Supplement<Document> { + USING_GARBAGE_COLLECTED_MIXIN(PictureInPictureController); + WTF_MAKE_NONCOPYABLE(PictureInPictureController); + + public: + static const char kSupplementName[]; + + virtual ~PictureInPictureController() = default; + + // Should be called before any other call to make sure a document is attached. + static PictureInPictureController& From(Document&); + + // List of Picture-in-Picture support statuses. If status is kEnabled, + // Picture-in-Picture is enabled for a document or element, otherwise it is + // not supported. + enum class Status { + kEnabled, + kFrameDetached, + kDisabledBySystem, + kDisabledByFeaturePolicy, + kDisabledByAttribute, + }; + + // Returns whether a given video element in a document associated with the + // controller is allowed to request Picture-in-Picture. + virtual Status IsElementAllowed(const HTMLVideoElement&) const = 0; + + virtual void Trace(blink::Visitor*); + + protected: + explicit PictureInPictureController(Document&); +}; + +} // namespace blink + +#endif // PictureInPictureController_h
diff --git a/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h index 3f29580..52f15dbc 100644 --- a/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h +++ b/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h
@@ -210,6 +210,7 @@ void setVolume(double, ExceptionState& = ASSERT_NO_EXCEPTION); bool muted() const; void setMuted(bool); + virtual bool SupportsPictureInPicture() const { return false; } void enterPictureInPicture(); void TogglePlayState();
diff --git a/third_party/WebKit/Source/core/html/media/HTMLVideoElement.cpp b/third_party/WebKit/Source/core/html/media/HTMLVideoElement.cpp index eb06420..9a26716 100644 --- a/third_party/WebKit/Source/core/html/media/HTMLVideoElement.cpp +++ b/third_party/WebKit/Source/core/html/media/HTMLVideoElement.cpp
@@ -33,6 +33,7 @@ #include "core/dom/ShadowRoot.h" #include "core/dom/UserGestureIndicator.h" #include "core/frame/LocalDOMWindow.h" +#include "core/frame/PictureInPictureController.h" #include "core/frame/Settings.h" #include "core/fullscreen/Fullscreen.h" #include "core/html/media/MediaCustomControlsFullscreenDetector.h" @@ -534,6 +535,15 @@ remoting_interstitial_->Hide(error_msg); } +bool HTMLVideoElement::SupportsPictureInPicture() const { + if (!HasVideo()) + return false; + + return PictureInPictureController::From(GetDocument()) + .IsElementAllowed(*this) == + PictureInPictureController::Status::kEnabled; +} + void HTMLVideoElement::PictureInPictureStarted() { if (!picture_in_picture_interstitial_) { picture_in_picture_interstitial_ = new PictureInPictureInterstitial(*this);
diff --git a/third_party/WebKit/Source/core/html/media/HTMLVideoElement.h b/third_party/WebKit/Source/core/html/media/HTMLVideoElement.h index 635cbc3..8e83ec5d 100644 --- a/third_party/WebKit/Source/core/html/media/HTMLVideoElement.h +++ b/third_party/WebKit/Source/core/html/media/HTMLVideoElement.h
@@ -147,6 +147,7 @@ bool IsRemotingInterstitialVisible() const; void MediaRemotingStarted(const WebString& remote_device_friendly_name) final; + bool SupportsPictureInPicture() const final; void PictureInPictureStarted() final; void PictureInPictureStopped() final; bool IsInPictureInPictureMode() final;
diff --git a/third_party/WebKit/Source/core/inspector/browser_protocol.json b/third_party/WebKit/Source/core/inspector/browser_protocol.json index a19cf07..086f3b8 100644 --- a/third_party/WebKit/Source/core/inspector/browser_protocol.json +++ b/third_party/WebKit/Source/core/inspector/browser_protocol.json
@@ -1082,7 +1082,7 @@ ] }, { - "name": "getCommandLine", + "name": "getBrowserCommandLine", "description": "Returns the command line switches for the browser process if, and only if\n--enable-automation is on the commandline.", "experimental": true, "returns": [
diff --git a/third_party/WebKit/Source/core/inspector/browser_protocol.pdl b/third_party/WebKit/Source/core/inspector/browser_protocol.pdl index d5f1c36..5014eb45 100644 --- a/third_party/WebKit/Source/core/inspector/browser_protocol.pdl +++ b/third_party/WebKit/Source/core/inspector/browser_protocol.pdl
@@ -493,7 +493,7 @@ # Returns the command line switches for the browser process if, and only if # --enable-automation is on the commandline. - experimental command getCommandLine + experimental command getBrowserCommandLine returns # Commandline parameters array of string arguments
diff --git a/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp b/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp index 32cadd38..58e140a 100644 --- a/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp +++ b/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp
@@ -15,8 +15,8 @@ namespace blink { -const TimeDelta IdlenessDetector::kNetworkQuietWindow; -const TimeDelta IdlenessDetector::kNetworkQuietWatchdog; +constexpr TimeDelta IdlenessDetector::kNetworkQuietWindow; +constexpr TimeDelta IdlenessDetector::kNetworkQuietWatchdog; void IdlenessDetector::Shutdown() { Stop();
diff --git a/third_party/WebKit/Source/core/page/ContextMenuController.cpp b/third_party/WebKit/Source/core/page/ContextMenuController.cpp index 8e698a8..6477c249 100644 --- a/third_party/WebKit/Source/core/page/ContextMenuController.cpp +++ b/third_party/WebKit/Source/core/page/ContextMenuController.cpp
@@ -335,9 +335,11 @@ // We know that if absoluteMediaURL() is not empty, then this // is a media element. HTMLMediaElement* media_element = ToHTMLMediaElement(r.InnerNode()); - if (IsHTMLVideoElement(*media_element)) + if (IsHTMLVideoElement(*media_element)) { data.media_type = WebContextMenuData::kMediaTypeVideo; - else if (IsHTMLAudioElement(*media_element)) + if (media_element->SupportsPictureInPicture()) + data.media_flags |= WebContextMenuData::kMediaCanPictureInPicture; + } else if (IsHTMLAudioElement(*media_element)) data.media_type = WebContextMenuData::kMediaTypeAudio; if (media_element->error())
diff --git a/third_party/WebKit/Source/core/page/ContextMenuControllerTest.cpp b/third_party/WebKit/Source/core/page/ContextMenuControllerTest.cpp index 19e1f277..15aeb5d7 100644 --- a/third_party/WebKit/Source/core/page/ContextMenuControllerTest.cpp +++ b/third_party/WebKit/Source/core/page/ContextMenuControllerTest.cpp
@@ -16,10 +16,17 @@ #include "public/web/WebContextMenuData.h" #include "testing/gtest/include/gtest/gtest.h" +using ::testing::Return; + namespace blink { namespace { +class MockWebMediaPlayerForContextMenu : public EmptyWebMediaPlayer { + public: + MOCK_CONST_METHOD0(HasVideo, bool()); +}; + class TestWebFrameClientImpl : public FrameTestHelpers::TestWebFrameClient { public: void ShowContextMenu(const WebContextMenuData& data) override { @@ -32,7 +39,7 @@ WebContentDecryptionModule*, const WebString& sink_id, WebLayerTreeView*) { - return new EmptyWebMediaPlayer(); + return new MockWebMediaPlayerForContextMenu(); } const WebContextMenuData& GetContextMenuData() const { @@ -85,12 +92,20 @@ ContextMenu context_menu; const char video_url[] = "https://example.com/foo.webm"; + // Make sure Picture-in-Picture is enabled. + GetDocument()->GetSettings()->SetPictureInPictureEnabled(true); + // Setup video element. Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument()); video->SetSrc(video_url); GetDocument()->body()->AppendChild(video); testing::RunPendingTasks(); + EXPECT_CALL(*static_cast<MockWebMediaPlayerForContextMenu*>( + video->GetWebMediaPlayer()), + HasVideo()) + .WillRepeatedly(Return(false)); + // Simulate a hit test result. hit_test_result.SetInnerNode(video); GetPage()->GetContextMenuController().SetHitTestResultForTests( @@ -116,12 +131,123 @@ {WebContextMenuData::kMediaControls, false}, {WebContextMenuData::kMediaCanPrint, false}, {WebContextMenuData::kMediaCanRotate, false}, + {WebContextMenuData::kMediaCanPictureInPicture, false}, }; for (const auto& expected_media_flag : expected_media_flags) { EXPECT_EQ(expected_media_flag.second, !!(context_menu_data.media_flags & expected_media_flag.first)) - << "Flag " << expected_media_flag.first; + << "Flag 0x" << std::hex << expected_media_flag.first; + } +} + +TEST_F(ContextMenuControllerTest, PictureInPictureEnabledVideoLoaded) { + // Make sure Picture-in-Picture is enabled. + GetDocument()->GetSettings()->SetPictureInPictureEnabled(true); + + ContextMenuAllowedScope context_menu_allowed_scope; + HitTestResult hit_test_result; + ContextMenu context_menu; + const char video_url[] = "https://example.com/foo.webm"; + + // Setup video element. + Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument()); + video->SetSrc(video_url); + GetDocument()->body()->AppendChild(video); + testing::RunPendingTasks(); + + EXPECT_CALL(*static_cast<MockWebMediaPlayerForContextMenu*>( + video->GetWebMediaPlayer()), + HasVideo()) + .WillRepeatedly(Return(true)); + + // Simulate a hit test result. + hit_test_result.SetInnerNode(video); + GetPage()->GetContextMenuController().SetHitTestResultForTests( + hit_test_result); + + EXPECT_TRUE(ShowContextMenu(&context_menu, kMenuSourceMouse)); + + // Context menu info are sent to the WebFrameClient. + WebContextMenuData context_menu_data = + GetWebFrameClient().GetContextMenuData(); + EXPECT_EQ(WebContextMenuData::kMediaTypeVideo, context_menu_data.media_type); + EXPECT_EQ(video_url, context_menu_data.src_url.GetString()); + + const std::vector<std::pair<WebContextMenuData::MediaFlags, bool>> + expected_media_flags = { + {WebContextMenuData::kMediaInError, false}, + {WebContextMenuData::kMediaPaused, true}, + {WebContextMenuData::kMediaMuted, false}, + {WebContextMenuData::kMediaLoop, false}, + {WebContextMenuData::kMediaCanSave, true}, + {WebContextMenuData::kMediaHasAudio, false}, + {WebContextMenuData::kMediaCanToggleControls, true}, + {WebContextMenuData::kMediaControls, false}, + {WebContextMenuData::kMediaCanPrint, false}, + {WebContextMenuData::kMediaCanRotate, false}, + {WebContextMenuData::kMediaCanPictureInPicture, true}, + }; + + for (const auto& expected_media_flag : expected_media_flags) { + EXPECT_EQ(expected_media_flag.second, + !!(context_menu_data.media_flags & expected_media_flag.first)) + << "Flag 0x" << std::hex << expected_media_flag.first; + } +} + +TEST_F(ContextMenuControllerTest, PictureInPictureDisabledVideoLoaded) { + // Make sure Picture-in-Picture is enabled. + GetDocument()->GetSettings()->SetPictureInPictureEnabled(false); + + ContextMenuAllowedScope context_menu_allowed_scope; + HitTestResult hit_test_result; + ContextMenu context_menu; + const char video_url[] = "https://example.com/foo.webm"; + + // Setup video element. + Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument()); + video->SetSrc(video_url); + GetDocument()->body()->AppendChild(video); + testing::RunPendingTasks(); + + EXPECT_CALL(*static_cast<MockWebMediaPlayerForContextMenu*>( + video->GetWebMediaPlayer()), + HasVideo()) + .WillRepeatedly(Return(true)); + + // Simulate a hit test result. + hit_test_result.SetInnerNode(video); + GetPage()->GetContextMenuController().SetHitTestResultForTests( + hit_test_result); + + EXPECT_TRUE(ShowContextMenu(&context_menu, kMenuSourceMouse)); + + // Context menu info are sent to the WebFrameClient. + WebContextMenuData context_menu_data = + GetWebFrameClient().GetContextMenuData(); + EXPECT_EQ(WebContextMenuData::kMediaTypeVideo, context_menu_data.media_type); + EXPECT_EQ(video_url, context_menu_data.src_url.GetString()); + + const std::vector<std::pair<WebContextMenuData::MediaFlags, bool>> + expected_media_flags = { + {WebContextMenuData::kMediaInError, false}, + {WebContextMenuData::kMediaPaused, true}, + {WebContextMenuData::kMediaMuted, false}, + {WebContextMenuData::kMediaLoop, false}, + {WebContextMenuData::kMediaCanSave, true}, + {WebContextMenuData::kMediaHasAudio, false}, + {WebContextMenuData::kMediaCanToggleControls, true}, + {WebContextMenuData::kMediaControls, false}, + {WebContextMenuData::kMediaCanPrint, false}, + {WebContextMenuData::kMediaCanRotate, false}, + {WebContextMenuData::kMediaCanPictureInPicture, false}, + }; + + for (const auto& expected_media_flag : expected_media_flags) { + EXPECT_EQ(expected_media_flag.second, + !!(context_menu_data.media_flags & expected_media_flag.first)) + << "Flag 0x" << std::hex << expected_media_flag.first; } }
diff --git a/third_party/WebKit/Source/modules/ModulesInitializer.cpp b/third_party/WebKit/Source/modules/ModulesInitializer.cpp index 98b7e05bf..50fe019 100644 --- a/third_party/WebKit/Source/modules/ModulesInitializer.cpp +++ b/third_party/WebKit/Source/modules/ModulesInitializer.cpp
@@ -62,6 +62,7 @@ #include "modules/mediastream/UserMediaController.h" #include "modules/navigatorcontentutils/NavigatorContentUtils.h" #include "modules/navigatorcontentutils/NavigatorContentUtilsClient.h" +#include "modules/picture_in_picture/PictureInPictureControllerImpl.h" #include "modules/presentation/PresentationController.h" #include "modules/presentation/PresentationReceiver.h" #include "modules/push_messaging/PushController.h" @@ -198,6 +199,11 @@ return MediaControlsImpl::Create(media_element, shadow_root); } +PictureInPictureController* +ModulesInitializer::CreatePictureInPictureController(Document& document) const { + return PictureInPictureControllerImpl::Create(document); +} + void ModulesInitializer::InitInspectorAgentSession( InspectorSession* session, bool allow_view_agents,
diff --git a/third_party/WebKit/Source/modules/ModulesInitializer.h b/third_party/WebKit/Source/modules/ModulesInitializer.h index 4718f72c..23a393e 100644 --- a/third_party/WebKit/Source/modules/ModulesInitializer.h +++ b/third_party/WebKit/Source/modules/ModulesInitializer.h
@@ -26,6 +26,8 @@ void ProvideIndexedDBClientToWorker(WorkerClients&) const override; MediaControls* CreateMediaControls(HTMLMediaElement&, ShadowRoot&) const override; + PictureInPictureController* CreatePictureInPictureController( + Document&) const override; void InitInspectorAgentSession(InspectorSession*, bool, InspectorDOMAgent*,
diff --git a/third_party/WebKit/Source/modules/media_controls/DEPS b/third_party/WebKit/Source/modules/media_controls/DEPS index d726a15..0f11be5 100644 --- a/third_party/WebKit/Source/modules/media_controls/DEPS +++ b/third_party/WebKit/Source/modules/media_controls/DEPS
@@ -5,7 +5,6 @@ "+modules/ModulesExport.h", "+modules/device_orientation", "+modules/media_controls", - "+modules/picture_in_picture", "+modules/remoteplayback", "+modules/screen_orientation", "+mojo/public/cpp/bindings",
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp index 089992bff..74092ec 100644 --- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp +++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp
@@ -79,7 +79,6 @@ #include "modules/media_controls/elements/MediaControlTimelineElement.h" #include "modules/media_controls/elements/MediaControlToggleClosedCaptionsButtonElement.h" #include "modules/media_controls/elements/MediaControlVolumeSliderElement.h" -#include "modules/picture_in_picture/PictureInPictureController.h" #include "modules/remoteplayback/HTMLMediaElementRemotePlayback.h" #include "modules/remoteplayback/RemotePlayback.h" #include "platform/EventDispatchForbiddenScope.h" @@ -157,15 +156,7 @@ } bool ShouldShowPictureInPictureButton(HTMLMediaElement& media_element) { - if (!media_element.IsHTMLVideoElement()) - return false; - - if (!media_element.HasVideo()) - return false; - - return PictureInPictureController::Ensure(media_element.GetDocument()) - .IsElementAllowed(ToHTMLVideoElement(media_element)) == - PictureInPictureController::Status::kEnabled; + return media_element.SupportsPictureInPicture(); } bool ShouldShowCastButton(HTMLMediaElement& media_element) {
diff --git a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl index fb2b6dd..6e778ee 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/mediacapture-record/MediaRecorder.html#blob-event +// https://w3c.github.io/mediacapture-record/#blob-event [ Exposed=Window,
diff --git a/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl b/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl index f6c35957..39adce1 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/mediacapture-record/MediaRecorder.html#blobeventinit +// https://w3c.github.io/mediacapture-record/#blobeventinit dictionary BlobEventInit : EventInit { required Blob data;
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp index 4bdb155..50e099a5 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp +++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
@@ -298,7 +298,7 @@ // MediaRecorder implementation is capable of recording Blob objects for the // specified MIME type. Recording may still fail if sufficient resources are // not available to support the concrete media encoding. - // [1] https://w3c.github.io/mediacapture-record/MediaRecorder.html#methods + // https://w3c.github.io/mediacapture-record/#dom-mediarecorder-istypesupported ContentType content_type(type); return handler->CanSupportMimeType(content_type.GetType(), content_type.Parameter("codecs"));
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl index aab0f64..13fb24d6 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/mediacapture-record/MediaRecorder.html#MediaRecorderAPI +// https://w3c.github.io/mediacapture-record/#mediarecorder-api enum RecordingState { "inactive", "recording", "paused" };
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl index 40da2b0..ea760ff 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://w3c.github.io/mediacapture-record/MediaRecorder.html#MediaRecorderOptions +// https://w3c.github.io/mediacapture-record/#mediarecorderoptions-section dictionary MediaRecorderOptions { DOMString mimeType; // Encoding mimeType.
diff --git a/third_party/WebKit/Source/modules/mediarecorder/README.md b/third_party/WebKit/Source/modules/mediarecorder/README.md index b80028d..90dbc3a 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/README.md +++ b/third_party/WebKit/Source/modules/mediarecorder/README.md
@@ -7,7 +7,7 @@ Encoding video uses hardware accelerated capabilities where possible: check [Encode Accelerator Implementation Status] for the current situation. -[W3C MediaStream Recording API]: https://w3c.github.io/mediacapture-record/MediaRecorder.html +[W3C MediaStream Recording API]: https://w3c.github.io/mediacapture-record/ [CanIUse]: http://caniuse.com/#feat=mediarecorder [Encode Accelerator Implementation Status]: https://github.com/yellowdoge/mediacapture-record-implementation-status/blob/master/chromium.md @@ -48,7 +48,7 @@ can be flushed using `requestData()` or `stop()`. `event.data` contains the recorded `Blob`. -[`MediaRecorderOptions`]: https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorderoptions-section +[`MediaRecorderOptions`]: https://w3c.github.io/mediacapture-record/#mediarecorderoptions-section [isTypeSupported()]: https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-isTypeSupported.html ## Implementation in Chromium @@ -61,8 +61,8 @@ [diagram] below. -[MediaRecorder class]: https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder-api -[`MediaRecorder()`]: (https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder-constructor) +[MediaRecorder class]: https://w3c.github.io/mediacapture-record/#mediarecorder-api +[`MediaRecorder()`]: (https://w3c.github.io/mediacapture-record/#mediarecorder-constructor) [`MediaRecorderHandler`]: (https://chromium.googlesource.com/chromium/src/+/master/content/renderer/media_recorder/media_recorder_handler.h) [`VideoTrackRecorder`]: https://chromium.googlesource.com/chromium/src/+/master/content/renderer/media_recorder/video_track_recorder.h [diagram]: http://ibb.co/mLK4Y5
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/BUILD.gn b/third_party/WebKit/Source/modules/picture_in_picture/BUILD.gn index c3386c2..f703a553 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/BUILD.gn +++ b/third_party/WebKit/Source/modules/picture_in_picture/BUILD.gn
@@ -10,8 +10,8 @@ "DocumentPictureInPicture.h", "HTMLVideoElementPictureInPicture.cpp", "HTMLVideoElementPictureInPicture.h", - "PictureInPictureController.cpp", - "PictureInPictureController.h", + "PictureInPictureControllerImpl.cpp", + "PictureInPictureControllerImpl.h", "PictureInPictureWindow.cpp", "PictureInPictureWindow.h", "ShadowRootPictureInPicture.cpp",
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/DocumentPictureInPicture.cpp b/third_party/WebKit/Source/modules/picture_in_picture/DocumentPictureInPicture.cpp index 0d71121..880252f 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/DocumentPictureInPicture.cpp +++ b/third_party/WebKit/Source/modules/picture_in_picture/DocumentPictureInPicture.cpp
@@ -8,7 +8,7 @@ #include "core/dom/Document.h" #include "core/dom/Element.h" #include "core/dom/events/Event.h" -#include "modules/picture_in_picture/PictureInPictureController.h" +#include "modules/picture_in_picture/PictureInPictureControllerImpl.h" namespace blink { @@ -21,16 +21,18 @@ // static bool DocumentPictureInPicture::pictureInPictureEnabled(Document& document) { - return PictureInPictureController::Ensure(document).PictureInPictureEnabled(); + return PictureInPictureControllerImpl::From(document) + .PictureInPictureEnabled(); } // static ScriptPromise DocumentPictureInPicture::exitPictureInPicture( ScriptState* script_state, Document& document) { + PictureInPictureControllerImpl& controller = + PictureInPictureControllerImpl::From(document); Element* picture_in_picture_element = - PictureInPictureController::Ensure(document).PictureInPictureElement( - ToTreeScope(document)); + controller.PictureInPictureElement(ToTreeScope(document)); if (!picture_in_picture_element) { return ScriptPromise::RejectWithDOMException( @@ -40,9 +42,9 @@ // TODO(crbug.com/806249): Call element.exitPictureInPicture(). - PictureInPictureController::Ensure(document).OnClosePictureInPictureWindow(); + controller.OnClosePictureInPictureWindow(); - PictureInPictureController::Ensure(document).UnsetPictureInPictureElement(); + controller.UnsetPictureInPictureElement(); picture_in_picture_element->DispatchEvent( Event::CreateBubble(EventTypeNames::leavepictureinpicture)); @@ -52,7 +54,7 @@ // static Element* DocumentPictureInPicture::pictureInPictureElement(TreeScope& scope) { - return PictureInPictureController::Ensure(scope.GetDocument()) + return PictureInPictureControllerImpl::From(scope.GetDocument()) .PictureInPictureElement(scope); }
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/HTMLVideoElementPictureInPicture.cpp b/third_party/WebKit/Source/modules/picture_in_picture/HTMLVideoElementPictureInPicture.cpp index a9d6f81..908bf1b 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/HTMLVideoElementPictureInPicture.cpp +++ b/third_party/WebKit/Source/modules/picture_in_picture/HTMLVideoElementPictureInPicture.cpp
@@ -8,13 +8,13 @@ #include "core/dom/DOMException.h" #include "core/dom/events/Event.h" #include "core/html/media/HTMLVideoElement.h" -#include "modules/picture_in_picture/PictureInPictureController.h" +#include "modules/picture_in_picture/PictureInPictureControllerImpl.h" #include "modules/picture_in_picture/PictureInPictureWindow.h" #include "platform/feature_policy/FeaturePolicy.h" namespace blink { -using Status = PictureInPictureController::Status; +using Status = PictureInPictureControllerImpl::Status; namespace { @@ -35,8 +35,10 @@ ScriptState* script_state, HTMLVideoElement& element) { Document& document = element.GetDocument(); - switch ( - PictureInPictureController::Ensure(document).IsElementAllowed(element)) { + PictureInPictureControllerImpl& controller = + PictureInPictureControllerImpl::From(document); + + switch (controller.IsElementAllowed(element)) { case Status::kFrameDetached: return ScriptPromise::RejectWithDOMException( script_state, @@ -70,12 +72,10 @@ // TODO(crbug.com/806249): Call element.enterPictureInPicture(). // TODO(crbug.com/806249): Don't use fake width and height. - PictureInPictureWindow* window = - PictureInPictureController::Ensure(document).CreatePictureInPictureWindow( - 500 /* width */, 300 /* height */); + PictureInPictureWindow* window = controller.CreatePictureInPictureWindow( + 500 /* width */, 300 /* height */); - PictureInPictureController::Ensure(document).SetPictureInPictureElement( - element); + controller.SetPictureInPictureElement(element); element.DispatchEvent( Event::CreateBubble(EventTypeNames::enterpictureinpicture)); @@ -111,14 +111,14 @@ Document& document = element.GetDocument(); TreeScope& scope = element.GetTreeScope(); - if (PictureInPictureController::Ensure(document).PictureInPictureElement( - scope) == &element) { + PictureInPictureControllerImpl& controller = + PictureInPictureControllerImpl::From(document); + if (controller.PictureInPictureElement(scope) == &element) { // TODO(crbug.com/806249): Call element.exitPictureInPicture(). - PictureInPictureController::Ensure(document) - .OnClosePictureInPictureWindow(); + controller.OnClosePictureInPictureWindow(); - PictureInPictureController::Ensure(document).UnsetPictureInPictureElement(); + controller.UnsetPictureInPictureElement(); element.DispatchEvent( Event::CreateBubble(EventTypeNames::leavepictureinpicture));
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.cpp b/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.cpp similarity index 64% rename from third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.cpp rename to third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.cpp index f8980e68..89d4298 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.cpp +++ b/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.cpp
@@ -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 "modules/picture_in_picture/PictureInPictureController.h" +#include "modules/picture_in_picture/PictureInPictureControllerImpl.h" #include "core/dom/Document.h" #include "core/frame/Settings.h" @@ -12,33 +12,27 @@ namespace blink { -PictureInPictureController::PictureInPictureController(Document& document) - : Supplement<Document>(document) {} - -PictureInPictureController::~PictureInPictureController() = default; +PictureInPictureControllerImpl::~PictureInPictureControllerImpl() = default; // static -PictureInPictureController& PictureInPictureController::Ensure( +PictureInPictureControllerImpl* PictureInPictureControllerImpl::Create( Document& document) { - PictureInPictureController* controller = - Supplement<Document>::From<PictureInPictureController>(document); - if (!controller) { - controller = new PictureInPictureController(document); - ProvideTo(document, controller); - } - return *controller; + return new PictureInPictureControllerImpl(document); } // static -const char PictureInPictureController::kSupplementName[] = - "PictureInPictureController"; +PictureInPictureControllerImpl& PictureInPictureControllerImpl::From( + Document& document) { + return static_cast<PictureInPictureControllerImpl&>( + PictureInPictureController::From(document)); +} -bool PictureInPictureController::PictureInPictureEnabled() const { +bool PictureInPictureControllerImpl::PictureInPictureEnabled() const { return IsDocumentAllowed() == Status::kEnabled; } PictureInPictureController::Status -PictureInPictureController::IsDocumentAllowed() const { +PictureInPictureControllerImpl::IsDocumentAllowed() const { DCHECK(GetSupplementable()); // If document has been detached from a frame, return kFrameDetached status. @@ -64,8 +58,9 @@ return Status::kEnabled; } -PictureInPictureController::Status PictureInPictureController::IsElementAllowed( - HTMLVideoElement& element) const { +PictureInPictureController::Status +PictureInPictureControllerImpl::IsElementAllowed( + const HTMLVideoElement& element) const { PictureInPictureController::Status status = IsDocumentAllowed(); if (status != Status::kEnabled) return status; @@ -76,16 +71,16 @@ return Status::kEnabled; } -void PictureInPictureController::SetPictureInPictureElement( +void PictureInPictureControllerImpl::SetPictureInPictureElement( HTMLVideoElement& element) { picture_in_picture_element_ = &element; } -void PictureInPictureController::UnsetPictureInPictureElement() { +void PictureInPictureControllerImpl::UnsetPictureInPictureElement() { picture_in_picture_element_ = nullptr; } -Element* PictureInPictureController::PictureInPictureElement( +Element* PictureInPictureControllerImpl::PictureInPictureElement( TreeScope& scope) const { if (!picture_in_picture_element_) return nullptr; @@ -94,8 +89,8 @@ } PictureInPictureWindow* -PictureInPictureController::CreatePictureInPictureWindow(int width, - int height) { +PictureInPictureControllerImpl::CreatePictureInPictureWindow(int width, + int height) { if (picture_in_picture_window_) picture_in_picture_window_->OnClose(); @@ -104,17 +99,21 @@ return picture_in_picture_window_; } -void PictureInPictureController::OnClosePictureInPictureWindow() { +void PictureInPictureControllerImpl::OnClosePictureInPictureWindow() { if (!picture_in_picture_window_) return; picture_in_picture_window_->OnClose(); } -void PictureInPictureController::Trace(blink::Visitor* visitor) { +void PictureInPictureControllerImpl::Trace(blink::Visitor* visitor) { visitor->Trace(picture_in_picture_element_); visitor->Trace(picture_in_picture_window_); Supplement<Document>::Trace(visitor); } +PictureInPictureControllerImpl::PictureInPictureControllerImpl( + Document& document) + : PictureInPictureController(document) {} + } // namespace blink
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.h b/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.h similarity index 60% rename from third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.h rename to third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.h index d8e3d10..610f0e9a 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureController.h +++ b/third_party/WebKit/Source/modules/picture_in_picture/PictureInPictureControllerImpl.h
@@ -2,58 +2,49 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef PictureInPictureController_h -#define PictureInPictureController_h +#ifndef PictureInPictureControllerImpl_h +#define PictureInPictureControllerImpl_h -#include "core/frame/LocalFrame.h" +#include "core/frame/PictureInPictureController.h" namespace blink { class HTMLVideoElement; class PictureInPictureWindow; -// The PictureInPictureController is keeping the state and implementing the +// The PictureInPictureControllerImpl is keeping the state and implementing the // logic around the Picture-in-Picture feature. It is meant to be used as well // by the Picture-in-Picture Web API and internally (eg. media controls). All -// consumers inside Blink should use this class to access Picture-in-Picture. A -// PictureInPictureController instance is associated to a Document. It is +// consumers inside Blink modules/ should use this class to access +// Picture-in-Picture. In core/, they should use PictureInPictureController. +// PictureInPictureControllerImpl instance is associated to a Document. It is // supplement and therefore can be lazy-initiated. Callers should consider // whether they want to instantiate an object when they make a call. -class PictureInPictureController - : public GarbageCollectedFinalized<PictureInPictureController>, - public Supplement<Document> { - USING_GARBAGE_COLLECTED_MIXIN(PictureInPictureController); - WTF_MAKE_NONCOPYABLE(PictureInPictureController); +class PictureInPictureControllerImpl : public PictureInPictureController { + USING_GARBAGE_COLLECTED_MIXIN(PictureInPictureControllerImpl); + WTF_MAKE_NONCOPYABLE(PictureInPictureControllerImpl); public: - static const char kSupplementName[]; + ~PictureInPictureControllerImpl() override; - virtual ~PictureInPictureController(); + // Meant to be called internally by PictureInPictureController::From() + // through ModulesInitializer. + static PictureInPictureControllerImpl* Create(Document&); - static PictureInPictureController& Ensure(Document&); + // Gets, or creates, PictureInPictureControllerImpl supplement on Document. + // Should be called before any other call to make sure a document is attached. + static PictureInPictureControllerImpl& From(Document&); // Returns whether system allows Picture-in-Picture feature or not for // the associated document. bool PictureInPictureEnabled() const; - // List of Picture-in-Picture support statuses. If status is kEnabled, - // Picture-in-Picture is enabled for a document or element, otherwise it is - // not supported. - enum class Status { - kEnabled, - kFrameDetached, - kDisabledBySystem, - kDisabledByFeaturePolicy, - kDisabledByAttribute, - }; - // Returns whether the document associated with the controller is allowed to // request Picture-in-Picture. Status IsDocumentAllowed() const; - // Returns whether a given video element in a document associated with the - // controller is allowed to request Picture-in-Picture. - Status IsElementAllowed(HTMLVideoElement&) const; + // Implementation of PictureInPictureController. + Status IsElementAllowed(const HTMLVideoElement&) const override; // Meant to be called by HTMLVideoElementPictureInPicture and DOM objects // but not internally. @@ -77,7 +68,7 @@ void Trace(blink::Visitor*) override; private: - explicit PictureInPictureController(Document&); + explicit PictureInPictureControllerImpl(Document&); // The Picture-in-Picture element for the associated document. Member<HTMLVideoElement> picture_in_picture_element_; @@ -88,4 +79,4 @@ } // namespace blink -#endif // PictureInPictureController_h +#endif // PictureInPictureControllerImpl_h
diff --git a/third_party/WebKit/Source/modules/picture_in_picture/ShadowRootPictureInPicture.cpp b/third_party/WebKit/Source/modules/picture_in_picture/ShadowRootPictureInPicture.cpp index 9aa3841..f86f8d1 100644 --- a/third_party/WebKit/Source/modules/picture_in_picture/ShadowRootPictureInPicture.cpp +++ b/third_party/WebKit/Source/modules/picture_in_picture/ShadowRootPictureInPicture.cpp
@@ -5,13 +5,13 @@ #include "modules/picture_in_picture/ShadowRootPictureInPicture.h" #include "core/dom/Document.h" -#include "modules/picture_in_picture/PictureInPictureController.h" +#include "modules/picture_in_picture/PictureInPictureControllerImpl.h" namespace blink { // static Element* ShadowRootPictureInPicture::pictureInPictureElement(TreeScope& scope) { - return PictureInPictureController::Ensure(scope.GetDocument()) + return PictureInPictureControllerImpl::From(scope.GetDocument()) .PictureInPictureElement(scope); }
diff --git a/third_party/WebKit/Source/modules/xr/BUILD.gn b/third_party/WebKit/Source/modules/xr/BUILD.gn index 0ce0f68..eccccd1 100644 --- a/third_party/WebKit/Source/modules/xr/BUILD.gn +++ b/third_party/WebKit/Source/modules/xr/BUILD.gn
@@ -39,6 +39,8 @@ "XRStageBounds.cpp", "XRStageBounds.h", "XRStageBoundsPoint.h", + "XRUtils.cpp", + "XRUtils.h", "XRView.cpp", "XRView.h", "XRViewport.h",
diff --git a/third_party/WebKit/Source/modules/xr/XRDevicePose.cpp b/third_party/WebKit/Source/modules/xr/XRDevicePose.cpp index 9139590d..f78d5df 100644 --- a/third_party/WebKit/Source/modules/xr/XRDevicePose.cpp +++ b/third_party/WebKit/Source/modules/xr/XRDevicePose.cpp
@@ -5,29 +5,11 @@ #include "modules/xr/XRDevicePose.h" #include "modules/xr/XRSession.h" +#include "modules/xr/XRUtils.h" #include "modules/xr/XRView.h" namespace blink { -namespace { - -DOMFloat32Array* transformationMatrixToFloat32Array( - const TransformationMatrix& matrix) { - float array[] = { - static_cast<float>(matrix.M11()), static_cast<float>(matrix.M12()), - static_cast<float>(matrix.M13()), static_cast<float>(matrix.M14()), - static_cast<float>(matrix.M21()), static_cast<float>(matrix.M22()), - static_cast<float>(matrix.M23()), static_cast<float>(matrix.M24()), - static_cast<float>(matrix.M31()), static_cast<float>(matrix.M32()), - static_cast<float>(matrix.M33()), static_cast<float>(matrix.M34()), - static_cast<float>(matrix.M41()), static_cast<float>(matrix.M42()), - static_cast<float>(matrix.M43()), static_cast<float>(matrix.M44())}; - - return DOMFloat32Array::Create(array, 16); -} - -} // namespace - XRDevicePose::XRDevicePose( XRSession* session, std::unique_ptr<TransformationMatrix> pose_model_matrix)
diff --git a/third_party/WebKit/Source/modules/xr/XRInputPose.cpp b/third_party/WebKit/Source/modules/xr/XRInputPose.cpp index b877268a..f0e1ce0 100644 --- a/third_party/WebKit/Source/modules/xr/XRInputPose.cpp +++ b/third_party/WebKit/Source/modules/xr/XRInputPose.cpp
@@ -4,27 +4,10 @@ #include "modules/xr/XRInputPose.h" +#include "modules/xr/XRUtils.h" + namespace blink { -namespace { - -DOMFloat32Array* transformationMatrixToFloat32Array( - const TransformationMatrix& matrix) { - float array[] = { - static_cast<float>(matrix.M11()), static_cast<float>(matrix.M12()), - static_cast<float>(matrix.M13()), static_cast<float>(matrix.M14()), - static_cast<float>(matrix.M21()), static_cast<float>(matrix.M22()), - static_cast<float>(matrix.M23()), static_cast<float>(matrix.M24()), - static_cast<float>(matrix.M31()), static_cast<float>(matrix.M32()), - static_cast<float>(matrix.M33()), static_cast<float>(matrix.M34()), - static_cast<float>(matrix.M41()), static_cast<float>(matrix.M42()), - static_cast<float>(matrix.M43()), static_cast<float>(matrix.M44())}; - - return DOMFloat32Array::Create(array, 16); -} - -} // namespace - XRInputPose::XRInputPose(std::unique_ptr<TransformationMatrix> pointer_matrix, std::unique_ptr<TransformationMatrix> grip_matrix, bool emulated_position)
diff --git a/third_party/WebKit/Source/modules/xr/XRUtils.cpp b/third_party/WebKit/Source/modules/xr/XRUtils.cpp new file mode 100644 index 0000000..7c0ce02 --- /dev/null +++ b/third_party/WebKit/Source/modules/xr/XRUtils.cpp
@@ -0,0 +1,24 @@ +// 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 "modules/xr/XRUtils.h" + +namespace blink { + +DOMFloat32Array* transformationMatrixToFloat32Array( + const TransformationMatrix& matrix) { + float array[] = { + static_cast<float>(matrix.M11()), static_cast<float>(matrix.M12()), + static_cast<float>(matrix.M13()), static_cast<float>(matrix.M14()), + static_cast<float>(matrix.M21()), static_cast<float>(matrix.M22()), + static_cast<float>(matrix.M23()), static_cast<float>(matrix.M24()), + static_cast<float>(matrix.M31()), static_cast<float>(matrix.M32()), + static_cast<float>(matrix.M33()), static_cast<float>(matrix.M34()), + static_cast<float>(matrix.M41()), static_cast<float>(matrix.M42()), + static_cast<float>(matrix.M43()), static_cast<float>(matrix.M44())}; + + return DOMFloat32Array::Create(array, 16); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/modules/xr/XRUtils.h b/third_party/WebKit/Source/modules/xr/XRUtils.h new file mode 100644 index 0000000..16ca6dc --- /dev/null +++ b/third_party/WebKit/Source/modules/xr/XRUtils.h
@@ -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. + +#ifndef XRUtils_h +#define XRUtils_h + +#include "core/typed_arrays/DOMTypedArray.h" +#include "platform/transforms/TransformationMatrix.h" + +namespace blink { + +DOMFloat32Array* transformationMatrixToFloat32Array( + const TransformationMatrix&); + +} // namespace blink + +#endif // XRUtils_h
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp index 110601f..7f939b5 100644 --- a/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp +++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintChunksToCcLayer.cpp
@@ -216,9 +216,10 @@ cc_list_.StartPaint(); cc_list_.push<cc::SaveOp>(); ApplyTransform(last_pending_combined_clip->LocalTransformSpace()); + const bool antialias = true; cc_list_.push<cc::ClipRectOp>( static_cast<SkRect>(*pending_combined_clip_rect), SkClipOp::kIntersect, - false); + antialias); cc_list_.EndPaintOfPairedBegin(); state_stack_.emplace_back(StateEntry{StateEntry::kClip, 1, @@ -254,16 +255,17 @@ cc_list_.StartPaint(); cc_list_.push<cc::SaveOp>(); ApplyTransform(sub_clip->LocalTransformSpace()); + const bool antialias = true; cc_list_.push<cc::ClipRectOp>( static_cast<SkRect>(sub_clip->ClipRect().Rect()), SkClipOp::kIntersect, - false); + antialias); if (sub_clip->ClipRect().IsRounded()) { cc_list_.push<cc::ClipRRectOp>(static_cast<SkRRect>(sub_clip->ClipRect()), - SkClipOp::kIntersect, true); + SkClipOp::kIntersect, antialias); } if (sub_clip->ClipPath()) { cc_list_.push<cc::ClipPathOp>(sub_clip->ClipPath()->GetSkPath(), - SkClipOp::kIntersect, true); + SkClipOp::kIntersect, antialias); } cc_list_.EndPaintOfPairedBegin(); state_stack_.emplace_back(StateEntry{StateEntry::kClip, 1,
diff --git a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp index bf3acf0..7eda5f7 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp +++ b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp
@@ -12,7 +12,7 @@ void FloatClipDisplayItem::Replay(GraphicsContext& context) const { context.Save(); - context.Clip(clip_rect_); + context.ClipRect(clip_rect_, kAntiAliased); } void FloatClipDisplayItem::AppendToWebDisplayItemList(
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp index ea436d8..fe532ac 100644 --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
@@ -466,6 +466,7 @@ resource->SetResourceBuffer(data); resource->SetIdentifier(CreateUniqueIdentifier()); resource->SetCacheIdentifier(cache_identifier); + resource->SetSourceOrigin(GetSourceOrigin(params.Options())); resource->Finish(0.0, Context().GetLoadingTaskRunner().get()); if (!substitute_data.IsValid()) @@ -482,6 +483,7 @@ params.GetResourceRequest(), params.Options(), params.DecoderOptions()); resource->SetStatus(ResourceStatus::kPending); resource->NotifyStartLoad(); + resource->SetSourceOrigin(GetSourceOrigin(params.Options())); resource->FinishAsError(ResourceError::CancelledDueToAccessCheckError( params.Url(), blocked_reason), Context().GetLoadingTaskRunner().get()); @@ -875,8 +877,6 @@ if (!ShouldResourceBeAddedToMemoryCache(params, resource)) return; - resource->SetSourceOrigin(GetSourceOrigin(params.Options())); - GetMemoryCache()->Add(resource); } @@ -898,6 +898,7 @@ resource->SetPreloadDiscoveryTime(params.PreloadDiscoveryTime()); } resource->SetCacheIdentifier(cache_identifier); + resource->SetSourceOrigin(GetSourceOrigin(params.Options())); AddToMemoryCacheIfNeeded(params, resource); return resource; @@ -1011,8 +1012,6 @@ if (preloads_.find(key) != preloads_.end()) return; - resource->SetSourceOrigin(GetSourceOrigin(params.Options())); - preloads_.insert(key, resource); resource->MarkAsPreload(); if (preloaded_urls_for_test_)
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue.cc index 22b0330..84557b1 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue.cc
@@ -42,7 +42,7 @@ base::Location posted_from, base::TimeDelta delay, base::Nestable nestable, - base::Optional<TaskType> task_type) + int task_type) : callback(std::move(callback)), posted_from(posted_from), delay(delay),
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue.h b/third_party/WebKit/Source/platform/scheduler/base/task_queue.h index 5bb9455..2ec862b 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue.h +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue.h
@@ -16,7 +16,6 @@ #include "platform/PlatformExport.h" #include "platform/scheduler/base/graceful_queue_shutdown_helper.h" #include "platform/scheduler/base/moveable_auto_lock.h" -#include "public/platform/TaskType.h" namespace base { namespace trace_event { @@ -62,13 +61,13 @@ base::Location posted_from, base::TimeDelta delay = base::TimeDelta(), base::Nestable nestable = base::Nestable::kNestable, - base::Optional<TaskType> task_type = base::nullopt); + int task_type = 0); base::OnceClosure callback; base::Location posted_from; base::TimeDelta delay; base::Nestable nestable; - base::Optional<TaskType> task_type; + int task_type; }; // Unregisters the task queue after which no tasks posted to it will run and @@ -135,10 +134,10 @@ public: Task(PostedTask posted_task, base::TimeTicks desired_run_time); - base::Optional<TaskType> task_type() const { return task_type_; } + int task_type() const { return task_type_; } private: - base::Optional<TaskType> task_type_; + int task_type_; }; // An interface that lets the owner vote on whether or not the associated
diff --git a/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.cc b/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.cc index 73860de..1891f78 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.cc
@@ -16,7 +16,7 @@ scoped_refptr<TaskRunnerImpl> TaskRunnerImpl::Create( scoped_refptr<TaskQueue> task_queue, - base::Optional<TaskType> task_type) { + TaskType task_type) { return base::WrapRefCounted( new TaskRunnerImpl(std::move(task_queue), task_type)); } @@ -26,7 +26,7 @@ } TaskRunnerImpl::TaskRunnerImpl(scoped_refptr<TaskQueue> task_queue, - base::Optional<TaskType> task_type) + TaskType task_type) : task_queue_(std::move(task_queue)), task_type_(task_type) {} TaskRunnerImpl::~TaskRunnerImpl() = default; @@ -35,15 +35,16 @@ base::OnceClosure task, base::TimeDelta delay) { return task_queue_->PostTaskWithMetadata(TaskQueue::PostedTask( - std::move(task), location, delay, base::Nestable::kNestable, task_type_)); + std::move(task), location, delay, base::Nestable::kNestable, + static_cast<int>(task_type_))); } bool TaskRunnerImpl::PostNonNestableDelayedTask(const base::Location& location, base::OnceClosure task, base::TimeDelta delay) { - return task_queue_->PostTaskWithMetadata( - TaskQueue::PostedTask(std::move(task), location, delay, - base::Nestable::kNonNestable, task_type_)); + return task_queue_->PostTaskWithMetadata(TaskQueue::PostedTask( + std::move(task), location, delay, base::Nestable::kNonNestable, + static_cast<int>(task_type_))); } } // namespace scheduler
diff --git a/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.h b/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.h index 2690492..5e80c24 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/child/task_runner_impl.h
@@ -10,7 +10,6 @@ #include "base/callback.h" #include "base/macros.h" #include "base/memory/scoped_refptr.h" -#include "base/optional.h" #include "base/single_thread_task_runner.h" #include "base/time/time.h" #include "platform/PlatformExport.h" @@ -24,7 +23,7 @@ public: static scoped_refptr<TaskRunnerImpl> Create( scoped_refptr<TaskQueue> task_queue, - base::Optional<TaskType> task_type); + TaskType task_type); // base::SingleThreadTaskRunner implementation: bool RunsTasksInCurrentSequence() const override; @@ -40,12 +39,11 @@ base::TimeDelta) override; private: - TaskRunnerImpl(scoped_refptr<TaskQueue> task_queue, - base::Optional<TaskType> task_type); + TaskRunnerImpl(scoped_refptr<TaskQueue> task_queue, TaskType task_type); ~TaskRunnerImpl() override; scoped_refptr<TaskQueue> task_queue_; - base::Optional<TaskType> task_type_; + TaskType task_type_; DISALLOW_COPY_AND_ASSIGN(TaskRunnerImpl); };
diff --git a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc index fc9ac06a..7e7a402 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc
@@ -15,14 +15,15 @@ namespace blink { namespace scheduler { +// TODO(kraynov): Ditch kDeprecatedNone here. WebSchedulerImpl::WebSchedulerImpl( ChildScheduler* child_scheduler, scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner, scoped_refptr<TaskQueue> v8_task_runner) : child_scheduler_(child_scheduler), idle_task_runner_(idle_task_runner), - v8_task_runner_( - TaskRunnerImpl::Create(std::move(v8_task_runner), base::nullopt)) {} + v8_task_runner_(TaskRunnerImpl::Create(std::move(v8_task_runner), + TaskType::kDeprecatedNone)) {} WebSchedulerImpl::~WebSchedulerImpl() = default;
diff --git a/third_party/WebKit/Source/platform/scheduler/child/worker_global_scope_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/child/worker_global_scope_scheduler.cc index 0680f8d..83d7814 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/worker_global_scope_scheduler.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/worker_global_scope_scheduler.cc
@@ -31,6 +31,7 @@ scoped_refptr<base::SingleThreadTaskRunner> WorkerGlobalScopeScheduler::GetTaskRunner(TaskType type) const { switch (type) { + case TaskType::kDeprecatedNone: case TaskType::kDOMManipulation: case TaskType::kUserInteraction: case TaskType::kNetworking:
diff --git a/third_party/WebKit/Source/platform/scheduler/child/worker_metrics_helper.cc b/third_party/WebKit/Source/platform/scheduler/child/worker_metrics_helper.cc index e043175..6b460b0 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/worker_metrics_helper.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/worker_metrics_helper.cc
@@ -29,14 +29,12 @@ thread_time); if (thread_type_ == WebThreadType::kDedicatedWorkerThread) { - base::Optional<TaskType> task_type = task.task_type(); + TaskType task_type = static_cast<TaskType>(task.task_type()); dedicated_worker_per_task_type_duration_reporter_.RecordTask( - task_type ? task_type.value() : static_cast<TaskType>(0), - end_time - start_time); + task_type, end_time - start_time); if (thread_time) { dedicated_worker_per_task_type_cpu_duration_reporter_.RecordTask( - task_type ? task_type.value() : static_cast<TaskType>(0), - thread_time.value()); + task_type, thread_time.value()); } } }
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc index d09df5d..deea3d1 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.cc
@@ -355,9 +355,8 @@ frame_status, FrameStatus::kCount); } - base::Optional<TaskType> task_type = task.task_type(); per_task_type_duration_reporter.RecordTask( - task_type ? task_type.value() : static_cast<TaskType>(0), duration); + static_cast<TaskType>(task.task_type()), duration); } void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time,
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h index e21c9d9f..d5f057e 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_metrics_helper.h
@@ -14,6 +14,7 @@ #include "platform/scheduler/renderer/main_thread_task_queue.h" #include "platform/scheduler/util/task_duration_metric_reporter.h" #include "platform/scheduler/util/thread_load_tracker.h" +#include "public/platform/TaskType.h" #include "public/platform/WebThreadType.h" namespace blink {
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc index 297b32a6..9f2244ce 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
@@ -122,6 +122,8 @@ const char* TaskTypeToString(TaskType task_type) { switch (task_type) { + case TaskType::kDeprecatedNone: + return "None"; case TaskType::kDOMManipulation: return "DOMManipultion"; case TaskType::kUserInteraction: @@ -195,8 +197,8 @@ base::Optional<RendererSchedulerImpl::TaskDescriptionForTracing> opt_desc) { if (!opt_desc) return nullptr; - if (opt_desc->task_type) - return TaskTypeToString(opt_desc->task_type.value()); + if (opt_desc->task_type != TaskType::kDeprecatedNone) + return TaskTypeToString(opt_desc->task_type); return MainThreadTaskQueue::NameForQueueType(opt_desc->queue_type); } @@ -2444,8 +2446,8 @@ seqlock_queueing_time_estimator_.seqlock.WriteBegin(); seqlock_queueing_time_estimator_.data.OnTopLevelTaskStarted(start, queue); seqlock_queueing_time_estimator_.seqlock.WriteEnd(); - main_thread_only().task_description_for_tracing = - TaskDescriptionForTracing{task.task_type(), queue->queue_type()}; + main_thread_only().task_description_for_tracing = TaskDescriptionForTracing{ + static_cast<TaskType>(task.task_type()), queue->queue_type()}; } void RendererSchedulerImpl::OnTaskCompleted(
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h index 02ef910..c6593b88 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
@@ -93,7 +93,7 @@ // Don't use except for tracing. struct TaskDescriptionForTracing { - base::Optional<TaskType> task_type; + TaskType task_type; MainThreadTaskQueue::QueueType queue_type; // Required in order to wrap in TraceableState.
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_web_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_web_scheduler_impl.cc index 79d9af7..617fe917 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_web_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_web_scheduler_impl.cc
@@ -16,6 +16,7 @@ namespace blink { namespace scheduler { +// TODO(kraynov): Ditch kDeprecatedNone here. RendererWebSchedulerImpl::RendererWebSchedulerImpl( RendererSchedulerImpl* renderer_scheduler) : WebSchedulerImpl(renderer_scheduler, @@ -24,7 +25,7 @@ renderer_scheduler_(renderer_scheduler), compositor_task_runner_( TaskRunnerImpl::Create(renderer_scheduler_->CompositorTaskQueue(), - base::nullopt)) {} + TaskType::kDeprecatedNone)) {} RendererWebSchedulerImpl::~RendererWebSchedulerImpl() = default;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc index e22e088..d2d5fb4 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
@@ -289,6 +289,7 @@ case TaskType::kInternalWebCrypto: case TaskType::kInternalIPC: return TaskRunnerImpl::Create(UnpausableTaskQueue(), type); + case TaskType::kDeprecatedNone: case TaskType::kCount: NOTREACHED(); break;
diff --git a/third_party/WebKit/public/BUILD.gn b/third_party/WebKit/public/BUILD.gn index a88592f..16de10a 100644 --- a/third_party/WebKit/public/BUILD.gn +++ b/third_party/WebKit/public/BUILD.gn
@@ -497,7 +497,6 @@ "web/WebFrameWidget.h", "web/WebGlobalObjectReusePolicy.h", "web/WebHeap.h", - "web/WebHelperPlugin.h", "web/WebHistoryCommitType.h", "web/WebHistoryItem.h", "web/WebHitTestResult.h",
diff --git a/third_party/WebKit/public/platform/Platform.h b/third_party/WebKit/public/platform/Platform.h index d6ce9d31..5ab3406f 100644 --- a/third_party/WebKit/public/platform/Platform.h +++ b/third_party/WebKit/public/platform/Platform.h
@@ -307,9 +307,6 @@ // hash must have been generated by calling VisitedLinkHash(). virtual bool IsLinkVisited(unsigned long long link_hash) { return false; } - // Same as above, but always returns actual value, without any caches. - virtual size_t ActualMemoryUsageMB() { return 0; } - // Return the number of of processors of the current machine. virtual size_t NumberOfProcessors() { return 0; }
diff --git a/third_party/WebKit/public/platform/TaskType.h b/third_party/WebKit/public/platform/TaskType.h index 969b107..6e6104b2 100644 --- a/third_party/WebKit/public/platform/TaskType.h +++ b/third_party/WebKit/public/platform/TaskType.h
@@ -17,7 +17,9 @@ // Speced tasks and related internal tasks should be posted to one of // the following task runners. These task runners may be throttled. - // 0 is reserved to represent that TaskType is not specified. + // This value is used as a default value in cases where TaskType + // isn't supported yet. Don't use outside platform/scheduler code. + kDeprecatedNone = 0, // https://html.spec.whatwg.org/multipage/webappapis.html#generic-task-sources //
diff --git a/third_party/WebKit/public/platform/modules/manifest/manifest.mojom b/third_party/WebKit/public/platform/modules/manifest/manifest.mojom index 106be59..2c49c21 100644 --- a/third_party/WebKit/public/platform/modules/manifest/manifest.mojom +++ b/third_party/WebKit/public/platform/modules/manifest/manifest.mojom
@@ -97,8 +97,8 @@ // Structure representing how a Web Share target handles an incoming share. struct ManifestShareTarget { // The URL template that contains placeholders to be replaced with shared - // data. Null if the parsing failed. - mojo_base.mojom.String16? url_template; + // data. Empty if the parsing failed. + url.mojom.Url? url_template; }; // Debug information for a parsed manifest.
diff --git a/third_party/WebKit/public/web/WebContextMenuData.h b/third_party/WebKit/public/web/WebContextMenuData.h index 26a4013..6aad5dba 100644 --- a/third_party/WebKit/public/web/WebContextMenuData.h +++ b/third_party/WebKit/public/web/WebContextMenuData.h
@@ -110,6 +110,7 @@ kMediaControls = 0x80, kMediaCanPrint = 0x100, kMediaCanRotate = 0x200, + kMediaCanPictureInPicture = 0x400, }; // Extra attributes describing media elements.
diff --git a/third_party/WebKit/public/web/WebHelperPlugin.h b/third_party/WebKit/public/web/WebHelperPlugin.h deleted file mode 100644 index 3fd12e3..0000000 --- a/third_party/WebKit/public/web/WebHelperPlugin.h +++ /dev/null
@@ -1,78 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef WebHelperPlugin_h -#define WebHelperPlugin_h - -#include "public/platform/WebCommon.h" -#include "WebFrame.h" - -#if INSIDE_BLINK -#include <memory> -#endif - -namespace blink { - -class WebPlugin; -class WebString; - -class WebHelperPlugin { - public: - // May return null if initialization fails. If the returned pointer is - // non-null, the caller must free it by calling destroy(). - BLINK_EXPORT static WebHelperPlugin* Create(const WebString& plugin_type, - WebLocalFrame*); - - // Returns a WebPlugin corresponding to the instantiated plugin. This will - // never return null. - virtual WebPlugin* GetPlugin() = 0; - - // Initiates destruction of the WebHelperPlugin. - virtual void Destroy() = 0; - - protected: - virtual ~WebHelperPlugin() = default; -}; - -#if INSIDE_BLINK -struct WebHelperPluginDeleter { - void operator()(WebHelperPlugin* plugin) { - if (plugin) - plugin->Destroy(); - } -}; - -using WebHelperPluginUniquePtr = - std::unique_ptr<WebHelperPlugin, WebHelperPluginDeleter>; -#endif - -} // namespace blink - -#endif
diff --git a/third_party/android_platform/development/scripts/symbol.py b/third_party/android_platform/development/scripts/symbol.py index 0ae994d..9974539 100755 --- a/third_party/android_platform/development/scripts/symbol.py +++ b/third_party/android_platform/development/scripts/symbol.py
@@ -76,29 +76,24 @@ if ARCH == "arm": toolchain_source = "arm-linux-androideabi-4.9" toolchain_prefix = "arm-linux-androideabi" - ndk = "ndk" elif ARCH == "arm64": toolchain_source = "aarch64-linux-android-4.9" toolchain_prefix = "aarch64-linux-android" - ndk = "ndk" elif ARCH == "x86": toolchain_source = "x86-4.9" toolchain_prefix = "i686-linux-android" - ndk = "ndk" elif ARCH == "x86_64" or ARCH == "x64": toolchain_source = "x86_64-4.9" toolchain_prefix = "x86_64-linux-android" - ndk = "ndk" elif ARCH == "mips": toolchain_source = "mipsel-linux-android-4.9" toolchain_prefix = "mipsel-linux-android" - ndk = "ndk" else: raise Exception("Could not find tool chain for " + ARCH) toolchain_subdir = ( - "third_party/android_tools/%s/toolchains/%s/prebuilt/linux-x86_64/bin" % - (ndk, toolchain_source)) + "third_party/android_ndk/toolchains/%s/prebuilt/linux-x86_64/bin" % + toolchain_source) return os.path.join(CHROME_SRC, toolchain_subdir, @@ -591,4 +586,4 @@ result[target_addr] = (current_symbol, i_target - current_symbol_addr) stream.close() - return result \ No newline at end of file + return result
diff --git a/third_party/closure_compiler/compile_js.gni b/third_party/closure_compiler/compile_js.gni index e921105f..83a2f1d3 100644 --- a/third_party/closure_compiler/compile_js.gni +++ b/third_party/closure_compiler/compile_js.gni
@@ -148,6 +148,7 @@ "config_files", "closure_flags", "externs_list", + "extra_deps", ]) args = [ "--compiler", @@ -206,6 +207,13 @@ args += rebase_path(externs_list, root_build_dir) sources += externs_list } + + if (defined(extra_deps)) { + if (!defined(deps)) { + deps = [] + } + deps += extra_deps + } } }
diff --git a/third_party/closure_compiler/externs/mojo.js b/third_party/closure_compiler/externs/mojo.js new file mode 100644 index 0000000..a074b9bd --- /dev/null +++ b/third_party/closure_compiler/externs/mojo.js
@@ -0,0 +1,107 @@ +/** + * @fileoverview Closure definitions of Mojo service objects. + */ + +const Mojo = {}; + +/** + * @param {string} name + * @param {MojoHandle} handle + */ +Mojo.bindInterface = function(name, handle) {}; + +const MojoHandle = class {}; + +const mojo = {}; + +// Core Mojo. + +mojo.Binding = class { + /** + * @param {!mojo.Interface} interfaceType + * @param {!Object} impl + * @param {mojo.InterfaceRequest=} request + */ + constructor(interfaceType, impl, request) {}; + + /** + * Closes the message pipe. The bound object will no longer receive messages. + */ + close() {} + + /** + * Binds to the given request. + * @param {!mojo.InterfaceRequest} request + */ + bind(request) {} + + /** @param {function()} callback */ + setConnectionErrorHandler(callback) {} + + /** + * Creates an interface ptr and bind it to this instance. + * @return {!mojo.InterfacePtr} The interface ptr. + */ + createInterfacePtrAndBind() {} +}; + + +mojo.InterfaceRequest = class { + constructor() { + /** @type {MojoHandle} */ + this.handle; + } + + /** + * Closes the message pipe. The object can no longer be bound to an + * implementation. + */ + close() {} +}; + + +/** @interface */ +mojo.InterfacePtr = class {}; + + +mojo.InterfacePtrController = class { + /** + * Closes the message pipe. Messages can no longer be sent with this object. + */ + reset() {} + + /** @param {function()} callback */ + setConnectionErrorHandler(callback) {} +}; + + +mojo.Interface = class { + constructor() { + /** @type {string} */ + this.name; + + /** @type {number} */ + this.kVersion; + + /** @type {function()} */ + this.ptrClass; + + /** @type {function()} */ + this.proxyClass; + + /** @type {function()} */ + this.stubClass; + + /** @type {function()} */ + this.validateRequest; + + /** @type {function()} */ + this.validateResponse; + } +} + +/** + * @param {!mojo.InterfacePtr} interfacePtr + * @return {!mojo.InterfaceRequest} + */ +mojo.makeRequest = function(interfacePtr) {};
diff --git a/third_party/closure_compiler/externs/networking_private.js b/third_party/closure_compiler/externs/networking_private.js index c07bea1..f332be4 100644 --- a/third_party/closure_compiler/externs/networking_private.js +++ b/third_party/closure_compiler/externs/networking_private.js
@@ -748,6 +748,7 @@ * ActivationState: (!chrome.networkingPrivate.ActivationStateType|undefined), * NetworkTechnology: (string|undefined), * RoamingState: (string|undefined), + * Scanning: (boolean|undefined), * SIMPresent: (boolean|undefined), * SignalStrength: (number|undefined) * }}
diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn index d1dafde..f6c731e 100644 --- a/third_party/harfbuzz-ng/BUILD.gn +++ b/third_party/harfbuzz-ng/BUILD.gn
@@ -74,12 +74,18 @@ "src/hb-object-private.hh", "src/hb-open-file-private.hh", "src/hb-open-type-private.hh", + "src/hb-ot-color-cbdt-table.hh", + "src/hb-ot-color-colr-table.hh", + "src/hb-ot-color-cpal-table.hh", "src/hb-ot-font.cc", "src/hb-ot-font.h", + "src/hb-ot-hdmx-table.hh", "src/hb-ot-head-table.hh", "src/hb-ot-hhea-table.hh", "src/hb-ot-hmtx-table.hh", "src/hb-ot-kern-table.hh", + "src/hb-ot-layout-base-table.hh", + "src/hb-ot-layout-base-table.hh", "src/hb-ot-layout-common-private.hh", "src/hb-ot-layout-gdef-table.hh", "src/hb-ot-layout-gpos-table.hh", @@ -95,6 +101,7 @@ "src/hb-ot-math.h", "src/hb-ot-maxp-table.hh", "src/hb-ot-name-table.hh", + "src/hb-ot-os2-unicode-ranges.hh", "src/hb-ot-post-macroman.hh", "src/hb-ot-shape-complex-arabic-fallback.hh", "src/hb-ot-shape-complex-arabic-private.hh", @@ -151,7 +158,9 @@ "src/hb-shaper-private.hh", "src/hb-shaper.cc", "src/hb-string-array.hh", + "src/hb-subset-glyf.hh", "src/hb-subset-plan.h", + "src/hb-subset-private.hh", "src/hb-subset.h", "src/hb-unicode-private.hh", "src/hb-unicode.cc",
diff --git a/third_party/harfbuzz-ng/NEWS b/third_party/harfbuzz-ng/NEWS index dfd8b1013..6b116e7 100644 --- a/third_party/harfbuzz-ng/NEWS +++ b/third_party/harfbuzz-ng/NEWS
@@ -1,3 +1,18 @@ +Overview of changes leading to 1.7.6 +Wednesday, March 7, 2018 +==================================== + +- Fix to hb_set_t binary operations. Ouch. +- New experimental harfbuzz-subset library. All of hb-subset.h + is experimental right now and API WILL change. + +- New API: +hb_blob_copy_writable_or_fail() +HB_OT_TAG_BASE +hb_set_previous() +hb_set_previous_range() + + Overview of changes leading to 1.7.5 Tuesday, January 30, 2018 ====================================
diff --git a/third_party/harfbuzz-ng/README.chromium b/third_party/harfbuzz-ng/README.chromium index a6b3344..aa9b164c 100644 --- a/third_party/harfbuzz-ng/README.chromium +++ b/third_party/harfbuzz-ng/README.chromium
@@ -1,8 +1,8 @@ Name: harfbuzz-ng Short Name: harfbuzz-ng URL: http://harfbuzz.org -Version: 1.7.5 + 0c66043a..0bff6991 -Date: 20180219 +Version: 1.7.6 +Date: 20180307 Security Critical: yes License: MIT License File: COPYING @@ -13,35 +13,31 @@ This copy of harfbuzz is usually updated by downloading the release tarball from http://www.freedesktop.org/software/harfbuzz/release/ , removing files in src, -copying *.h *.hh *.cc (except for hb-uniscribe* and hb-directwrite.* and -hb-fallback-shape.cc) from the tarball's src folder over to src, then checking -for removed or added files and update our build recipes in BUILD.gn and -harfbuzz.gyp accordingly, update the NEWS file from HarfBuzz' release notes, and -bump the version numbers in README.chromium. +copying *.h *.hh *.cc (except for the files below) from the tarball's src folder +over to src, then checking for removed or added files and update our build +recipes in BUILD.gn and harfbuzz.gyp accordingly, update the NEWS file from +HarfBuzz' release notes, and bump the version numbers in README.chromium. Currently the following files from HarfBuzz are unused and not copied: - dump-indic-data.cc - dump-khmer-data.cc - dump-myanmar-data.cc - dump-use-data.cc - hb-aat-layout-common-private.hh - hb-aat-layout-kerx-table.hh - hb-aat-layout-morx-table.hh - hb-aat-layout-private.hh - hb-aat-layout.cc - hb-directwrite.cc - hb-directwrite.h - hb-fallback-shape.cc - hb-subset-glyf.cc - hb-subset-glyf.hh - hb-subset-input.cc - hb-subset-plan.cc - hb-subset-private.hh - hb-subset.cc - hb-uniscribe.cc - hb-uniscribe.h - -Cherry-pick 0c66043a..0bff6991 to test hb_set optimizations and page size -change. - -Patch hb-ot-shape.cc to not include any aat headers yet. \ No newline at end of file + dump-indic-data.cc + dump-khmer-data.cc + dump-myanmar-data.cc + dump-use-data.cc + hb-aat-layout-ankr-table.hh + hb-aat-layout-common-private.hh + hb-aat-layout-kerx-table.hh + hb-aat-layout-morx-table.hh + hb-aat-layout-private.hh + hb-aat-layout-trak-table.hh + hb-aat-layout.cc + hb-directwrite.cc + hb-directwrite.h + hb-fallback-shape.cc + hb-ot-color.cc + hb-subset-glyf.cc + hb-subset-input.cc + hb-subset-plan.cc + hb-subset.cc + hb-uniscribe.cc + hb-uniscribe.h + test-unicode-ranges.cc
diff --git a/third_party/harfbuzz-ng/src/hb-buffer-deserialize-json.hh b/third_party/harfbuzz-ng/src/hb-buffer-deserialize-json.hh index 125a4192..be374c7 100644 --- a/third_party/harfbuzz-ng/src/hb-buffer-deserialize-json.hh +++ b/third_party/harfbuzz-ng/src/hb-buffer-deserialize-json.hh
@@ -34,397 +34,397 @@ #line 36 "hb-buffer-deserialize-json.hh" static const unsigned char _deserialize_json_trans_keys[] = { - 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, - 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, - 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, - 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, - 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, + 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, + 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, + 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, + 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, + 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 }; static const char _deserialize_json_key_spans[] = { - 0, 115, 26, 7, 2, 1, 50, 49, - 10, 117, 117, 117, 1, 50, 49, 10, - 117, 117, 1, 1, 50, 49, 117, 117, - 2, 1, 50, 49, 10, 117, 117, 1, - 50, 49, 10, 117, 117, 1, 50, 49, + 0, 115, 26, 7, 2, 1, 50, 49, + 10, 117, 117, 117, 1, 50, 49, 10, + 117, 117, 1, 1, 50, 49, 117, 117, + 2, 1, 50, 49, 10, 117, 117, 1, + 50, 49, 10, 117, 117, 1, 50, 49, 58, 89, 117, 117, 85, 115, 0 }; static const short _deserialize_json_index_offsets[] = { - 0, 0, 116, 143, 151, 154, 156, 207, - 257, 268, 386, 504, 622, 624, 675, 725, - 736, 854, 972, 974, 976, 1027, 1077, 1195, - 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, - 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, + 0, 0, 116, 143, 151, 154, 156, 207, + 257, 268, 386, 504, 622, 624, 675, 725, + 736, 854, 972, 974, 976, 1027, 1077, 1195, + 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, + 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, 2119, 2178, 2268, 2386, 2504, 2590, 2706 }; static const char _deserialize_json_indicies[] = { - 0, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 1, 3, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 4, 1, - 5, 1, 6, 7, 1, 1, 8, 1, - 9, 10, 1, 11, 1, 11, 11, 11, - 11, 11, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 11, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 12, 1, - 12, 12, 12, 12, 12, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 12, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 13, 1, 1, 14, - 15, 15, 15, 15, 15, 15, 15, 15, - 15, 1, 16, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 1, 18, 18, 18, - 18, 18, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 18, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 19, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 20, 1, 21, 21, 21, 21, 21, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 21, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 22, - 1, 18, 18, 18, 18, 18, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 18, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 19, 1, 1, 1, - 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 20, 1, 23, - 1, 23, 23, 23, 23, 23, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 23, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 24, 1, 24, 24, 24, 24, - 24, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 24, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 25, 1, 1, 26, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 1, 28, 29, - 29, 29, 29, 29, 29, 29, 29, 29, - 1, 30, 30, 30, 30, 30, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 30, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 31, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 32, 1, 30, - 30, 30, 30, 30, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 30, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 31, 1, 1, 1, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 32, 1, 33, 1, 34, - 1, 34, 34, 34, 34, 34, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 34, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 35, 1, 35, 35, 35, 35, - 35, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 35, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 36, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 1, 38, 38, - 38, 38, 38, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 39, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 40, 1, 38, 38, 38, 38, - 38, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 38, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 39, - 1, 1, 1, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 40, 1, 42, 43, 1, 44, 1, 44, - 44, 44, 44, 44, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 44, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 45, 1, 45, 45, 45, 45, 45, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 45, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 46, 1, - 1, 47, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 1, 49, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 1, 51, - 51, 51, 51, 51, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 51, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 52, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 53, 1, 51, 51, 51, - 51, 51, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 51, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 52, 1, 1, 1, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 53, 1, 54, 1, 54, 54, 54, - 54, 54, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 54, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 55, 1, - 55, 55, 55, 55, 55, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 55, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 56, 1, 1, 57, - 58, 58, 58, 58, 58, 58, 58, 58, - 58, 1, 59, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 1, 61, 61, 61, - 61, 61, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 61, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 62, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 63, 1, 61, 61, 61, 61, 61, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 61, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 62, 1, - 1, 1, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 63, - 1, 64, 1, 64, 64, 64, 64, 64, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 64, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 65, 1, 65, 65, - 65, 65, 65, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 65, 1, 66, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 67, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 1, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 1, 1, 1, 1, 1, 1, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 1, 70, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 71, 71, - 1, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 1, 1, 1, 1, 1, - 1, 1, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1, 1, 1, 1, - 71, 1, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1, 72, 72, 72, - 72, 72, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 72, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 73, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 74, 1, 72, 72, 72, 72, 72, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 72, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 73, 1, - 1, 1, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 74, - 1, 76, 76, 76, 76, 76, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 76, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 77, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 78, 1, 0, - 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 4, 1, + 5, 1, 6, 7, 1, 1, 8, 1, + 9, 10, 1, 11, 1, 11, 11, 11, + 11, 11, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 11, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 12, 1, + 12, 12, 12, 12, 12, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 12, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 13, 1, 1, 14, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 1, 16, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 1, 18, 18, 18, + 18, 18, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 18, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 19, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 20, 1, 21, 21, 21, 21, 21, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 21, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 22, + 1, 18, 18, 18, 18, 18, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 18, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 19, 1, 1, 1, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 20, 1, 23, + 1, 23, 23, 23, 23, 23, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 23, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 24, 1, 24, 24, 24, 24, + 24, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 24, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 25, 1, 1, 26, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 1, 28, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 30, 30, 30, 30, 30, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 31, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 32, 1, 30, + 30, 30, 30, 30, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 30, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 31, 1, 1, 1, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 32, 1, 33, 1, 34, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 35, 1, 35, 35, 35, 35, + 35, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 35, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 36, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 38, 38, 38, 38, + 38, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 40, 1, 42, 43, 1, 44, 1, 44, + 44, 44, 44, 44, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 44, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 45, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 46, 1, + 1, 47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 1, 49, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 51, + 51, 51, 51, 51, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 51, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 52, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 51, 51, 51, + 51, 51, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 51, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 52, 1, 1, 1, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 53, 1, 54, 1, 54, 54, 54, + 54, 54, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 54, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 55, 1, + 55, 55, 55, 55, 55, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 55, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 1, 1, 57, + 58, 58, 58, 58, 58, 58, 58, 58, + 58, 1, 59, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 61, 61, 61, + 61, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 61, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 62, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 63, 1, 61, 61, 61, 61, 61, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 61, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 62, 1, + 1, 1, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 63, + 1, 64, 1, 64, 64, 64, 64, 64, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 64, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 65, 1, 65, 65, + 65, 65, 65, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 65, 1, 66, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 67, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 1, 1, 1, 1, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 70, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 71, 71, + 1, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 1, 1, 1, 1, 1, + 1, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 1, 1, 1, + 71, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 72, 72, 72, + 72, 72, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 72, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 73, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 74, 1, 72, 72, 72, 72, 72, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 72, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 73, 1, + 1, 1, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 74, + 1, 76, 76, 76, 76, 76, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 76, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 77, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 78, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0 }; static const char _deserialize_json_trans_targs[] = { - 1, 0, 2, 2, 3, 4, 18, 24, - 37, 5, 12, 6, 7, 8, 9, 11, - 9, 11, 10, 2, 44, 10, 44, 13, - 14, 15, 16, 17, 16, 17, 10, 2, - 44, 19, 20, 21, 22, 23, 10, 2, - 44, 23, 25, 31, 26, 27, 28, 29, - 30, 29, 30, 10, 2, 44, 32, 33, - 34, 35, 36, 35, 36, 10, 2, 44, - 38, 39, 40, 42, 43, 41, 10, 41, + 1, 0, 2, 2, 3, 4, 18, 24, + 37, 5, 12, 6, 7, 8, 9, 11, + 9, 11, 10, 2, 44, 10, 44, 13, + 14, 15, 16, 17, 16, 17, 10, 2, + 44, 19, 20, 21, 22, 23, 10, 2, + 44, 23, 25, 31, 26, 27, 28, 29, + 30, 29, 30, 10, 2, 44, 32, 33, + 34, 35, 36, 35, 36, 10, 2, 44, + 38, 39, 40, 42, 43, 41, 10, 41, 10, 2, 44, 43, 44, 45, 46 }; static const char _deserialize_json_trans_actions[] = { - 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 2, 2, - 0, 0, 3, 3, 4, 0, 5, 0, - 0, 2, 2, 2, 0, 0, 6, 6, - 7, 0, 0, 0, 2, 2, 8, 8, - 9, 0, 0, 0, 0, 0, 2, 2, - 2, 0, 0, 10, 10, 11, 0, 0, - 2, 2, 2, 0, 0, 12, 12, 13, - 0, 0, 0, 2, 2, 2, 14, 0, + 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 3, 3, 4, 0, 5, 0, + 0, 2, 2, 2, 0, 0, 6, 6, + 7, 0, 0, 0, 2, 2, 8, 8, + 9, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 0, 10, 10, 11, 0, 0, + 2, 2, 2, 0, 0, 12, 12, 13, + 0, 0, 0, 2, 2, 2, 14, 0, 15, 15, 16, 0, 0, 0, 0 }; @@ -461,7 +461,7 @@ int cs; hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; - + #line 466 "hb-buffer-deserialize-json.hh" { cs = deserialize_json_start;
diff --git a/third_party/harfbuzz-ng/src/hb-buffer-deserialize-text.hh b/third_party/harfbuzz-ng/src/hb-buffer-deserialize-text.hh index 426b137..a6ab0bb 100644 --- a/third_party/harfbuzz-ng/src/hb-buffer-deserialize-text.hh +++ b/third_party/harfbuzz-ng/src/hb-buffer-deserialize-text.hh
@@ -34,274 +34,274 @@ #line 36 "hb-buffer-deserialize-text.hh" static const unsigned char _deserialize_text_trans_keys[] = { - 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, - 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, - 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, + 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, + 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, + 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 0 }; static const char _deserialize_text_key_spans[] = { - 0, 114, 13, 10, 13, 10, 10, 13, - 10, 1, 13, 10, 14, 116, 116, 0, - 114, 116, 116, 116, 116, 116, 116, 116, + 0, 114, 13, 10, 13, 10, 10, 13, + 10, 1, 13, 10, 14, 116, 116, 0, + 114, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116 }; static const short _deserialize_text_index_offsets[] = { - 0, 0, 115, 129, 140, 154, 165, 176, - 190, 201, 203, 217, 228, 243, 360, 477, - 478, 593, 710, 827, 944, 1061, 1178, 1295, + 0, 0, 115, 129, 140, 154, 165, 176, + 190, 201, 203, 217, 228, 243, 360, 477, + 478, 593, 710, 827, 944, 1061, 1178, 1295, 1412, 1529, 1646 }; static const char _deserialize_text_indicies[] = { - 0, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 1, 5, 1, 1, 6, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 1, 8, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 1, 10, 1, 1, - 11, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 1, 13, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 1, 15, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 1, 17, 1, 1, 18, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 1, 20, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 1, 22, 1, 23, 1, 1, 24, - 25, 25, 25, 25, 25, 25, 25, 25, - 25, 1, 26, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 1, 22, 1, 1, - 1, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 1, 28, 28, 28, 28, - 28, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 28, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 29, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 30, 1, 1, 31, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 32, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 33, - 1, 34, 34, 34, 34, 34, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 34, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 35, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 36, 1, 1, 0, - 0, 0, 0, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 1, 1, 1, 1, 1, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 28, 28, 28, 28, 28, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 28, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 29, 1, 1, 1, - 1, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 1, 1, 1, 30, 1, - 1, 31, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 32, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 33, 1, 38, - 38, 38, 38, 38, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 38, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 39, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 40, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 41, 1, 42, 42, 42, 42, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 42, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 43, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 44, - 1, 42, 42, 42, 42, 42, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 42, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 43, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 44, 1, 38, 38, - 38, 38, 38, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 38, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 39, 1, 1, 1, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 40, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 41, 1, 45, 45, 45, 45, 45, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 45, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 46, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 47, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 48, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 49, 1, - 50, 50, 50, 50, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 50, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 51, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 52, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 53, 1, 50, 50, 50, - 50, 50, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 51, - 1, 1, 1, 1, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 52, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 53, 1, 45, 45, 45, 45, 45, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 45, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 46, 1, 1, 1, - 1, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 1, 1, 1, 1, 1, - 1, 47, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 48, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 49, 1, 28, - 28, 28, 28, 28, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 28, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 29, 1, 55, 55, 1, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 1, 1, 1, 30, 1, 1, 31, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 1, 1, 32, 1, 55, 1, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 5, 1, 1, 6, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 1, 8, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 10, 1, 1, + 11, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 1, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 1, 15, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 1, 17, 1, 1, 18, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 1, 20, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 1, 22, 1, 23, 1, 1, 24, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 1, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 1, 22, 1, 1, + 1, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 1, 28, 28, 28, 28, + 28, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 29, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 31, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 32, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 33, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 35, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 36, 1, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 28, 28, 28, 28, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 28, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 29, 1, 1, 1, + 1, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 1, 1, 1, 30, 1, + 1, 31, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 32, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 33, 1, 38, + 38, 38, 38, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 38, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 39, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 40, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 41, 1, 42, 42, 42, 42, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 42, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 43, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 44, + 1, 42, 42, 42, 42, 42, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 43, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 44, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 41, 1, 45, 45, 45, 45, 45, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 45, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 46, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 47, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 48, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 49, 1, + 50, 50, 50, 50, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 50, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 51, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 52, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 50, 50, 50, + 50, 50, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 51, + 1, 1, 1, 1, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 52, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 53, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 46, 1, 1, 1, + 1, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 1, 1, 1, 1, 1, + 1, 47, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 48, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 49, 1, 28, + 28, 28, 28, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 29, 1, 55, 55, 1, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 1, 1, 1, 30, 1, 1, 31, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 1, 1, 32, 1, 55, 1, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 33, 1, 0 }; static const char _deserialize_text_trans_targs[] = { - 1, 0, 13, 17, 26, 3, 18, 21, - 18, 21, 5, 19, 20, 19, 20, 22, - 25, 8, 9, 12, 9, 12, 10, 11, - 23, 24, 23, 24, 14, 2, 6, 7, - 15, 16, 14, 15, 16, 17, 14, 4, - 15, 16, 14, 15, 16, 14, 2, 7, + 1, 0, 13, 17, 26, 3, 18, 21, + 18, 21, 5, 19, 20, 19, 20, 22, + 25, 8, 9, 12, 9, 12, 10, 11, + 23, 24, 23, 24, 14, 2, 6, 7, + 15, 16, 14, 15, 16, 17, 14, 4, + 15, 16, 14, 15, 16, 14, 2, 7, 15, 16, 14, 2, 15, 16, 25, 26 }; static const char _deserialize_text_trans_actions[] = { - 0, 0, 1, 1, 1, 2, 2, 2, - 0, 0, 2, 2, 2, 0, 0, 2, - 2, 2, 2, 2, 0, 0, 3, 2, - 2, 2, 0, 0, 4, 5, 5, 5, - 4, 4, 0, 0, 0, 0, 6, 7, - 6, 6, 8, 8, 8, 9, 10, 10, + 0, 0, 1, 1, 1, 2, 2, 2, + 0, 0, 2, 2, 2, 0, 0, 2, + 2, 2, 2, 2, 0, 0, 3, 2, + 2, 2, 0, 0, 4, 5, 5, 5, + 4, 4, 0, 0, 0, 0, 6, 7, + 6, 6, 8, 8, 8, 9, 10, 10, 9, 9, 11, 12, 11, 11, 0, 0 }; static const char _deserialize_text_eof_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, - 0, 4, 6, 8, 8, 6, 9, 11, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 6, 8, 8, 6, 9, 11, 11, 9, 4 }; @@ -338,7 +338,7 @@ int cs; hb_glyph_info_t info = {0}; hb_glyph_position_t pos = {0}; - + #line 343 "hb-buffer-deserialize-text.hh" { cs = deserialize_text_start;
diff --git a/third_party/harfbuzz-ng/src/hb-gobject-structs.h b/third_party/harfbuzz-ng/src/hb-gobject-structs.h index a34b06ab..302dc95 100644 --- a/third_party/harfbuzz-ng/src/hb-gobject-structs.h +++ b/third_party/harfbuzz-ng/src/hb-gobject-structs.h
@@ -45,7 +45,8 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_blob_get_type (void); +HB_EXTERN GType +hb_gobject_blob_get_type (void); #define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ()) /** @@ -53,7 +54,8 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_buffer_get_type (void); +HB_EXTERN GType +hb_gobject_buffer_get_type (void); #define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ()) /** @@ -61,7 +63,8 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_face_get_type (void); +HB_EXTERN GType +hb_gobject_face_get_type (void); #define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ()) /** @@ -69,7 +72,8 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_font_get_type (void); +HB_EXTERN GType +hb_gobject_font_get_type (void); #define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ()) /** @@ -77,13 +81,16 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_font_funcs_get_type (void); +HB_EXTERN GType +hb_gobject_font_funcs_get_type (void); #define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ()) -HB_EXTERN GType hb_gobject_set_get_type (void); +HB_EXTERN GType +hb_gobject_set_get_type (void); #define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ()) -HB_EXTERN GType hb_gobject_shape_plan_get_type (void); +HB_EXTERN GType +hb_gobject_shape_plan_get_type (void); #define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ()) /** @@ -91,30 +98,38 @@ * * Since: 0.9.2 **/ -HB_EXTERN GType hb_gobject_unicode_funcs_get_type (void); +HB_EXTERN GType +hb_gobject_unicode_funcs_get_type (void); #define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ()) /* Value types */ -HB_EXTERN GType hb_gobject_feature_get_type (void); +HB_EXTERN GType +hb_gobject_feature_get_type (void); #define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ()) -HB_EXTERN GType hb_gobject_glyph_info_get_type (void); +HB_EXTERN GType +hb_gobject_glyph_info_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ()) -HB_EXTERN GType hb_gobject_glyph_position_get_type (void); +HB_EXTERN GType +hb_gobject_glyph_position_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ()) -HB_EXTERN GType hb_gobject_segment_properties_get_type (void); +HB_EXTERN GType +hb_gobject_segment_properties_get_type (void); #define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ()) -HB_EXTERN GType hb_gobject_user_data_key_get_type (void); +HB_EXTERN GType +hb_gobject_user_data_key_get_type (void); #define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ()) -HB_EXTERN GType hb_gobject_ot_math_glyph_variant_get_type (void); +HB_EXTERN GType +hb_gobject_ot_math_glyph_variant_get_type (void); #define HB_GOBJECT_TYPE_OT_MATH_GLYPH_VARIANT (hb_gobject_ot_math_glyph_variant_get_type ()) -HB_EXTERN GType hb_gobject_ot_math_glyph_part_get_type (void); +HB_EXTERN GType +hb_gobject_ot_math_glyph_part_get_type (void); #define HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART (hb_gobject_ot_math_glyph_part_get_type ())
diff --git a/third_party/harfbuzz-ng/src/hb-open-file-private.hh b/third_party/harfbuzz-ng/src/hb-open-file-private.hh index f01ab87..e2644ea 100644 --- a/third_party/harfbuzz-ng/src/hb-open-file-private.hh +++ b/third_party/harfbuzz-ng/src/hb-open-file-private.hh
@@ -30,6 +30,7 @@ #define HB_OPEN_FILE_PRIVATE_HH #include "hb-open-type-private.hh" +#include "hb-ot-head-table.hh" namespace OT { @@ -54,7 +55,7 @@ typedef struct TableRecord { int cmp (Tag t) const - { return t.cmp (tag); } + { return -t.cmp (tag); } static int cmp (const void *pa, const void *pb) { @@ -133,39 +134,67 @@ unsigned int table_count) { TRACE_SERIALIZE (this); - /* alloc 12 for the OTHeader */ + /* Alloc 12 for the OTHeader. */ if (unlikely (!c->extend_min (*this))) return_trace (false); - /* write sfntVersion (bytes 0..3) */ + /* Write sfntVersion (bytes 0..3). */ sfnt_version.set (sfnt_tag); - /* take space for numTables, searchRange, entrySelector, RangeShift - * and the TableRecords themselves - */ + /* Take space for numTables, searchRange, entrySelector, RangeShift + * and the TableRecords themselves. */ if (unlikely (!tables.serialize (c, table_count))) return_trace (false); - /* write OffsetTables, alloc for and write actual table blobs */ + const char *dir_end = (const char *) c->head; + HBUINT32 *checksum_adjustment = nullptr; + + /* Write OffsetTables, alloc for and write actual table blobs. */ for (unsigned int i = 0; i < table_count; i++) { TableRecord &rec = tables.array[i]; hb_blob_t *blob = blobs[i]; rec.tag.set (tags[i]); rec.length.set (hb_blob_get_length (blob)); - rec.checkSum.set_for_data (hb_blob_get_data (blob, nullptr), rec.length); rec.offset.serialize (c, this); - // take room for the table - void *p = c->allocate_size<void> (rec.length); - if (unlikely (!p)) {return false;} - /* copy the actual table */ - memcpy (p, hb_blob_get_data (blob, nullptr), rec.length); - /* 4-byte allignment */ + + /* Allocate room for the table and copy it. */ + char *start = (char *) c->allocate_size<void> (rec.length); + if (unlikely (!start)) {return false;} + + memcpy (start, hb_blob_get_data (blob, nullptr), rec.length); + + /* 4-byte allignment. */ if (rec.length % 4) - p = c->allocate_size<void> (4 - rec.length % 4); + c->allocate_size<void> (4 - rec.length % 4); + const char *end = (const char *) c->head; + + if (tags[i] == HB_OT_TAG_head && end - start >= head::static_size) + { + head *h = (head *) start; + checksum_adjustment = &h->checkSumAdjustment; + checksum_adjustment->set (0); + } + + rec.checkSum.set_for_data (start, end - start); } tags += table_count; blobs += table_count; - /* TODO: update head table checkSumAdjustment. */ - tables.qsort (); + + if (checksum_adjustment) + { + CheckSum checksum; + + /* The following line is a slower version of the following block. */ + //checksum.set_for_data (this, (const char *) c->head - (const char *) this); + checksum.set_for_data (this, dir_end - (const char *) this); + for (unsigned int i = 0; i < table_count; i++) + { + TableRecord &rec = tables.array[i]; + checksum.set (checksum + rec.checkSum); + } + + checksum_adjustment->set (0xB1B0AFBAu - checksum); + } + return_trace (true); }
diff --git a/third_party/harfbuzz-ng/src/hb-open-type-private.hh b/third_party/harfbuzz-ng/src/hb-open-type-private.hh index 080dcca1..5d33199e 100644 --- a/third_party/harfbuzz-ng/src/hb-open-type-private.hh +++ b/third_party/harfbuzz-ng/src/hb-open-type-private.hh
@@ -692,8 +692,8 @@ /* 32-bit signed fixed-point number (16.16). */ struct Fixed: HBINT32 { - //inline float to_float (void) const { return ???; } - //inline void set_float (float f) { v.set (f * ???); } + inline float to_float (void) const { return ((int32_t) v) / 65536.0; } + inline void set_float (float f) { v.set (round (f * 65536.0)); } public: DEFINE_SIZE_STATIC (4); }; @@ -740,8 +740,6 @@ struct Offset : Type { inline bool is_null (void) const { return 0 == *this; } - public: - DEFINE_SIZE_STATIC (sizeof(Type)); inline void *serialize (hb_serialize_context_t *c, const void *base) { @@ -749,6 +747,9 @@ this->set ((char *) t - (char *) base); /* TODO(serialize) Overflow? */ return t; } + + public: + DEFINE_SIZE_STATIC (sizeof(Type)); }; typedef Offset<HBUINT16> Offset16; @@ -762,7 +763,8 @@ static inline uint32_t CalcTableChecksum (const HBUINT32 *Table, uint32_t Length) { uint32_t Sum = 0L; - const HBUINT32 *EndPtr = Table+((Length+3) & ~3) / HBUINT32::static_size; + assert (0 == (Length & 3)); + const HBUINT32 *EndPtr = Table + Length / HBUINT32::static_size; while (Table < EndPtr) Sum += *Table++; @@ -1113,7 +1115,9 @@ assert (len == v); entrySelectorZ.set (MAX (1u, _hb_bit_storage (v)) - 1); searchRangeZ.set (16 * (1u << entrySelectorZ)); - rangeShiftZ.set (16 * MAX (0, (int) v - searchRangeZ)); + rangeShiftZ.set (v * 16 > searchRangeZ + ? 16 * v - searchRangeZ + : 0); } protected:
diff --git a/third_party/harfbuzz-ng/src/hb-ot-cmap-table.hh b/third_party/harfbuzz-ng/src/hb-ot-cmap-table.hh index 8d9ade4..02079898 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-cmap-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-cmap-table.hh
@@ -602,9 +602,9 @@ + 8 // 1 EncodingRecord + 16 // Format 12 header + 12 * groups.len; // SequentialMapGroup records - void *dest = calloc (dest_sz, 1); + void *dest = malloc (dest_sz); if (unlikely (!dest)) { - DEBUG_MSG(SUBSET, nullptr, "Unable to alloc %zu for cmap subset output", dest_sz); + DEBUG_MSG(SUBSET, nullptr, "Unable to alloc %lu for cmap subset output", (unsigned long) dest_sz); return false; } @@ -618,9 +618,11 @@ hb_blob_t *cmap_prime = hb_blob_create ((const char *)dest, dest_sz, HB_MEMORY_MODE_READONLY, - /* userdata */ nullptr, + dest, free); - return hb_subset_plan_add_table (plan, HB_OT_TAG_cmap, cmap_prime); + bool result = hb_subset_plan_add_table (plan, HB_OT_TAG_cmap, cmap_prime); + hb_blob_destroy (cmap_prime); + return result; } struct accelerator_t
diff --git a/third_party/harfbuzz-ng/src/hb-ot-cbdt-table.hh b/third_party/harfbuzz-ng/src/hb-ot-color-cbdt-table.hh similarity index 98% rename from third_party/harfbuzz-ng/src/hb-ot-cbdt-table.hh rename to third_party/harfbuzz-ng/src/hb-ot-color-cbdt-table.hh index e4519529..e7ab917 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-cbdt-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-color-cbdt-table.hh
@@ -24,8 +24,8 @@ * Google Author(s): Seigo Nonaka */ -#ifndef HB_OT_CBDT_TABLE_HH -#define HB_OT_CBDT_TABLE_HH +#ifndef HB_OT_COLOR_CBDT_TABLE_HH +#define HB_OT_COLOR_CBDT_TABLE_HH #include "hb-open-type-private.hh" @@ -468,4 +468,4 @@ } /* namespace OT */ -#endif /* HB_OT_CBDT_TABLE_HH */ +#endif /* HB_OT_COLOR_CBDT_TABLE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-color-colr-table.hh b/third_party/harfbuzz-ng/src/hb-ot-color-colr-table.hh new file mode 100644 index 0000000..2c3b1ccc --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-ot-color-colr-table.hh
@@ -0,0 +1,142 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#ifndef HB_OT_COLOR_COLR_TABLE_HH +#define HB_OT_COLOR_COLR_TABLE_HH + +#include "hb-open-type-private.hh" + +/* + * Color Palette + * http://www.microsoft.com/typography/otspec/colr.htm + */ + +#define HB_OT_TAG_COLR HB_TAG('C','O','L','R') + +namespace OT { + + +struct LayerRecord +{ + friend struct COLR; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + protected: + GlyphID gID; /* Glyph ID of layer glyph */ + HBUINT16 paletteIndex; /* Index value to use with a selected color palette */ + public: + DEFINE_SIZE_STATIC (4); +}; + +struct BaseGlyphRecord +{ + friend struct COLR; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + protected: + GlyphID gID; /* Glyph ID of reference glyph */ + HBUINT16 firstLayerIndex; /* Index to the layer record */ + HBUINT16 numLayers; /* Number of color layers associated with this glyph */ + public: + DEFINE_SIZE_STATIC (6); +}; + +struct COLR +{ + static const hb_tag_t tableTag = HB_OT_TAG_COLR; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + if (!(c->check_struct (this) && + c->check_array ((const void*) &layerRecordsOffsetZ, sizeof (LayerRecord), numLayerRecords) && + c->check_array ((const void*) &baseGlyphRecordsZ, sizeof (BaseGlyphRecord), numBaseGlyphRecords))) + return_trace (false); + + const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this); + for (unsigned int i = 0; i < numBaseGlyphRecords; ++i) + if (base_glyph_records[i].firstLayerIndex + + base_glyph_records[i].numLayers > numLayerRecords) + return_trace (false); + + return_trace (true); + } + + inline bool get_base_glyph_record ( + hb_codepoint_t glyph_id, unsigned int &first_layer, unsigned int &num_layers) const + { + const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this); + unsigned int min = 0, max = numBaseGlyphRecords - 1; + while (min <= max) + { + unsigned int mid = (min + max) / 2; + hb_codepoint_t gID = base_glyph_records[mid].gID; + if (gID > glyph_id) + max = mid - 1; + else if (gID < glyph_id) + min = mid + 1; + else + { + first_layer = base_glyph_records[mid].firstLayerIndex; + num_layers = base_glyph_records[mid].numLayers; + return true; + } + } + return false; + } + + inline void get_layer_record (int layer, + hb_codepoint_t &glyph_id, unsigned int &palette_index) const + { + const LayerRecord* records = &layerRecordsOffsetZ (this); + glyph_id = records[layer].gID; + palette_index = records[layer].paletteIndex; + } + + protected: + HBUINT16 version; /* Table version number */ + HBUINT16 numBaseGlyphRecords; /* Number of Base Glyph Records */ + LOffsetTo<BaseGlyphRecord> + baseGlyphRecordsZ; /* Offset to Base Glyph records. */ + LOffsetTo<LayerRecord> + layerRecordsOffsetZ; /* Offset to Layer Records */ + HBUINT16 numLayerRecords; /* Number of Layer Records */ + public: + DEFINE_SIZE_STATIC (14); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_COLOR_COLR_TABLE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-color-cpal-table.hh b/third_party/harfbuzz-ng/src/hb-ot-color-cpal-table.hh new file mode 100644 index 0000000..e364c8a --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-ot-color-cpal-table.hh
@@ -0,0 +1,208 @@ +/* + * Copyright © 2016 Google, Inc. + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Sascha Brawer + */ + +#ifndef HB_OT_COLOR_CPAL_TABLE_HH +#define HB_OT_COLOR_CPAL_TABLE_HH + +#include "hb-open-type-private.hh" + + +/* + * Following parts to be moved to a public header. + */ + +/** + * hb_ot_color_t: + * ARGB data type for holding color values. + * + * Since: REPLACEME + */ +typedef uint32_t hb_ot_color_t; + + +/** + * hb_ot_color_palette_flags_t: + * @HB_OT_COLOR_PALETTE_FLAG_DEFAULT: default indicating that there is nothing special to note about a color palette. + * @HB_OT_COLOR_PALETTE_FLAG_FOR_LIGHT_BACKGROUND: flag indicating that the color palette is suitable for rendering text on light background. + * @HB_OT_COLOR_PALETTE_FLAG_FOR_DARK_BACKGROUND: flag indicating that the color palette is suitable for rendering text on dark background. + * + * Since: REPLACEME + */ +typedef enum { /*< flags >*/ + HB_OT_COLOR_PALETTE_FLAG_DEFAULT = 0x00000000u, + HB_OT_COLOR_PALETTE_FLAG_FOR_LIGHT_BACKGROUND = 0x00000001u, + HB_OT_COLOR_PALETTE_FLAG_FOR_DARK_BACKGROUND = 0x00000002u, +} hb_ot_color_palette_flags_t; + +// HB_EXTERN unsigned int +// hb_ot_color_get_palette_count (hb_face_t *face); + +// HB_EXTERN unsigned int +// hb_ot_color_get_palette_name_id (hb_face_t *face, unsigned int palette); + +// HB_EXTERN hb_ot_color_palette_flags_t +// hb_ot_color_get_palette_flags (hb_face_t *face, unsigned int palette); + +// HB_EXTERN unsigned int +// hb_ot_color_get_palette_colors (hb_face_t *face, +// unsigned int palette, /* default=0 */ +// unsigned int start_offset, +// unsigned int *color_count /* IN/OUT */, +// hb_ot_color_t *colors /* OUT */); + + + + + +/* + * Color Palette + * http://www.microsoft.com/typography/otspec/cpal.htm + */ + +#define HB_OT_TAG_CPAL HB_TAG('C','P','A','L') + +namespace OT { + + +struct CPALV1Tail +{ + friend struct CPAL; + + inline bool sanitize (hb_sanitize_context_t *c, unsigned int palettes) const + { + TRACE_SANITIZE (this); + return_trace ( + c->check_struct (this) && + c->check_array ((const void*) &paletteFlags, sizeof (HBUINT32), palettes) && + c->check_array ((const void*) &paletteLabel, sizeof (HBUINT16), palettes) && + c->check_array ((const void*) &paletteEntryLabel, sizeof (HBUINT16), palettes)); + } + + private: + inline hb_ot_color_palette_flags_t + get_palette_flags (const void *base, unsigned int palette) const + { + const HBUINT32* flags = &paletteFlags (base); + return (hb_ot_color_palette_flags_t) (uint32_t) flags[palette]; + } + + inline unsigned int + get_palette_name_id (const void *base, unsigned int palette) const + { + const HBUINT16* name_ids = &paletteLabel (base); + return name_ids[palette]; + } + + protected: + LOffsetTo<HBUINT32> paletteFlags; + LOffsetTo<HBUINT16> paletteLabel; + LOffsetTo<HBUINT16> paletteEntryLabel; + public: + DEFINE_SIZE_STATIC (12); +}; + +typedef HBUINT32 BGRAColor; + +struct CPAL +{ + static const hb_tag_t tableTag = HB_OT_TAG_CPAL; + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + if (!(c->check_struct (this) && // This checks colorRecordIndicesX sanity also, see #get_size + c->check_array ((const void*) &colorRecordsZ, sizeof (BGRAColor), numColorRecords))) + return_trace (false); + + // Check for indices sanity so no need for doing it runtime + for (unsigned int i = 0; i < numPalettes; ++i) + if (colorRecordIndicesX[i] + numPaletteEntries > numColorRecords) + return_trace (false); + + // If version is zero, we are done here; otherwise we need to check tail also + if (version == 0) + return_trace (true); + + const CPALV1Tail &v1 = StructAfter<CPALV1Tail> (*this); + return_trace (v1.sanitize (c, numPalettes)); + } + + inline unsigned int get_size (void) const + { + return min_size + numPalettes * sizeof (HBUINT16); + } + + inline hb_ot_color_palette_flags_t get_palette_flags (unsigned int palette) const + { + if (version == 0 || palette >= numPalettes) + return HB_OT_COLOR_PALETTE_FLAG_DEFAULT; + + const CPALV1Tail& cpal1 = StructAfter<CPALV1Tail> (*this); + return cpal1.get_palette_flags (this, palette); + } + + inline unsigned int get_palette_name_id (unsigned int palette) const + { + if (version == 0 || palette >= numPalettes) + return 0xFFFF; + + const CPALV1Tail& cpal1 = StructAfter<CPALV1Tail> (*this); + return cpal1.get_palette_name_id (this, palette); + } + + inline unsigned int get_palette_count () const + { + return numPalettes; + } + + inline hb_ot_color_t get_color_record_argb (unsigned int color_index, unsigned int palette) const + { + if (color_index >= numPaletteEntries || palette >= numPalettes) + return 0; + + const BGRAColor* records = &colorRecordsZ(this); + // No need for more range check as it is already done on #sanitize + return records[colorRecordIndicesX[palette] + color_index]; + } + + protected: + HBUINT16 version; + /* Version 0 */ + HBUINT16 numPaletteEntries; + HBUINT16 numPalettes; + HBUINT16 numColorRecords; + LOffsetTo<HBUINT32> colorRecordsZ; + HBUINT16 colorRecordIndicesX[VAR]; // VAR=numPalettes +/*CPALV1Tail v1[VAR];*/ + public: + DEFINE_SIZE_ARRAY (12, colorRecordIndicesX); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_COLOR_CPAL_TABLE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-font.cc b/third_party/harfbuzz-ng/src/hb-ot-font.cc index 9864064b1..0e373d30 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-font.cc +++ b/third_party/harfbuzz-ng/src/hb-ot-font.cc
@@ -31,12 +31,13 @@ #include "hb-font-private.hh" #include "hb-ot-cmap-table.hh" -#include "hb-ot-cbdt-table.hh" #include "hb-ot-glyf-table.hh" #include "hb-ot-hmtx-table.hh" #include "hb-ot-kern-table.hh" #include "hb-ot-post-table.hh" +#include "hb-ot-color-cbdt-table.hh" + struct hb_ot_font_t {
diff --git a/third_party/harfbuzz-ng/src/hb-ot-glyf-table.hh b/third_party/harfbuzz-ng/src/hb-ot-glyf-table.hh index a73fd4aa..d62f24bd 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-glyf-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-glyf-table.hh
@@ -29,7 +29,9 @@ #include "hb-open-type-private.hh" #include "hb-ot-head-table.hh" - +#include "hb-subset-glyf.hh" +#include "hb-subset-plan.hh" +#include "hb-subset-private.hh" namespace OT { @@ -78,6 +80,44 @@ return_trace (true); } + inline bool subset (hb_subset_plan_t *plan) const + { + hb_blob_t *glyf_prime = nullptr; + hb_blob_t *loca_prime = nullptr; + + bool success = true; + bool use_short_loca = false; + if (hb_subset_glyf_and_loca (plan, &use_short_loca, &glyf_prime, &loca_prime)) { + success = success && hb_subset_plan_add_table (plan, HB_OT_TAG_glyf, glyf_prime); + success = success && hb_subset_plan_add_table (plan, HB_OT_TAG_loca, loca_prime); + success = success && _add_head_and_set_loca_version (plan->source, use_short_loca, plan->dest); + } else { + success = false; + } + hb_blob_destroy (loca_prime); + hb_blob_destroy (glyf_prime); + + return success; + } + + static bool + _add_head_and_set_loca_version (hb_face_t *source, bool use_short_loca, hb_face_t *dest) + { + hb_blob_t *head_blob = OT::Sanitizer<OT::head>().sanitize (hb_face_reference_table (source, HB_OT_TAG_head)); + hb_blob_t *head_prime_blob = hb_blob_copy_writable_or_fail (head_blob); + hb_blob_destroy (head_blob); + + if (unlikely (!head_prime_blob)) + return false; + + OT::head *head_prime = (OT::head *) hb_blob_get_data_writable (head_prime_blob, nullptr); + head_prime->indexToLocFormat.set (use_short_loca ? 0 : 1); + bool success = hb_subset_face_add_table (dest, HB_OT_TAG_head, head_prime_blob); + + hb_blob_destroy (head_prime_blob); + return success; + } + struct GlyphHeader { HBINT16 numberOfContours; /* If the number of contours is @@ -235,6 +275,90 @@ composite); } + /* based on FontTools _g_l_y_f.py::trim */ + inline bool remove_padding(unsigned int start_offset, + unsigned int *end_offset) const + { + static const int FLAG_X_SHORT = 0x02; + static const int FLAG_Y_SHORT = 0x04; + static const int FLAG_REPEAT = 0x08; + static const int FLAG_X_SAME = 0x10; + static const int FLAG_Y_SAME = 0x20; + + if (*end_offset - start_offset < GlyphHeader::static_size) + return true; + + const char *glyph = ((const char *) glyf_table) + start_offset; + const char * const glyph_end = glyph + (*end_offset - start_offset); + const GlyphHeader &glyph_header = StructAtOffset<GlyphHeader> (glyph, 0); + int16_t num_contours = (int16_t) glyph_header.numberOfContours; + + if (num_contours < 0) + /* Trimming for composites not implemented. + * If removing hints it falls out of that. */ + return true; + else if (num_contours > 0) + { + /* simple glyph w/contours, possibly trimmable */ + glyph += GlyphHeader::static_size + 2 * num_contours; + + if (unlikely (glyph + 2 >= glyph_end)) return false; + uint16_t nCoordinates = (uint16_t) StructAtOffset<HBUINT16>(glyph - 2, 0) + 1; + uint16_t nInstructions = (uint16_t) StructAtOffset<HBUINT16>(glyph, 0); + + glyph += 2 + nInstructions; + if (unlikely (glyph + 2 >= glyph_end)) return false; + + unsigned int coordBytes = 0; + unsigned int coordsWithFlags = 0; + while (glyph < glyph_end) + { + uint8_t flag = (uint8_t) *glyph; + glyph++; + + unsigned int repeat = 1; + if (flag & FLAG_REPEAT) + { + if (glyph >= glyph_end) + { + DEBUG_MSG(SUBSET, nullptr, "Bad flag"); + return false; + } + repeat = ((uint8_t) *glyph) + 1; + glyph++; + } + + unsigned int xBytes, yBytes; + xBytes = yBytes = 0; + if (flag & FLAG_X_SHORT) + xBytes = 1; + else if ((flag & FLAG_X_SAME) == 0) + xBytes = 2; + + if (flag & FLAG_Y_SHORT) + yBytes = 1; + else if ((flag & FLAG_Y_SAME) == 0) + yBytes = 2; + + coordBytes += (xBytes + yBytes) * repeat; + coordsWithFlags += repeat; + if (coordsWithFlags >= nCoordinates) + break; + } + + if (coordsWithFlags != nCoordinates) + { + DEBUG_MSG(SUBSET, nullptr, "Expect %d coords to have flags, got flags for %d", nCoordinates, coordsWithFlags); + return false; + } + glyph += coordBytes; + + if (glyph < glyph_end) + *end_offset -= glyph_end - glyph; + } + return true; + } + inline bool get_offsets (hb_codepoint_t glyph, unsigned int *start_offset /* OUT */, unsigned int *end_offset /* OUT */) const @@ -251,6 +375,7 @@ else { const HBUINT32 *offsets = (const HBUINT32 *) loca_table->dataX; + *start_offset = offsets[glyph]; *end_offset = offsets[glyph + 1]; } @@ -261,6 +386,51 @@ return true; } + inline bool get_instruction_offsets(unsigned int start_offset, + unsigned int end_offset, + unsigned int *instruction_start /* OUT */, + unsigned int *instruction_end /* OUT */) const + { + if (end_offset - start_offset < GlyphHeader::static_size) + { + *instruction_start = 0; + *instruction_end = 0; + return true; /* Empty glyph; no instructions. */ + } + const GlyphHeader &glyph_header = StructAtOffset<GlyphHeader> (glyf_table, start_offset); + int16_t num_contours = (int16_t) glyph_header.numberOfContours; + if (num_contours < 0) + { + CompositeGlyphHeader::Iterator composite_it; + if (unlikely (!CompositeGlyphHeader::get_iterator ( + (const char*) this->glyf_table + start_offset, + end_offset - start_offset, &composite_it))) return false; + const CompositeGlyphHeader *last; + do { + last = composite_it.current; + } while (composite_it.move_to_next()); + + if ( (uint16_t) last->flags & CompositeGlyphHeader::WE_HAVE_INSTRUCTIONS) + *instruction_start = ((char *) last - (char *) glyf_table->dataX) + last->get_size(); + else + *instruction_start = end_offset; + *instruction_end = end_offset; + if (unlikely (*instruction_start > *instruction_end)) + { + DEBUG_MSG(SUBSET, nullptr, "Invalid instruction offset, %d is outside [%d, %d]", *instruction_start, start_offset, end_offset); + return false; + } + } + else + { + unsigned int instruction_length_offset = start_offset + GlyphHeader::static_size + 2 * num_contours; + const HBUINT16 &instruction_length = StructAtOffset<HBUINT16> (glyf_table, instruction_length_offset); + *instruction_start = instruction_length_offset + 2; + *instruction_end = *instruction_start + (uint16_t) instruction_length; + } + return true; + } + inline bool get_extents (hb_codepoint_t glyph, hb_glyph_extents_t *extents) const {
diff --git a/third_party/harfbuzz-ng/src/hb-ot-hdmx-table.hh b/third_party/harfbuzz-ng/src/hb-ot-hdmx-table.hh new file mode 100644 index 0000000..f08fe39d8 --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-ot-hdmx-table.hh
@@ -0,0 +1,198 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Garret Rieger + */ + +#ifndef HB_OT_HDMX_TABLE_HH +#define HB_OT_HDMX_TABLE_HH + +#include "hb-open-type-private.hh" + +namespace OT { + + +/* + * hdmx - Horizontal Device Metric + */ + +#define HB_OT_TAG_hdmx HB_TAG('h','d','m','x') + +struct DeviceRecord +{ + struct SubsetView + { + const DeviceRecord *source_device_record; + hb_subset_plan_t *subset_plan; + + inline void init(const DeviceRecord *source_device_record, + hb_subset_plan_t *subset_plan) + { + this->source_device_record = source_device_record; + this->subset_plan = subset_plan; + } + + inline unsigned int len () const + { + return this->subset_plan->gids_to_retain_sorted.len; + } + + inline const HBUINT8& operator [] (unsigned int i) const + { + if (unlikely (i >= len())) return Null(HBUINT8); + hb_codepoint_t gid = this->subset_plan->gids_to_retain_sorted [i]; + return this->source_device_record->widths[gid]; + } + }; + + static inline unsigned int get_size (unsigned int count) + { + unsigned int raw_size = min_size + count * HBUINT8::static_size; + if (raw_size % 4) + /* Align to 32 bits */ + return raw_size + (4 - (raw_size % 4)); + return raw_size; + } + + inline bool serialize (hb_serialize_context_t *c, const SubsetView &subset_view) + { + TRACE_SERIALIZE (this); + + if (unlikely (!c->allocate_size<DeviceRecord> (get_size (subset_view.len())))) + return_trace (false); + + this->pixel_size.set (subset_view.source_device_record->pixel_size); + this->max_width.set (subset_view.source_device_record->max_width); + + for (unsigned int i = 0; i < subset_view.len(); i++) + widths[i].set (subset_view[i]); + + return_trace (true); + } + + inline bool sanitize (hb_sanitize_context_t *c, unsigned int size_device_record) const + { + TRACE_SANITIZE (this); + return_trace (likely (c->check_struct (this) && + c->check_range (this, size_device_record))); + } + + HBUINT8 pixel_size; /* Pixel size for following widths (as ppem). */ + HBUINT8 max_width; /* Maximum width. */ + HBUINT8 widths[VAR]; /* Array of widths (numGlyphs is from the 'maxp' table). */ + public: + DEFINE_SIZE_ARRAY (2, widths); +}; + + +struct hdmx +{ + static const hb_tag_t tableTag = HB_OT_TAG_hdmx; + + inline unsigned int get_size (void) const + { + return min_size + num_records * size_device_record; + } + + inline const DeviceRecord& operator [] (unsigned int i) const + { + if (unlikely (i >= num_records)) return Null(DeviceRecord); + return StructAtOffset<DeviceRecord> (this, min_size + i * size_device_record); + } + + inline bool serialize (hb_serialize_context_t *c, const hdmx *source_hdmx, hb_subset_plan_t *plan) + { + TRACE_SERIALIZE (this); + + if (unlikely (!c->extend_min ((*this)))) return_trace (false); + + this->version.set (source_hdmx->version); + this->num_records.set (source_hdmx->num_records); + this->size_device_record.set (DeviceRecord::get_size (plan->gids_to_retain_sorted.len)); + + for (unsigned int i = 0; i < source_hdmx->num_records; i++) + { + DeviceRecord::SubsetView subset_view; + subset_view.init (&(*source_hdmx)[i], plan); + + c->start_embed<DeviceRecord> ()->serialize (c, subset_view); + } + + return_trace (true); + } + + static inline size_t get_subsetted_size (hb_subset_plan_t *plan) + { + return min_size + DeviceRecord::get_size (plan->gids_to_retain_sorted.len); + } + + inline bool subset (hb_subset_plan_t *plan) const + { + size_t dest_size = get_subsetted_size (plan); + hdmx *dest = (hdmx *) malloc (dest_size); + if (unlikely (!dest)) + { + DEBUG_MSG(SUBSET, nullptr, "Unable to alloc %lu for hdmx subset output.", (unsigned long) dest_size); + return false; + } + + hb_serialize_context_t c (dest, dest_size); + hdmx *hdmx_prime = c.start_serialize<hdmx> (); + if (!hdmx_prime || !hdmx_prime->serialize (&c, this, plan)) { + free (dest); + return false; + } + c.end_serialize (); + + hb_blob_t *hdmx_prime_blob = hb_blob_create ((const char *) dest, + dest_size, + HB_MEMORY_MODE_READONLY, + dest, + free); + bool result = hb_subset_plan_add_table (plan, HB_OT_TAG_hdmx, hdmx_prime_blob); + hb_blob_destroy (hdmx_prime_blob); + + return result; + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && version == 0 && + !_hb_unsigned_int_mul_overflows (num_records, size_device_record) && + c->check_range (this, get_size())); + } + + protected: + HBUINT16 version; /* Table version number (0) */ + HBUINT16 num_records; /* Number of device records. */ + HBUINT32 size_device_record; /* Size of a device record, 32-bit aligned. */ + HBUINT8 data[VAR]; /* Array of device records. */ + public: + DEFINE_SIZE_ARRAY (8, data); +}; + +} /* namespace OT */ + + +#endif /* HB_OT_HDMX_TABLE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-head-table.hh b/third_party/harfbuzz-ng/src/hb-ot-head-table.hh index 2024cea7..1d45840 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-head-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-head-table.hh
@@ -43,6 +43,8 @@ struct head { + friend struct OffsetTable; + static const hb_tag_t tableTag = HB_OT_TAG_head; inline unsigned int get_upem (void) const
diff --git a/third_party/harfbuzz-ng/src/hb-ot-hmtx-table.hh b/third_party/harfbuzz-ng/src/hb-ot-hmtx-table.hh index 11cc927..3cd48a6 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-hmtx-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-hmtx-table.hh
@@ -105,7 +105,7 @@ /* alloc the new table */ size_t dest_sz = num_advances * 4 + (gids.len - num_advances) * 2; - void *dest = (void *) calloc (dest_sz, 1); + void *dest = (void *) malloc (dest_sz); if (unlikely (!dest)) { return false; @@ -166,9 +166,11 @@ hb_blob_t *result = hb_blob_create ((const char *)dest, dest_sz, HB_MEMORY_MODE_READONLY, - /* userdata */ nullptr, + dest, free); - return hb_subset_plan_add_table (plan, T::tableTag, result); + bool success = hb_subset_plan_add_table (plan, T::tableTag, result); + hb_blob_destroy (result); + return success; } struct accelerator_t
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-base-table.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-base-table.hh new file mode 100644 index 0000000..20b8bd76 --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-base-table.hh
@@ -0,0 +1,655 @@ +/* + * Copyright © 2016 Elie Roux <elie.roux@telecom-bretagne.eu> + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef HB_OT_LAYOUT_BASE_TABLE_HH +#define HB_OT_LAYOUT_BASE_TABLE_HH + +#include "hb-open-type-private.hh" +#include "hb-ot-layout-common-private.hh" + +namespace OT { + +#define NOT_INDEXED ((unsigned int) -1) + +/* + * BASE -- The BASE Table + */ + +struct BaseCoordFormat1 +{ + inline int get_coord (void) const { return coordinate; } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + protected: + HBUINT16 format; /* Format identifier--format = 1 */ + HBINT16 coordinate; /* X or Y value, in design units */ + public: + DEFINE_SIZE_STATIC (4); +}; + +struct BaseCoordFormat2 +{ + inline int get_coord (void) const + { + /* TODO */ + return coordinate; + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + protected: + HBUINT16 format; /* Format identifier--format = 2 */ + HBINT16 coordinate; /* X or Y value, in design units */ + GlyphID referenceGlyph; /* Glyph ID of control glyph */ + HBUINT16 coordPoint; /* Index of contour point on the + * reference glyph */ + public: + DEFINE_SIZE_STATIC (8); +}; + +struct BaseCoordFormat3 +{ + inline int get_coord (void) const + { + /* TODO */ + return coordinate; + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && deviceTable.sanitize (c, this)); + } + + protected: + HBUINT16 format; /* Format identifier--format = 3 */ + HBINT16 coordinate; /* X or Y value, in design units */ + OffsetTo<Device> deviceTable; /* Offset to Device table for X or + * Y value, from beginning of + * BaseCoord table (may be NULL). */ + public: + DEFINE_SIZE_STATIC (6); +}; + +struct BaseCoord +{ + inline int get_coord (void) const + { + switch (u.format) { + case 1: return u.format1.get_coord (); + case 2: return u.format2.get_coord (); + case 3: return u.format3.get_coord (); + default:return 0; + } + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + if (!u.format.sanitize (c)) return_trace (false); + switch (u.format) { + case 1: return_trace (u.format1.sanitize (c)); + case 2: return_trace (u.format2.sanitize (c)); + case 3: return_trace (u.format3.sanitize (c)); + default:return_trace (false); + } + } + + protected: + union { + HBUINT16 format; + BaseCoordFormat1 format1; + BaseCoordFormat2 format2; + BaseCoordFormat3 format3; + } u; + public: + DEFINE_SIZE_UNION (2, format); +}; + +struct FeatMinMaxRecord +{ + inline int get_min_value (void) const + { return (this+minCoord).get_coord(); } + + inline int get_max_value (void) const + { return (this+maxCoord).get_coord(); } + + inline const Tag &get_tag () const + { return tag; } + + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + minCoord.sanitize (c, base) && + maxCoord.sanitize (c, base)); + } + + protected: + Tag tag; /* 4-byte feature identification tag--must + * match feature tag in FeatureList */ + OffsetTo<BaseCoord> minCoord; /* Offset to BaseCoord table that defines + * the minimum extent value, from beginning + * of MinMax table (may be NULL) */ + OffsetTo<BaseCoord> maxCoord; /* Offset to BaseCoord table that defines + * the maximum extent value, from beginning + * of MinMax table (may be NULL) */ + public: + DEFINE_SIZE_STATIC (8); + +}; + +struct MinMax +{ + inline unsigned int get_feature_tag_index (Tag featureTableTag) const + { + /* TODO bsearch */ + unsigned int count = featMinMaxRecords.len; + for (unsigned int i = 0; i < count; i++) + { + Tag tag = featMinMaxRecords[i].get_tag(); + int cmp = tag.cmp(featureTableTag); + if (cmp == 0) return i; + if (cmp > 0) return NOT_INDEXED; + } + return NOT_INDEXED; + } + + inline int get_min_value (unsigned int featureTableTagIndex) const + { + if (featureTableTagIndex == NOT_INDEXED) + return (this+minCoord).get_coord(); + return featMinMaxRecords[featureTableTagIndex].get_min_value(); + } + + inline int get_max_value (unsigned int featureTableTagIndex) const + { + if (featureTableTagIndex == NOT_INDEXED) + return (this+maxCoord).get_coord(); + return featMinMaxRecords[featureTableTagIndex].get_max_value(); + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + minCoord.sanitize (c, this) && + maxCoord.sanitize (c, this) && + featMinMaxRecords.sanitize (c, this)); + } + + protected: + OffsetTo<BaseCoord> minCoord; /* Offset to BaseCoord table that defines + * minimum extent value, from the beginning + * of MinMax table (may be NULL) */ + OffsetTo<BaseCoord> maxCoord; /* Offset to BaseCoord table that defines + * maximum extent value, from the beginning + * of MinMax table (may be NULL) */ + ArrayOf<FeatMinMaxRecord> + featMinMaxRecords; /* Array of FeatMinMaxRecords, in alphabetical + * order by featureTableTag */ + public: + DEFINE_SIZE_ARRAY (6, featMinMaxRecords); +}; + +/* TODO... */ +struct BaseLangSysRecord +{ + inline const Tag& get_tag(void) const + { return baseLangSysTag; } + + inline unsigned int get_feature_tag_index (Tag featureTableTag) const + { return (this+minMax).get_feature_tag_index(featureTableTag); } + + inline int get_min_value (unsigned int featureTableTagIndex) const + { return (this+minMax).get_min_value(featureTableTagIndex); } + + inline int get_max_value (unsigned int featureTableTagIndex) const + { return (this+minMax).get_max_value(featureTableTagIndex); } + + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + minMax.sanitize (c, base)); + } + + protected: + Tag baseLangSysTag; + OffsetTo<MinMax> minMax; + public: + DEFINE_SIZE_STATIC (6); + +}; + +struct BaseValues +{ + inline unsigned int get_default_base_tag_index (void) const + { return defaultIndex; } + + inline int get_base_coord (unsigned int baselineTagIndex) const + { + return (this+baseCoords[baselineTagIndex]).get_coord(); + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + defaultIndex <= baseCoordCount && + baseCoords.sanitize (c, this)); + } + + protected: + Index defaultIndex; + HBUINT16 baseCoordCount; + OffsetArrayOf<BaseCoord> baseCoords; + public: + DEFINE_SIZE_ARRAY (6, baseCoords); + +}; + +struct BaseScript { + + inline unsigned int get_lang_tag_index (Tag baseLangSysTag) const + { + Tag tag; + int cmp; + for (unsigned int i = 0; i < baseLangSysCount; i++) { + tag = baseLangSysRecords[i].get_tag(); + // taking advantage of alphabetical order + cmp = tag.cmp(baseLangSysTag); + if (cmp == 0) return i; + if (cmp > 0) return NOT_INDEXED; + } + return NOT_INDEXED; + } + + inline unsigned int get_feature_tag_index (unsigned int baseLangSysIndex, Tag featureTableTag) const + { + if (baseLangSysIndex == NOT_INDEXED) { + if (unlikely(defaultMinMax)) return NOT_INDEXED; + return (this+defaultMinMax).get_feature_tag_index(featureTableTag); + } + if (unlikely(baseLangSysIndex >= baseLangSysCount)) return NOT_INDEXED; + return baseLangSysRecords[baseLangSysIndex].get_feature_tag_index(featureTableTag); + } + + inline int get_min_value (unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + if (baseLangSysIndex == NOT_INDEXED) + return (this+defaultMinMax).get_min_value(featureTableTagIndex); + return baseLangSysRecords[baseLangSysIndex].get_max_value(featureTableTagIndex); + } + + inline int get_max_value (unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + if (baseLangSysIndex == NOT_INDEXED) + return (this+defaultMinMax).get_min_value(featureTableTagIndex); + return baseLangSysRecords[baseLangSysIndex].get_max_value(featureTableTagIndex); + } + + inline unsigned int get_default_base_tag_index (void) const + { return (this+baseValues).get_default_base_tag_index(); } + + inline int get_base_coord (unsigned int baselineTagIndex) const + { return (this+baseValues).get_base_coord(baselineTagIndex); } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + baseValues.sanitize (c, this) && + defaultMinMax.sanitize (c, this) && + baseLangSysRecords.sanitize (c, this)); + } + + protected: + OffsetTo<BaseValues> baseValues; + OffsetTo<MinMax> defaultMinMax; + HBUINT16 baseLangSysCount; + ArrayOf<BaseLangSysRecord> baseLangSysRecords; + + public: + DEFINE_SIZE_ARRAY (8, baseLangSysRecords); +}; + + +struct BaseScriptRecord { + + inline const Tag& get_tag (void) const + { return baseScriptTag; } + + inline unsigned int get_default_base_tag_index(void) const + { return (this+baseScript).get_default_base_tag_index(); } + + inline int get_base_coord(unsigned int baselineTagIndex) const + { return (this+baseScript).get_base_coord(baselineTagIndex); } + + inline unsigned int get_lang_tag_index (Tag baseLangSysTag) const + { return (this+baseScript).get_lang_tag_index(baseLangSysTag); } + + inline unsigned int get_feature_tag_index (unsigned int baseLangSysIndex, Tag featureTableTag) const + { return (this+baseScript).get_feature_tag_index(baseLangSysIndex, featureTableTag); } + + inline int get_max_value (unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { return (this+baseScript).get_max_value(baseLangSysIndex, featureTableTagIndex); } + + inline int get_min_value (unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { return (this+baseScript).get_min_value(baseLangSysIndex, featureTableTagIndex); } + + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + baseScript != Null(OffsetTo<BaseScript>) && + baseScript.sanitize (c, base)); + } + + protected: + Tag baseScriptTag; + OffsetTo<BaseScript> baseScript; + + public: + DEFINE_SIZE_STATIC (6); +}; + +struct BaseScriptList { + + inline unsigned int get_base_script_index (Tag baseScriptTag) const + { + for (unsigned int i = 0; i < baseScriptCount; i++) + if (baseScriptRecords[i].get_tag() == baseScriptTag) + return i; + return NOT_INDEXED; + } + + inline unsigned int get_default_base_tag_index (unsigned int baseScriptIndex) const + { + if (unlikely(baseScriptIndex >= baseScriptCount)) return NOT_INDEXED; + return baseScriptRecords[baseScriptIndex].get_default_base_tag_index(); + } + + inline int get_base_coord(unsigned int baseScriptIndex, unsigned int baselineTagIndex) const + { + return baseScriptRecords[baseScriptIndex].get_base_coord(baselineTagIndex); + } + + inline unsigned int get_lang_tag_index (unsigned int baseScriptIndex, Tag baseLangSysTag) const + { + if (unlikely(baseScriptIndex >= baseScriptCount)) return NOT_INDEXED; + return baseScriptRecords[baseScriptIndex].get_lang_tag_index(baseLangSysTag); + } + + inline unsigned int get_feature_tag_index (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, Tag featureTableTag) const + { + if (unlikely(baseScriptIndex >= baseScriptCount)) return NOT_INDEXED; + return baseScriptRecords[baseScriptIndex].get_feature_tag_index(baseLangSysIndex, featureTableTag); + } + + inline int get_max_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return baseScriptRecords[baseScriptIndex].get_max_value(baseLangSysIndex, featureTableTagIndex); + } + + inline int get_min_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return baseScriptRecords[baseScriptIndex].get_min_value(baseLangSysIndex, featureTableTagIndex); + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + baseScriptRecords.sanitize (c, this)); + } + + protected: + HBUINT16 baseScriptCount; + ArrayOf<BaseScriptRecord> baseScriptRecords; + + public: + DEFINE_SIZE_ARRAY (4, baseScriptRecords); + +}; + +struct BaseTagList +{ + + inline unsigned int get_tag_index(Tag baselineTag) const + { + for (unsigned int i = 0; i < baseTagCount; i++) + if (baselineTags[i] == baselineTag) + return i; + return NOT_INDEXED; + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + protected: + HBUINT16 baseTagCount; + SortedArrayOf<Tag> baselineTags; + + public: + DEFINE_SIZE_ARRAY (4, baselineTags); +}; + +struct Axis +{ + + inline unsigned int get_base_tag_index(Tag baselineTag) const + { + if (unlikely(baseTagList == Null(OffsetTo<BaseTagList>))) return NOT_INDEXED; + return (this+baseTagList).get_tag_index(baselineTag); + } + + inline unsigned int get_default_base_tag_index_for_script_index (unsigned int baseScriptIndex) const + { + if (unlikely(baseScriptList == Null(OffsetTo<BaseScriptList>))) return NOT_INDEXED; + return (this+baseScriptList).get_default_base_tag_index(baseScriptIndex); + } + + inline int get_base_coord(unsigned int baseScriptIndex, unsigned int baselineTagIndex) const + { + return (this+baseScriptList).get_base_coord(baseScriptIndex, baselineTagIndex); + } + + inline unsigned int get_lang_tag_index (unsigned int baseScriptIndex, Tag baseLangSysTag) const + { + if (unlikely(baseScriptList == Null(OffsetTo<BaseScriptList>))) return NOT_INDEXED; + return (this+baseScriptList).get_lang_tag_index(baseScriptIndex, baseLangSysTag); + } + + inline unsigned int get_feature_tag_index (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, Tag featureTableTag) const + { + if (unlikely(baseScriptList == Null(OffsetTo<BaseScriptList>))) return NOT_INDEXED; + return (this+baseScriptList).get_feature_tag_index(baseScriptIndex, baseLangSysIndex, featureTableTag); + } + + inline int get_max_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+baseScriptList).get_max_value(baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + inline int get_min_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+baseScriptList).get_min_value(baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + baseTagList.sanitize (c, this) && + baseScriptList.sanitize (c, this)); + } + + protected: + OffsetTo<BaseTagList> baseTagList; + OffsetTo<BaseScriptList> baseScriptList; + + public: + DEFINE_SIZE_STATIC (4); +}; + +struct BASE +{ + static const hb_tag_t tableTag = HB_OT_TAG_BASE; + + inline bool has_vert_axis(void) + { return vertAxis != Null(OffsetTo<Axis>); } + + inline bool has_horiz_axis(void) + { return horizAxis != Null(OffsetTo<Axis>); } + + // horizontal axis base coords: + + inline unsigned int get_horiz_base_tag_index(Tag baselineTag) const + { + if (unlikely(horizAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+horizAxis).get_base_tag_index(baselineTag); + } + + inline unsigned int get_horiz_default_base_tag_index_for_script_index (unsigned int baseScriptIndex) const + { + if (unlikely(horizAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+horizAxis).get_default_base_tag_index_for_script_index(baseScriptIndex); + } + + inline int get_horiz_base_coord(unsigned int baseScriptIndex, unsigned int baselineTagIndex) const + { + return (this+horizAxis).get_base_coord(baseScriptIndex, baselineTagIndex); + } + + // vertical axis base coords: + + inline unsigned int get_vert_base_tag_index(Tag baselineTag) const + { + if (unlikely(vertAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+vertAxis).get_base_tag_index(baselineTag); + } + + inline unsigned int get_vert_default_base_tag_index_for_script_index (unsigned int baseScriptIndex) const + { + if (unlikely(vertAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+vertAxis).get_default_base_tag_index_for_script_index(baseScriptIndex); + } + + inline int get_vert_base_coord(unsigned int baseScriptIndex, unsigned int baselineTagIndex) const + { + return (this+vertAxis).get_base_coord(baseScriptIndex, baselineTagIndex); + } + + // horizontal axis min/max coords: + + inline unsigned int get_horiz_lang_tag_index (unsigned int baseScriptIndex, Tag baseLangSysTag) const + { + if (unlikely(horizAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+horizAxis).get_lang_tag_index (baseScriptIndex, baseLangSysTag); + } + + inline unsigned int get_horiz_feature_tag_index (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, Tag featureTableTag) const + { + if (unlikely(horizAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+horizAxis).get_feature_tag_index (baseScriptIndex, baseLangSysIndex, featureTableTag); + } + + inline int get_horiz_max_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+horizAxis).get_max_value (baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + inline int get_horiz_min_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+horizAxis).get_min_value (baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + // vertical axis min/max coords: + + inline unsigned int get_vert_lang_tag_index (unsigned int baseScriptIndex, Tag baseLangSysTag) const + { + if (unlikely(vertAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+vertAxis).get_lang_tag_index (baseScriptIndex, baseLangSysTag); + } + + inline unsigned int get_vert_feature_tag_index (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, Tag featureTableTag) const + { + if (unlikely(vertAxis == Null(OffsetTo<Axis>))) return NOT_INDEXED; + return (this+vertAxis).get_feature_tag_index (baseScriptIndex, baseLangSysIndex, featureTableTag); + } + + inline int get_vert_max_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+vertAxis).get_max_value (baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + inline int get_vert_min_value (unsigned int baseScriptIndex, unsigned int baseLangSysIndex, unsigned int featureTableTagIndex) const + { + return (this+vertAxis).get_min_value (baseScriptIndex, baseLangSysIndex, featureTableTagIndex); + } + + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this) && + likely (version.major == 1) && + horizAxis.sanitize (c, this) && + vertAxis.sanitize (c, this) && + (version.to_int () < 0x00010001u || varStore.sanitize (c, this))); + } + + protected: + FixedVersion<> version; + OffsetTo<Axis> horizAxis; + OffsetTo<Axis> vertAxis; + LOffsetTo<VariationStore> + varStore; /* Offset to the table of Item Variation + * Store--from beginning of BASE + * header (may be NULL). Introduced + * in version 0x00010001. */ + public: + DEFINE_SIZE_MIN (8); +}; + + +} /* namespace OT */ + + +#endif /* HB_OT_LAYOUT_BASE_TABLE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-common-private.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-common-private.hh index cb66c81..c5e7f521 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout-common-private.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-common-private.hh
@@ -1057,7 +1057,7 @@ if (klass == 0) { /* Match if there's any glyph that is not listed! */ - hb_codepoint_t g = -1; + hb_codepoint_t g = HB_SET_VALUE_INVALID; if (!hb_set_next (glyphs, &g)) return false; if (g < startGlyph) @@ -1128,7 +1128,7 @@ if (klass == 0) { /* Match if there's any glyph that is not listed! */ - hb_codepoint_t g = (hb_codepoint_t) -1; + hb_codepoint_t g = HB_SET_VALUE_INVALID; for (unsigned int i = 0; i < count; i++) { if (!hb_set_next (glyphs, &g)) @@ -1137,7 +1137,7 @@ return true; g = rangeRecord[i].end; } - if (g != (hb_codepoint_t) -1 && hb_set_next (glyphs, &g)) + if (g != HB_SET_VALUE_INVALID && hb_set_next (glyphs, &g)) return true; /* Fall through. */ }
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-gdef-table.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-gdef-table.hh index aad7d60..2d6c66e 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout-gdef-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-gdef-table.hh
@@ -110,7 +110,7 @@ protected: HBUINT16 caretValueFormat; /* Format identifier--format = 1 */ - HBINT16 coordinate; /* X or Y value, in design units */ + FWORD coordinate; /* X or Y value, in design units */ public: DEFINE_SIZE_STATIC (4); }; @@ -161,7 +161,7 @@ protected: HBUINT16 caretValueFormat; /* Format identifier--format = 3 */ - HBINT16 coordinate; /* X or Y value, in design units */ + FWORD coordinate; /* X or Y value, in design units */ OffsetTo<Device> deviceTable; /* Offset to Device table for X or Y * value--from beginning of CaretValue
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh index 4e1a10d..46ffcc6 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh
@@ -248,8 +248,8 @@ protected: HBUINT16 format; /* Format identifier--format = 1 */ - HBINT16 xCoordinate; /* Horizontal value--in design units */ - HBINT16 yCoordinate; /* Vertical value--in design units */ + FWORD xCoordinate; /* Horizontal value--in design units */ + FWORD yCoordinate; /* Vertical value--in design units */ public: DEFINE_SIZE_STATIC (6); }; @@ -279,8 +279,8 @@ protected: HBUINT16 format; /* Format identifier--format = 2 */ - HBINT16 xCoordinate; /* Horizontal value--in design units */ - HBINT16 yCoordinate; /* Vertical value--in design units */ + FWORD xCoordinate; /* Horizontal value--in design units */ + FWORD yCoordinate; /* Vertical value--in design units */ HBUINT16 anchorPoint; /* Index to glyph contour point */ public: DEFINE_SIZE_STATIC (8); @@ -309,8 +309,8 @@ protected: HBUINT16 format; /* Format identifier--format = 3 */ - HBINT16 xCoordinate; /* Horizontal value--in design units */ - HBINT16 yCoordinate; /* Vertical value--in design units */ + FWORD xCoordinate; /* Horizontal value--in design units */ + FWORD yCoordinate; /* Vertical value--in design units */ OffsetTo<Device> xDeviceTable; /* Offset to Device table for X * coordinate-- from beginning of
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh index 97f1d21a..5f67aed 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh
@@ -114,7 +114,7 @@ OffsetTo<Coverage> coverage; /* Offset to Coverage table--from * beginning of Substitution table */ - HBINT16 deltaGlyphID; /* Add to original GlyphID to get + HBINT16 deltaGlyphID; /* Add to original GlyphID to get * substitute GlyphID */ public: DEFINE_SIZE_STATIC (6);
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-private.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-private.hh index cf691d37..870ba73f 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout-private.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-layout-private.hh
@@ -122,6 +122,9 @@ */ namespace OT { + struct BASE; + struct COLR; + struct CPAL; struct GDEF; struct GSUB; struct GPOS; @@ -131,8 +134,10 @@ } namespace AAT { + struct ankr; struct kerx; struct morx; + struct trak; } struct hb_ot_layout_lookup_accelerator_t @@ -167,11 +172,16 @@ const struct OT::GPOS *gpos; /* TODO Move the following out of this struct. */ + OT::hb_lazy_table_loader_t<struct OT::BASE> base; + OT::hb_lazy_table_loader_t<struct OT::COLR> colr; + OT::hb_lazy_table_loader_t<struct OT::CPAL> cpal; OT::hb_lazy_table_loader_t<struct OT::MATH> math; OT::hb_lazy_table_loader_t<struct OT::fvar> fvar; OT::hb_lazy_table_loader_t<struct OT::avar> avar; + OT::hb_lazy_table_loader_t<struct AAT::ankr> ankr; OT::hb_lazy_table_loader_t<struct AAT::kerx> kerx; OT::hb_lazy_table_loader_t<struct AAT::morx> morx; + OT::hb_lazy_table_loader_t<struct AAT::trak> trak; unsigned int gsub_lookup_count; unsigned int gpos_lookup_count; @@ -361,6 +371,28 @@ return _hb_glyph_info_is_unicode_mark (info) ? info->unicode_props()>>8 : 0; } + +/* Loop over grapheme. Based on foreach_cluster(). */ +#define foreach_grapheme(buffer, start, end) \ + for (unsigned int \ + _count = buffer->len, \ + start = 0, end = _count ? _next_grapheme (buffer, 0) : 0; \ + start < _count; \ + start = end, end = _next_grapheme (buffer, start)) + +static inline unsigned int +_next_grapheme (hb_buffer_t *buffer, unsigned int start) +{ + hb_glyph_info_t *info = buffer->info; + unsigned int count = buffer->len; + + while (++start < count && _hb_glyph_info_is_unicode_mark (&info[start])) + ; + + return start; +} + + #define info_cc(info) (_hb_glyph_info_get_modified_combining_class (&(info))) static inline bool
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout.cc b/third_party/harfbuzz-ng/src/hb-ot-layout.cc index 4cf6c72..1c9e950 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout.cc +++ b/third_party/harfbuzz-ng/src/hb-ot-layout.cc
@@ -31,11 +31,14 @@ #include "hb-open-type-private.hh" #include "hb-ot-layout-private.hh" +#include "hb-ot-layout-base-table.hh" #include "hb-ot-layout-gdef-table.hh" #include "hb-ot-layout-gsub-table.hh" #include "hb-ot-layout-gpos-table.hh" #include "hb-ot-layout-jstf-table.hh" // Just so we compile it; unused otherwise. #include "hb-ot-name-table.hh" // Just so we compile it; unused otherwise. +#include "hb-ot-color-colr-table.hh" +#include "hb-ot-color-cpal-table.hh" #include "hb-ot-map-private.hh" @@ -61,10 +64,16 @@ layout->gpos_blob = OT::Sanitizer<OT::GPOS>().sanitize (face->reference_table (HB_OT_TAG_GPOS)); layout->gpos = OT::Sanitizer<OT::GPOS>::lock_instance (layout->gpos_blob); + layout->base.init (face); + layout->colr.init (face); + layout->cpal.init (face); layout->math.init (face); layout->fvar.init (face); layout->avar.init (face); + layout->ankr.init (face); + layout->kerx.init (face); layout->morx.init (face); + layout->trak.init (face); { /* @@ -211,14 +220,28 @@ hb_blob_destroy (layout->gsub_blob); hb_blob_destroy (layout->gpos_blob); + layout->base.fini (); + layout->colr.fini (); + layout->cpal.fini (); layout->math.fini (); layout->fvar.fini (); layout->avar.fini (); + layout->ankr.fini (); + layout->kerx.fini (); layout->morx.fini (); + layout->trak.fini (); free (layout); } +// static inline const OT::BASE& +// _get_base (hb_face_t *face) +// { +// if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::BASE); +// hb_ot_layout_t * layout = hb_ot_layout_from_face (face); +// return *(layout->base.get ()); +// } + static inline const OT::GDEF& _get_gdef (hb_face_t *face) { @@ -1264,3 +1287,27 @@ { apply_string<GSUBProxy> (c, lookup, accel); } + + + + +/* + * OT::BASE + */ + +// /** +// * hb_ot_base_has_data: +// * @face: #hb_face_t to test +// * +// * This function allows to verify the presence of an OpenType BASE table on the +// * face. +// * +// * Return value: true if face has a BASE table, false otherwise +// * +// * Since: XXX +// **/ +// hb_bool_t +// hb_ot_base_has_data (hb_face_t *face) +// { +// return &_get_base (face) != &OT::Null(OT::BASE); +// }
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout.h b/third_party/harfbuzz-ng/src/hb-ot-layout.h index 9861f0f..85938ba 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-layout.h +++ b/third_party/harfbuzz-ng/src/hb-ot-layout.h
@@ -38,6 +38,7 @@ HB_BEGIN_DECLS +#define HB_OT_TAG_BASE HB_TAG('B','A','S','E') #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F') #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B') #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S') @@ -316,6 +317,22 @@ unsigned int *range_end /* OUT. May be NULL */); +/* + * BASE + */ +#if 0 + +#define HB_OT_TAG_BASE_HANG HB_TAG('h','a','n','g') +#define HB_OT_TAG_BASE_ICFB HB_TAG('i','c','f','b') +#define HB_OT_TAG_BASE_ICFT HB_TAG('i','c','f','t') +#define HB_OT_TAG_BASE_IDEO HB_TAG('i','d','e','o') +#define HB_OT_TAG_BASE_IDTB HB_TAG('i','d','t','b') +#define HB_OT_TAG_BASE_MATH HB_TAG('m','a','t','h') +#define HB_OT_TAG_BASE_ROMN HB_TAG('r','o','m','n') + +#endif + + HB_END_DECLS #endif /* HB_OT_LAYOUT_H */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-maxp-table.hh b/third_party/harfbuzz-ng/src/hb-ot-maxp-table.hh index 3ffa57b1..881deda 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-maxp-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-maxp-table.hh
@@ -39,9 +39,39 @@ #define HB_OT_TAG_maxp HB_TAG('m','a','x','p') +struct maxpV1Tail +{ + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + return_trace (c->check_struct (this)); + } + + HBUINT16 maxPoints; /* Maximum points in a non-composite glyph. */ + HBUINT16 maxContours; /* Maximum contours in a non-composite glyph. */ + HBUINT16 maxCompositePoints; /* Maximum points in a composite glyph. */ + HBUINT16 maxCompositeContours; /* Maximum contours in a composite glyph. */ + HBUINT16 maxZones; /* 1 if instructions do not use the twilight zone (Z0), + * or 2 if instructions do use Z0; should be set to 2 in + * most cases. */ + HBUINT16 maxTwilightPoints; /* Maximum points used in Z0. */ + HBUINT16 maxStorage; /* Number of Storage Area locations. */ + HBUINT16 maxFunctionDefs; /* Number of FDEFs, equal to the highest function number + 1. */ + HBUINT16 maxInstructionDefs; /* Number of IDEFs. */ + HBUINT16 maxStackElements; /* Maximum stack depth. (This includes Font and CVT + * Programs, as well as the instructions for each glyph.) */ + HBUINT16 maxSizeOfInstructions; /* Maximum byte count for glyph instructions. */ + HBUINT16 maxComponentElements; /* Maximum number of components referenced at + * "top level" for any composite glyph. */ + HBUINT16 maxComponentDepth; /* Maximum levels of recursion; 1 for simple components. */ + public: + DEFINE_SIZE_STATIC (26); +}; + + struct maxp { - static const hb_tag_t tableTag = HB_OT_TAG_maxp; + static const hb_tag_t tableTag = HB_OT_TAG_maxp; inline unsigned int get_num_glyphs (void) const { @@ -56,9 +86,15 @@ inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); - return_trace (c->check_struct (this) && - likely (version.major == 1 || - (version.major == 0 && version.minor == 0x5000u))); + if (unlikely (!c->check_struct (this))) + return_trace (false); + + if (version.major == 1) + { + const maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*this); + return v1.sanitize (c); + } + return_trace (likely (version.major == 0 && version.minor == 0x5000u)); } inline bool subset (hb_subset_plan_t *plan) const @@ -70,21 +106,37 @@ if (unlikely (!maxp_prime_blob)) { return false; } - unsigned int length; - OT::maxp *maxp_prime = (OT::maxp *) hb_blob_get_data (maxp_prime_blob, &length); + OT::maxp *maxp_prime = (OT::maxp *) hb_blob_get_data (maxp_prime_blob, nullptr); maxp_prime->set_num_glyphs (plan->gids_to_retain_sorted.len); + if (plan->drop_hints) + drop_hint_fields (plan, maxp_prime); bool result = hb_subset_plan_add_table(plan, HB_OT_TAG_maxp, maxp_prime_blob); hb_blob_destroy (maxp_prime_blob); return result; } - /* We only implement version 0.5 as none of the extra fields in version 1.0 are useful. */ + static inline void drop_hint_fields (hb_subset_plan_t *plan, OT::maxp *maxp_prime) + { + if (maxp_prime->version.major == 1) + { + maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*maxp_prime); + v1.maxZones.set (1); + v1.maxTwilightPoints.set (0); + v1.maxStorage.set (0); + v1.maxFunctionDefs.set (0); + v1.maxInstructionDefs.set (0); + v1.maxStackElements.set (0); + v1.maxSizeOfInstructions.set (0); + } + } + protected: FixedVersion<>version; /* Version of the maxp table (0.5 or 1.0), * 0x00005000u or 0x00010000u. */ HBUINT16 numGlyphs; /* The number of glyphs in the font. */ +/*maxpV1Tail v1Tail[VAR]; */ public: DEFINE_SIZE_STATIC (6); };
diff --git a/third_party/harfbuzz-ng/src/hb-ot-os2-table.hh b/third_party/harfbuzz-ng/src/hb-ot-os2-table.hh index 2d9d2149..6cb8d494 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-os2-table.hh +++ b/third_party/harfbuzz-ng/src/hb-ot-os2-table.hh
@@ -28,7 +28,7 @@ #define HB_OT_OS2_TABLE_HH #include "hb-open-type-private.hh" - +#include "hb-ot-os2-unicode-ranges.hh" namespace OT { @@ -67,11 +67,40 @@ os2_prime->usFirstCharIndex.set (min_cp); os2_prime->usLastCharIndex.set (max_cp); + _update_unicode_ranges (plan->codepoints, os2_prime->ulUnicodeRange); bool result = hb_subset_plan_add_table(plan, HB_OT_TAG_os2, os2_prime_blob); + hb_blob_destroy (os2_prime_blob); return result; } + inline void _update_unicode_ranges (const hb_prealloced_array_t<hb_codepoint_t> &codepoints, + HBUINT32 ulUnicodeRange[4]) const + { + for (unsigned int i = 0; i < 4; i++) + ulUnicodeRange[i].set (0); + + for (unsigned int i = 0; i < codepoints.len; i++) + { + hb_codepoint_t cp = codepoints[i]; + unsigned int bit = hb_get_unicode_range_bit (cp); + if (bit < 128) + { + unsigned int block = bit / 32; + unsigned int bit_in_block = bit % 32; + unsigned int mask = 1 << bit_in_block; + ulUnicodeRange[block].set (ulUnicodeRange[block] | mask); + } + if (cp >= 0x10000 && cp <= 0x110000) + { + /* the spec says that bit 57 ("Non Plane 0") implies that there's + at least one codepoint beyond the BMP; so I also include all + the non-BMP codepoints here */ + ulUnicodeRange[1].set (ulUnicodeRange[1] | (1 << 25)); + } + } + } + static inline void find_min_and_max_codepoint (const hb_prealloced_array_t<hb_codepoint_t> &codepoints, uint16_t *min_cp, /* OUT */ uint16_t *max_cp /* OUT */)
diff --git a/third_party/harfbuzz-ng/src/hb-ot-os2-unicode-ranges.hh b/third_party/harfbuzz-ng/src/hb-ot-os2-unicode-ranges.hh new file mode 100644 index 0000000..2cf168f --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-ot-os2-unicode-ranges.hh
@@ -0,0 +1,247 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Garret Rieger + */ + +#ifndef HB_OT_OS2_UNICODE_RANGES_HH +#define HB_OT_OS2_UNICODE_RANGES_HH + +#include "hb-private.hh" +#include "hb-dsalgs.hh" + +namespace OT { + +struct Range { + hb_codepoint_t start; + hb_codepoint_t end; + unsigned int bit; +}; + +/* Note: The contents of this array was generated using src/gen-unicode-ranges.py. */ +static Range os2UnicodeRangesSorted[] = +{ + { 0x0, 0x7F, 0}, // Basic Latin + { 0x80, 0xFF, 1}, // Latin-1 Supplement + { 0x100, 0x17F, 2}, // Latin Extended-A + { 0x180, 0x24F, 3}, // Latin Extended-B + { 0x250, 0x2AF, 4}, // IPA Extensions + { 0x2B0, 0x2FF, 5}, // Spacing Modifier Letters + { 0x300, 0x36F, 6}, // Combining Diacritical Marks + { 0x370, 0x3FF, 7}, // Greek and Coptic + { 0x400, 0x4FF, 9}, // Cyrillic + { 0x500, 0x52F, 9}, // Cyrillic Supplement + { 0x530, 0x58F, 10}, // Armenian + { 0x590, 0x5FF, 11}, // Hebrew + { 0x600, 0x6FF, 13}, // Arabic + { 0x700, 0x74F, 71}, // Syriac + { 0x750, 0x77F, 13}, // Arabic Supplement + { 0x780, 0x7BF, 72}, // Thaana + { 0x7C0, 0x7FF, 14}, // NKo + { 0x900, 0x97F, 15}, // Devanagari + { 0x980, 0x9FF, 16}, // Bengali + { 0xA00, 0xA7F, 17}, // Gurmukhi + { 0xA80, 0xAFF, 18}, // Gujarati + { 0xB00, 0xB7F, 19}, // Oriya + { 0xB80, 0xBFF, 20}, // Tamil + { 0xC00, 0xC7F, 21}, // Telugu + { 0xC80, 0xCFF, 22}, // Kannada + { 0xD00, 0xD7F, 23}, // Malayalam + { 0xD80, 0xDFF, 73}, // Sinhala + { 0xE00, 0xE7F, 24}, // Thai + { 0xE80, 0xEFF, 25}, // Lao + { 0xF00, 0xFFF, 70}, // Tibetan + { 0x1000, 0x109F, 74}, // Myanmar + { 0x10A0, 0x10FF, 26}, // Georgian + { 0x1100, 0x11FF, 28}, // Hangul Jamo + { 0x1200, 0x137F, 75}, // Ethiopic + { 0x1380, 0x139F, 75}, // Ethiopic Supplement + { 0x13A0, 0x13FF, 76}, // Cherokee + { 0x1400, 0x167F, 77}, // Unified Canadian Aboriginal Syllabics + { 0x1680, 0x169F, 78}, // Ogham + { 0x16A0, 0x16FF, 79}, // Runic + { 0x1700, 0x171F, 84}, // Tagalog + { 0x1720, 0x173F, 84}, // Hanunoo + { 0x1740, 0x175F, 84}, // Buhid + { 0x1760, 0x177F, 84}, // Tagbanwa + { 0x1780, 0x17FF, 80}, // Khmer + { 0x1800, 0x18AF, 81}, // Mongolian + { 0x1900, 0x194F, 93}, // Limbu + { 0x1950, 0x197F, 94}, // Tai Le + { 0x1980, 0x19DF, 95}, // New Tai Lue + { 0x19E0, 0x19FF, 80}, // Khmer Symbols + { 0x1A00, 0x1A1F, 96}, // Buginese + { 0x1B00, 0x1B7F, 27}, // Balinese + { 0x1B80, 0x1BBF, 112}, // Sundanese + { 0x1C00, 0x1C4F, 113}, // Lepcha + { 0x1C50, 0x1C7F, 114}, // Ol Chiki + { 0x1D00, 0x1D7F, 4}, // Phonetic Extensions + { 0x1D80, 0x1DBF, 4}, // Phonetic Extensions Supplement + { 0x1DC0, 0x1DFF, 6}, // Combining Diacritical Marks Supplement + { 0x1E00, 0x1EFF, 29}, // Latin Extended Additional + { 0x1F00, 0x1FFF, 30}, // Greek Extended + { 0x2000, 0x206F, 31}, // General Punctuation + { 0x2070, 0x209F, 32}, // Superscripts And Subscripts + { 0x20A0, 0x20CF, 33}, // Currency Symbols + { 0x20D0, 0x20FF, 34}, // Combining Diacritical Marks For Symbols + { 0x2100, 0x214F, 35}, // Letterlike Symbols + { 0x2150, 0x218F, 36}, // Number Forms + { 0x2190, 0x21FF, 37}, // Arrows + { 0x2200, 0x22FF, 38}, // Mathematical Operators + { 0x2300, 0x23FF, 39}, // Miscellaneous Technical + { 0x2400, 0x243F, 40}, // Control Pictures + { 0x2440, 0x245F, 41}, // Optical Character Recognition + { 0x2460, 0x24FF, 42}, // Enclosed Alphanumerics + { 0x2500, 0x257F, 43}, // Box Drawing + { 0x2580, 0x259F, 44}, // Block Elements + { 0x25A0, 0x25FF, 45}, // Geometric Shapes + { 0x2600, 0x26FF, 46}, // Miscellaneous Symbols + { 0x2700, 0x27BF, 47}, // Dingbats + { 0x27C0, 0x27EF, 38}, // Miscellaneous Mathematical Symbols-A + { 0x27F0, 0x27FF, 37}, // Supplemental Arrows-A + { 0x2800, 0x28FF, 82}, // Braille Patterns + { 0x2900, 0x297F, 37}, // Supplemental Arrows-B + { 0x2980, 0x29FF, 38}, // Miscellaneous Mathematical Symbols-B + { 0x2A00, 0x2AFF, 38}, // Supplemental Mathematical Operators + { 0x2B00, 0x2BFF, 37}, // Miscellaneous Symbols and Arrows + { 0x2C00, 0x2C5F, 97}, // Glagolitic + { 0x2C60, 0x2C7F, 29}, // Latin Extended-C + { 0x2C80, 0x2CFF, 8}, // Coptic + { 0x2D00, 0x2D2F, 26}, // Georgian Supplement + { 0x2D30, 0x2D7F, 98}, // Tifinagh + { 0x2D80, 0x2DDF, 75}, // Ethiopic Extended + { 0x2DE0, 0x2DFF, 9}, // Cyrillic Extended-A + { 0x2E00, 0x2E7F, 31}, // Supplemental Punctuation + { 0x2E80, 0x2EFF, 59}, // CJK Radicals Supplement + { 0x2F00, 0x2FDF, 59}, // Kangxi Radicals + { 0x2FF0, 0x2FFF, 59}, // Ideographic Description Characters + { 0x3000, 0x303F, 48}, // CJK Symbols And Punctuation + { 0x3040, 0x309F, 49}, // Hiragana + { 0x30A0, 0x30FF, 50}, // Katakana + { 0x3100, 0x312F, 51}, // Bopomofo + { 0x3130, 0x318F, 52}, // Hangul Compatibility Jamo + { 0x3190, 0x319F, 59}, // Kanbun + { 0x31A0, 0x31BF, 51}, // Bopomofo Extended + { 0x31C0, 0x31EF, 61}, // CJK Strokes + { 0x31F0, 0x31FF, 50}, // Katakana Phonetic Extensions + { 0x3200, 0x32FF, 54}, // Enclosed CJK Letters And Months + { 0x3300, 0x33FF, 55}, // CJK Compatibility + { 0x3400, 0x4DBF, 59}, // CJK Unified Ideographs Extension A + { 0x4DC0, 0x4DFF, 99}, // Yijing Hexagram Symbols + { 0x4E00, 0x9FFF, 59}, // CJK Unified Ideographs + { 0xA000, 0xA48F, 83}, // Yi Syllables + { 0xA490, 0xA4CF, 83}, // Yi Radicals + { 0xA500, 0xA63F, 12}, // Vai + { 0xA640, 0xA69F, 9}, // Cyrillic Extended-B + { 0xA700, 0xA71F, 5}, // Modifier Tone Letters + { 0xA720, 0xA7FF, 29}, // Latin Extended-D + { 0xA800, 0xA82F, 100}, // Syloti Nagri + { 0xA840, 0xA87F, 53}, // Phags-pa + { 0xA880, 0xA8DF, 115}, // Saurashtra + { 0xA900, 0xA92F, 116}, // Kayah Li + { 0xA930, 0xA95F, 117}, // Rejang + { 0xAA00, 0xAA5F, 118}, // Cham + { 0xAC00, 0xD7AF, 56}, // Hangul Syllables + { 0xD800, 0xDFFF, 57}, // Non-Plane 0 * + { 0xE000, 0xF8FF, 60}, // Private Use Area (plane 0) + { 0xF900, 0xFAFF, 61}, // CJK Compatibility Ideographs + { 0xFB00, 0xFB4F, 62}, // Alphabetic Presentation Forms + { 0xFB50, 0xFDFF, 63}, // Arabic Presentation Forms-A + { 0xFE00, 0xFE0F, 91}, // Variation Selectors + { 0xFE10, 0xFE1F, 65}, // Vertical Forms + { 0xFE20, 0xFE2F, 64}, // Combining Half Marks + { 0xFE30, 0xFE4F, 65}, // CJK Compatibility Forms + { 0xFE50, 0xFE6F, 66}, // Small Form Variants + { 0xFE70, 0xFEFF, 67}, // Arabic Presentation Forms-B + { 0xFF00, 0xFFEF, 68}, // Halfwidth And Fullwidth Forms + { 0xFFF0, 0xFFFF, 69}, // Specials + { 0x10000, 0x1007F, 101}, // Linear B Syllabary + { 0x10080, 0x100FF, 101}, // Linear B Ideograms + { 0x10100, 0x1013F, 101}, // Aegean Numbers + { 0x10140, 0x1018F, 102}, // Ancient Greek Numbers + { 0x10190, 0x101CF, 119}, // Ancient Symbols + { 0x101D0, 0x101FF, 120}, // Phaistos Disc + { 0x10280, 0x1029F, 121}, // Lycian + { 0x102A0, 0x102DF, 121}, // Carian + { 0x10300, 0x1032F, 85}, // Old Italic + { 0x10330, 0x1034F, 86}, // Gothic + { 0x10380, 0x1039F, 103}, // Ugaritic + { 0x103A0, 0x103DF, 104}, // Old Persian + { 0x10400, 0x1044F, 87}, // Deseret + { 0x10450, 0x1047F, 105}, // Shavian + { 0x10480, 0x104AF, 106}, // Osmanya + { 0x10800, 0x1083F, 107}, // Cypriot Syllabary + { 0x10900, 0x1091F, 58}, // Phoenician + { 0x10920, 0x1093F, 121}, // Lydian + { 0x10A00, 0x10A5F, 108}, // Kharoshthi + { 0x12000, 0x123FF, 110}, // Cuneiform + { 0x12400, 0x1247F, 110}, // Cuneiform Numbers and Punctuation + { 0x1D000, 0x1D0FF, 88}, // Byzantine Musical Symbols + { 0x1D100, 0x1D1FF, 88}, // Musical Symbols + { 0x1D200, 0x1D24F, 88}, // Ancient Greek Musical Notation + { 0x1D300, 0x1D35F, 109}, // Tai Xuan Jing Symbols + { 0x1D360, 0x1D37F, 111}, // Counting Rod Numerals + { 0x1D400, 0x1D7FF, 89}, // Mathematical Alphanumeric Symbols + { 0x1F000, 0x1F02F, 122}, // Mahjong Tiles + { 0x1F030, 0x1F09F, 122}, // Domino Tiles + { 0x20000, 0x2A6DF, 59}, // CJK Unified Ideographs Extension B + { 0x2F800, 0x2FA1F, 61}, // CJK Compatibility Ideographs Supplement + { 0xE0000, 0xE007F, 92}, // Tags + { 0xE0100, 0xE01EF, 91}, // Variation Selectors Supplement + { 0xF0000, 0xFFFFD, 90}, // Private Use (plane 15) + {0x100000, 0x10FFFD, 90}, // Private Use (plane 16) +}; + +static int +_compare_range (const void *_key, const void *_item, void *_arg) +{ + hb_codepoint_t cp = *((hb_codepoint_t *) _key); + const Range *range = (Range *) _item; + + if (cp < range->start) + return -1; + else if (cp <= range->end) + return 0; + else + return 1; +} + +/** + * hb_get_unicode_range_bit: + * Returns the bit to be set in os/2 ulUnicodeRange for a given codepoint. + **/ +static unsigned int +hb_get_unicode_range_bit (hb_codepoint_t cp) +{ + Range *range = (Range*) hb_bsearch_r (&cp, os2UnicodeRangesSorted, + sizeof (os2UnicodeRangesSorted) / sizeof(Range), + sizeof(Range), + _compare_range, nullptr); + if (range != NULL) + return range->bit; + return -1; +} + +} /* namespace OT */ + +#endif /* HB_OT_OS2_UNICODE_RANGES_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape.cc b/third_party/harfbuzz-ng/src/hb-ot-shape.cc index ec7c0d00..263d65c 100644 --- a/third_party/harfbuzz-ng/src/hb-ot-shape.cc +++ b/third_party/harfbuzz-ng/src/hb-ot-shape.cc
@@ -41,6 +41,7 @@ #include "hb-set-private.hh" #include "hb-ot-layout-gsubgpos-private.hh" +//#include "hb-aat-layout-private.hh" static hb_tag_t common_features[] = { HB_TAG('c','c','m','p'), @@ -786,6 +787,8 @@ _hb_ot_shape_fallback_kern (c->plan, c->font, c->buffer); _hb_buffer_deallocate_gsubgpos_vars (c->buffer); + + //hb_aat_layout_position (c->font, c->buffer); } static inline void @@ -956,7 +959,7 @@ hb_set_t *copy = hb_set_create (); do { copy->set (glyphs); - for (hb_codepoint_t lookup_index = -1; hb_set_next (lookups, &lookup_index);) + for (hb_codepoint_t lookup_index = HB_SET_VALUE_INVALID; hb_set_next (lookups, &lookup_index);) hb_ot_layout_lookup_substitute_closure (font->face, lookup_index, glyphs); } while (!copy->is_equal (glyphs)); hb_set_destroy (copy);
diff --git a/third_party/harfbuzz-ng/src/hb-set-private.hh b/third_party/harfbuzz-ng/src/hb-set-private.hh index 49cd791..3615c50e 100644 --- a/third_party/harfbuzz-ng/src/hb-set-private.hh +++ b/third_party/harfbuzz-ng/src/hb-set-private.hh
@@ -389,6 +389,7 @@ unsigned int na = pages.len; unsigned int nb = other->pages.len; + unsigned int next_page = na; unsigned int count = 0; unsigned int a = 0, b = 0; @@ -430,27 +431,47 @@ { a--; b--; - Op::process (page_at (--count).v, page_at (a).v, other->page_at (b).v); + count--; + page_map[count] = page_map[a]; + Op::process (page_at (count).v, page_at (a).v, other->page_at (b).v); } else if (page_map[a - 1].major > other->page_map[b - 1].major) { - a--; - if (Op::passthru_left) - page_at (--count).v = page_at (a).v; + a--; + if (Op::passthru_left) + { + count--; + page_map[count] = page_map[a]; + } } else { - b--; - if (Op::passthru_right) - page_at (--count).v = other->page_at (b).v; + b--; + if (Op::passthru_right) + { + count--; + page_map[count].major = other->page_map[b].major; + page_map[count].index = next_page++; + page_at (count).v = other->page_at (b).v; + } } } if (Op::passthru_left) while (a) - page_at (--count).v = page_at (--a).v; + { + a--; + count--; + page_map[count] = page_map [a]; + } if (Op::passthru_right) while (b) - page_at (--count).v = other->page_at (--b).v; + { + b--; + count--; + page_map[count].major = other->page_map[b].major; + page_map[count].index = next_page++; + page_at (count).v = other->page_at (b).v; + } assert (!count); }
diff --git a/third_party/harfbuzz-ng/src/hb-subset-glyf.hh b/third_party/harfbuzz-ng/src/hb-subset-glyf.hh new file mode 100644 index 0000000..99b76db9 --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-subset-glyf.hh
@@ -0,0 +1,40 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Garret Rieger + */ + +#ifndef HB_SUBSET_GLYF_HH +#define HB_SUBSET_GLYF_HH + +#include "hb-private.hh" + +#include "hb-subset-plan.hh" + +HB_INTERNAL bool +hb_subset_glyf_and_loca (hb_subset_plan_t *plan, + bool *use_short_loca, /* OUT */ + hb_blob_t **glyf_prime /* OUT */, + hb_blob_t **loca_prime /* OUT */); + +#endif /* HB_SUBSET_GLYF_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-subset-plan.hh b/third_party/harfbuzz-ng/src/hb-subset-plan.hh index a741528..d1b66b4 100644 --- a/third_party/harfbuzz-ng/src/hb-subset-plan.hh +++ b/third_party/harfbuzz-ng/src/hb-subset-plan.hh
@@ -37,6 +37,8 @@ hb_object_header_t header; ASSERT_POD (); + hb_bool_t drop_hints; + // TODO(Q1) actual map, drop this crap // Look at me ma, I'm a poor mans map codepoint : new gid // codepoints is sorted and aligned with gids_to_retain.
diff --git a/third_party/harfbuzz-ng/src/hb-subset-private.hh b/third_party/harfbuzz-ng/src/hb-subset-private.hh new file mode 100644 index 0000000..5fa7252 --- /dev/null +++ b/third_party/harfbuzz-ng/src/hb-subset-private.hh
@@ -0,0 +1,62 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Garret Rieger, Roderick Sheeter + */ + +#ifndef HB_SUBSET_PRIVATE_HH +#define HB_SUBSET_PRIVATE_HH + + +#include "hb-private.hh" + +#include "hb-subset.h" + +#include "hb-font-private.hh" + +typedef struct hb_subset_face_data_t hb_subset_face_data_t; + +struct hb_subset_input_t { + hb_object_header_t header; + ASSERT_POD (); + + hb_set_t *unicodes; + hb_set_t *glyphs; + + hb_bool_t drop_hints; + /* TODO + * + * features + * lookups + * nameIDs + * ... + */ +}; + +HB_INTERNAL hb_face_t * +hb_subset_face_create (void); + +HB_INTERNAL hb_bool_t +hb_subset_face_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob); + +#endif /* HB_SUBSET_PRIVATE_HH */
diff --git a/third_party/harfbuzz-ng/src/hb-subset.h b/third_party/harfbuzz-ng/src/hb-subset.h index de7759b22..55ce25b 100644 --- a/third_party/harfbuzz-ng/src/hb-subset.h +++ b/third_party/harfbuzz-ng/src/hb-subset.h
@@ -68,6 +68,8 @@ HB_EXTERN hb_set_t * hb_subset_input_glyph_set (hb_subset_input_t *subset_input); +HB_EXTERN hb_bool_t * +hb_subset_input_drop_hints (hb_subset_input_t *subset_input); /* hb_subset() */
diff --git a/third_party/harfbuzz-ng/src/hb-version.h b/third_party/harfbuzz-ng/src/hb-version.h index f0f5a181..27509326 100644 --- a/third_party/harfbuzz-ng/src/hb-version.h +++ b/third_party/harfbuzz-ng/src/hb-version.h
@@ -38,9 +38,9 @@ #define HB_VERSION_MAJOR 1 #define HB_VERSION_MINOR 7 -#define HB_VERSION_MICRO 5 +#define HB_VERSION_MICRO 6 -#define HB_VERSION_STRING "1.7.5" +#define HB_VERSION_STRING "1.7.6" #define HB_VERSION_ATLEAST(major,minor,micro) \ ((major)*10000+(minor)*100+(micro) <= \
diff --git a/tools/licenses.py b/tools/licenses.py index f0bf0bb..3862aa0a 100755 --- a/tools/licenses.py +++ b/tools/licenses.py
@@ -279,6 +279,7 @@ os.path.join('third_party', 'apple_apsl'), os.path.join('third_party', 'apple_sample_code'), os.path.join('third_party', 'ashmem'), + os.path.join('third_party', 'blink'), os.path.join('third_party', 'bspatch'), os.path.join('third_party', 'cacheinvalidation'), os.path.join('third_party', 'cld'),
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index de63613..8e8eb80 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -7214,6 +7214,11 @@ </int> </enum> +<enum name="CookieLoadProblem"> + <int value="0" label="Entry decryption failed"/> + <int value="1" label="Entry decryption taking over a minute"/> +</enum> + <enum name="CookieOrCacheDeletion"> <int value="0" label="Neither"/> <int value="1" label="Only cookies"/> @@ -40160,6 +40165,12 @@ <int value="3" label="Different account"/> </enum> +<enum name="SigninLoadTokenFromDB"> + <int value="0" label="Loaded"/> + <int value="1" label="Revoked by Dice migration"/> + <int value="2" label="Revoked as secondary account"/> +</enum> + <enum name="SigninReason"> <int value="0" label="Signin primary account"/> <int value="1" label="Add secondary account"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index a2a81e4..7fd87ac 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -12305,6 +12305,14 @@ </summary> </histogram> +<histogram name="Cookie.LoadProblem" enum="CookieLoadProblem"> + <owner>morlovich@chromium.org</owner> + <summary> + Recorded when a problem is recorded when loading the persistent cookie + store. + </summary> +</histogram> + <histogram name="Cookie.NumberOfLoadedCookies"> <owner>Please list the metric's owners. Add more owner tags as needed.</owner> <summary> @@ -22087,6 +22095,9 @@ </histogram> <histogram name="Event.MainThreadEventQueue.CoalescedCount" units="events"> + <obsolete> + Deprecated 03/2018 due to lack of usage. + </obsolete> <owner>dtapuska@chromium.org</owner> <summary> Number of continuous events (touchmove, mousemove, mousewheel) coalesced @@ -83533,6 +83544,14 @@ </summary> </histogram> +<histogram name="Signin.LoadTokenFromDB" enum="SigninLoadTokenFromDB"> + <owner>droger@chromium.org</owner> + <summary> + Action taken for tokens being loaded from the token database, at Chrome + startup. Tokens can be either loaded into Chrome's token service or revoked. + </summary> +</histogram> + <histogram name="Signin.OAuth2TokenGetFailure" enum="GoogleServiceAuthError"> <owner>mlerman@chromium.org</owner> <summary>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index 3ea62a76..559af07 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -250,10 +250,11 @@ crbug.com/787001 [ Android_Webview ] system_health.memory_mobile/load:media:soundcloud [ Skip ] [ Android_Webview ] system_health.memory_mobile/browse:chrome:newtab [ Skip ] crbug.com/714650 [ Android ] system_health.memory_mobile/browse:news:globo [ Skip ] -[ Android_Webview ] system_health.memory_mobile/browse:chrome:omnibox [ Skip ] +crbug.com/819552 [ Android_Webview Nexus_5X ] system_health.memory_mobile/browse:chrome:omnibox [ Skip ] crbug.com/657433 [ Android ] system_health.memory_mobile/load:tools:gmail [ Skip ] crbug.com/728081 [ Android ] system_health.memory_mobile/browse:news:toi [ Skip ] -crbug.com/777355 [ Android_Svelte ] system_health.memory_mobile/long_running:tools:gmail-background [ Skip ] +crbug.com/777355 [ Android ] system_health.memory_mobile/long_running:tools:gmail-background [ Skip ] +crbug.com/777355 [ Android_Webview ] system_health.memory_mobile/long_running:tools:gmail-foreground [ Skip ] [ Android_Webview ] system_health.memory_mobile/long_running:tools:gmail-background [ Skip ] crbug.com/708300 [ Android ] system_health.memory_mobile/browse:shopping:flipkart [ Skip ] crbug.com/784400 [ Nexus_5 ] system_health.memory_mobile/background:tools:gmail [ Skip ]
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_proxy.js b/ui/webui/resources/cr_components/chromeos/network/network_proxy.js index a1f2056..ae56d01 100644 --- a/ui/webui/resources/cr_components/chromeos/network/network_proxy.js +++ b/ui/webui/resources/cr_components/chromeos/network/network_proxy.js
@@ -208,7 +208,8 @@ // Set the Web Proxy Auto Discovery URL. var ipv4 = CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4); - this.WPAD_ = (ipv4 && ipv4.WebProxyAutoDiscoveryUrl) || ''; + this.WPAD_ = (ipv4 && ipv4.WebProxyAutoDiscoveryUrl) || + this.i18n('networkProxyWpadNone'); this.setProxyAsync_(proxy); },
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_siminfo.html b/ui/webui/resources/cr_components/chromeos/network/network_siminfo.html index 45101bfb..50c300e56 100644 --- a/ui/webui/resources/cr_components/chromeos/network/network_siminfo.html +++ b/ui/webui/resources/cr_components/chromeos/network/network_siminfo.html
@@ -17,6 +17,10 @@ <dom-module id="network-siminfo"> <template> <style include="network-shared iron-flex"> + :host { + cursor: default + } + iron-icon { -webkit-margin-end: 10px; } @@ -43,6 +47,7 @@ paper-toggle-button { -webkit-margin-start: var(--cr-button-edge-spacing); + @apply --cr-actionable; } </style>
diff --git a/ui/webui/resources/cr_elements/chromeos/network/cr_network_list_item.js b/ui/webui/resources/cr_elements/chromeos/network/cr_network_list_item.js index 779e53c..2b878fd 100644 --- a/ui/webui/resources/cr_elements/chromeos/network/cr_network_list_item.js +++ b/ui/webui/resources/cr_elements/chromeos/network/cr_network_list_item.js
@@ -103,9 +103,7 @@ * @private */ isStateTextVisible_: function() { - return !!this.networkState && - (this.networkState.ConnectionState != - CrOnc.ConnectionState.NOT_CONNECTED); + return !!this.networkState && !!this.getNetworkStateText_(); }, /** @@ -114,16 +112,20 @@ * @private */ getNetworkStateText_: function() { - if (!this.isStateTextVisible_()) + if (!this.networkState) return ''; - var state = this.networkState.ConnectionState; - // For Cellular, an empty ConnectionState indicates that the device is - // still initializing. - if (!state && this.networkState.Type == CrOnc.Type.CELLULAR) - return CrOncStrings.networkListItemInitializing; - if (state == CrOnc.ConnectionState.CONNECTED) + var connectionState = this.networkState.ConnectionState; + if (this.networkState.Type == CrOnc.Type.CELLULAR) { + // For Cellular, an empty ConnectionState indicates that the device is + // still initializing. + if (!connectionState) + return CrOncStrings.networkListItemInitializing; + if (this.networkState.Cellular && this.networkState.Cellular.Scanning) + return CrOncStrings.networkListItemScanning; + } + if (connectionState == CrOnc.ConnectionState.CONNECTED) return CrOncStrings.networkListItemConnected; - if (state == CrOnc.ConnectionState.CONNECTING) + if (connectionState == CrOnc.ConnectionState.CONNECTING) return CrOncStrings.networkListItemConnecting; return ''; },
diff --git a/ui/webui/resources/cr_elements/chromeos/network/cr_network_select.js b/ui/webui/resources/cr_elements/chromeos/network/cr_network_select.js index 5a8b058..26a37dc4 100644 --- a/ui/webui/resources/cr_elements/chromeos/network/cr_network_select.js +++ b/ui/webui/resources/cr_elements/chromeos/network/cr_network_select.js
@@ -149,6 +149,8 @@ this.cellularDeviceState_ = deviceStates.find(function(device) { return device.Type == CrOnc.Type.CELLULAR; }); + if (this.cellularDeviceState_) + this.ensureCellularNetwork_(networkStates); this.networkStateList_ = networkStates; var defaultNetwork; if (networkStates.length > 0) { @@ -177,6 +179,30 @@ }, /** + * Modifies |networkStates| to include a cellular network if none exists. + * @param {!Array<!CrOnc.NetworkStateProperties>} networkStates + * @private + */ + ensureCellularNetwork_: function(networkStates) { + if (networkStates.find(function(network) { + return network.Type == CrOnc.Type.CELLULAR; + })) { + return; + } + // Add a Cellular network after the Ethernet network if it exists. + var idx = networkStates.length > 0 && + networkStates[0].Type == CrOnc.Type.ETHERNET ? + 1 : + 0; + var cellular = { + GUID: '', + Type: CrOnc.Type.CELLULAR, + Cellular: {Scanning: this.cellularDeviceState_.Scanning} + }; + networkStates.splice(idx, 0, cellular); + }, + + /** * Event triggered when a cr-network-list-item is selected. * @param {!{target: HTMLElement, detail: !CrOnc.NetworkStateProperties}} e * @private
diff --git a/ui/webui/resources/cr_elements/chromeos/network/cr_onc_types.js b/ui/webui/resources/cr_elements/chromeos/network/cr_onc_types.js index 5a7ed92..7c20cb6 100644 --- a/ui/webui/resources/cr_elements/chromeos/network/cr_onc_types.js +++ b/ui/webui/resources/cr_elements/chromeos/network/cr_onc_types.js
@@ -30,6 +30,7 @@ * networkListItemConnecting: string, * networkListItemConnectingTo: string, * networkListItemInitializing: string, + * networkListItemScanning: string, * networkListItemNotConnected: string, * networkListItemNoNetwork: string, * vpnNameTemplate: string,