diff --git a/DEPS b/DEPS index bada0b49..c82c3bf 100644 --- a/DEPS +++ b/DEPS
@@ -40,11 +40,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': '5128bd4b184b4572321821ad14def1a910159d6b', + 'skia_revision': '0bb6f38e511365670b9917ad76ece6f0bee9e282', # 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': '70995dbfd413e096476967b8780022e6cfe507bf', + 'v8_revision': '97674cb813b238739f33a160b20b2dd0f0033af8', # 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.
diff --git a/base/memory/memory_pressure_monitor_mac.cc b/base/memory/memory_pressure_monitor_mac.cc index 39158902..6261de2 100644 --- a/base/memory/memory_pressure_monitor_mac.cc +++ b/base/memory/memory_pressure_monitor_mac.cc
@@ -4,6 +4,8 @@ #include "base/memory/memory_pressure_monitor_mac.h" +#include <CoreFoundation/CoreFoundation.h> + #include <dlfcn.h> #include <stddef.h> #include <sys/sysctl.h> @@ -26,9 +28,9 @@ namespace mac { MemoryPressureListener::MemoryPressureLevel -MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressure( - int mac_memory_pressure) { - switch (mac_memory_pressure) { +MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + int mac_memory_pressure_level) { + switch (mac_memory_pressure_level) { case DISPATCH_MEMORYPRESSURE_NORMAL: return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE; case DISPATCH_MEMORYPRESSURE_WARN: @@ -39,6 +41,13 @@ return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE; } +void MemoryPressureMonitor::OnRunLoopExit(CFRunLoopObserverRef observer, + CFRunLoopActivity activity, + void* info) { + MemoryPressureMonitor* self = static_cast<MemoryPressureMonitor*>(info); + self->UpdatePressureLevelOnRunLoopExit(); +} + MemoryPressureMonitor::MemoryPressureMonitor() : memory_level_event_source_(dispatch_source_create( DISPATCH_SOURCE_TYPE_MEMORYPRESSURE, @@ -48,77 +57,140 @@ dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))), dispatch_callback_( base::Bind(&MemoryPressureListener::NotifyMemoryPressure)), - last_statistic_report_(CFAbsoluteTimeGetCurrent()), + last_statistic_report_time_(CFAbsoluteTimeGetCurrent()), last_pressure_level_(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE), - reporting_error_(0) { - if (memory_level_event_source_.get() != nullptr) { + subtick_seconds_(0) { + // Attach an event handler to the memory pressure event source. + if (memory_level_event_source_.get()) { dispatch_source_set_event_handler(memory_level_event_source_, ^{ OnMemoryPressureChanged(memory_level_event_source_.get(), dispatch_callback_); }); + + // Start monitoring the event source. dispatch_resume(memory_level_event_source_); } + + // Create a CFRunLoopObserver to check the memory pressure at the end of + // every pass through the event loop (modulo kUMATickSize). + CFRunLoopObserverContext observer_context = {0, this, NULL, NULL, NULL}; + + exit_observer_.reset( + CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopExit, true, 0, + OnRunLoopExit, &observer_context)); + + CFRunLoopRef run_loop = CFRunLoopGetCurrent(); + CFRunLoopAddObserver(run_loop, exit_observer_, kCFRunLoopCommonModes); + CFRunLoopAddObserver(run_loop, exit_observer_, + kMessageLoopExclusiveRunLoopMode); } MemoryPressureMonitor::~MemoryPressureMonitor() { - if (memory_level_event_source_.get() != nullptr) + // Detach from the run loop. + CFRunLoopRef run_loop = CFRunLoopGetCurrent(); + CFRunLoopRemoveObserver(run_loop, exit_observer_, kCFRunLoopCommonModes); + CFRunLoopRemoveObserver(run_loop, exit_observer_, + kMessageLoopExclusiveRunLoopMode); + + // Remove the memory pressure event source. + if (memory_level_event_source_.get()) { dispatch_source_cancel(memory_level_event_source_); + } +} + +int MemoryPressureMonitor::GetMacMemoryPressureLevel() { + // Get the raw memory pressure level from macOS. + int mac_memory_pressure_level; + size_t length = sizeof(int); + sysctlbyname("kern.memorystatus_vm_pressure_level", + &mac_memory_pressure_level, &length, nullptr, 0); + + return mac_memory_pressure_level; +} + +void MemoryPressureMonitor::UpdatePressureLevel() { + // Get the current macOS pressure level and convert to the corresponding + // Chrome pressure level. + int mac_memory_pressure_level = GetMacMemoryPressureLevel(); + MemoryPressureListener::MemoryPressureLevel new_pressure_level = + MemoryPressureLevelForMacMemoryPressureLevel(mac_memory_pressure_level); + + // Compute the number of "ticks" spent at |last_pressure_level_| (since the + // last report sent to UMA). + CFTimeInterval now = CFAbsoluteTimeGetCurrent(); + CFTimeInterval time_since_last_report = now - last_statistic_report_time_; + last_statistic_report_time_ = now; + + double accumulated_time = time_since_last_report + subtick_seconds_; + int ticks_to_report = static_cast<int>(accumulated_time / kUMATickSize); + // Save for later the seconds that didn't make it into a full tick. + subtick_seconds_ = std::fmod(accumulated_time, kUMATickSize); + + // Round the tick count up on a pressure level change to ensure we capture it. + bool pressure_level_changed = (new_pressure_level != last_pressure_level_); + if (pressure_level_changed && ticks_to_report < 1) { + ticks_to_report = 1; + subtick_seconds_ = 0; + } + + // Send elapsed ticks to UMA. + if (ticks_to_report >= 1) { + RecordMemoryPressure(last_pressure_level_, ticks_to_report); + } + + // Save the now-current memory pressure level. + last_pressure_level_ = new_pressure_level; +} + +void MemoryPressureMonitor::UpdatePressureLevelOnRunLoopExit() { + // Wait until it's time to check the pressure level. + CFTimeInterval now = CFAbsoluteTimeGetCurrent(); + if (now >= next_run_loop_update_time_) { + UpdatePressureLevel(); + + // Update again in kUMATickSize seconds. We can update at any frequency, + // but because we're only checking memory pressure levels for UMA there's + // no need to update more frequently than we're keeping statistics on. + next_run_loop_update_time_ = now + kUMATickSize - subtick_seconds_; + } +} + +// Static. +int MemoryPressureMonitor::GetSecondsPerUMATick() { + return kUMATickSize; } MemoryPressureListener::MemoryPressureLevel MemoryPressureMonitor::GetCurrentPressureLevel() { - int mac_memory_pressure; - size_t length = sizeof(int); - sysctlbyname("kern.memorystatus_vm_pressure_level", &mac_memory_pressure, - &length, nullptr, 0); - MemoryPressureListener::MemoryPressureLevel memory_pressure_level = - MemoryPressureLevelForMacMemoryPressure(mac_memory_pressure); - bool pressure_level_changed = false; - if (last_pressure_level_ != memory_pressure_level) { - pressure_level_changed = true; - } - SendStatisticsIfNecessary(pressure_level_changed); - last_pressure_level_ = memory_pressure_level; - return memory_pressure_level; + UpdatePressureLevel(); + return last_pressure_level_; } void MemoryPressureMonitor::OnMemoryPressureChanged( dispatch_source_s* event_source, const MemoryPressureMonitor::DispatchCallback& dispatch_callback) { - int mac_memory_pressure = dispatch_source_get_data(event_source); + // Get the Chrome-equvialent memory pressure level. + int mac_memory_pressure_level = dispatch_source_get_data(event_source); MemoryPressureListener::MemoryPressureLevel memory_pressure_level = - MemoryPressureLevelForMacMemoryPressure(mac_memory_pressure); - bool pressure_level_changed = false; - if (last_pressure_level_ != memory_pressure_level) { - pressure_level_changed = true; - } - SendStatisticsIfNecessary(pressure_level_changed); - last_pressure_level_ = memory_pressure_level; + MemoryPressureLevelForMacMemoryPressureLevel(mac_memory_pressure_level); + + // Run the callback that's waiting on memory pressure change notifications. + // Note that we don't bother with updating |last_pressure_level_| or + // causing memory pressure stats to be sent to UMA. Memory pressure change + // notifications are delayed on the Mac, so the current actual memory pressure + // level may be different than the incoming pressure level from the event. + // + // In general we don't want to take action (such as freeing memory) on + // memory pressure change events, but that's how the current system is + // designed. Given that it's incorrect to act on either stale or current + // pressure level info, it's not clear which level is better to send. For + // now stick with how it's been implemented to date, which is to send the + // stale value. if (memory_pressure_level != MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE) dispatch_callback.Run(memory_pressure_level); } -void MemoryPressureMonitor::SendStatisticsIfNecessary( - bool pressure_level_changed) { - CFTimeInterval now = CFAbsoluteTimeGetCurrent(); - CFTimeInterval since_last_report = now - last_statistic_report_; - last_statistic_report_ = now; - - double accumulated_time = since_last_report + reporting_error_; - int ticks_to_report = static_cast<int>(accumulated_time / kUMATickSize); - reporting_error_ = std::fmod(accumulated_time, kUMATickSize); - - // Round up on change to ensure we capture it - if (pressure_level_changed && ticks_to_report < 1) { - ticks_to_report = 1; - reporting_error_ = 0; - } - - if (ticks_to_report >= 1) - RecordMemoryPressure(last_pressure_level_, ticks_to_report); -} - void MemoryPressureMonitor::SetDispatchCallback( const DispatchCallback& callback) { dispatch_callback_ = callback;
diff --git a/base/memory/memory_pressure_monitor_mac.h b/base/memory/memory_pressure_monitor_mac.h index 9118632..b85b6c90 100644 --- a/base/memory/memory_pressure_monitor_mac.h +++ b/base/memory/memory_pressure_monitor_mac.h
@@ -9,10 +9,12 @@ #include <dispatch/dispatch.h> #include "base/base_export.h" +#include "base/mac/scoped_cftyperef.h" #include "base/mac/scoped_dispatch_object.h" #include "base/macros.h" #include "base/memory/memory_pressure_listener.h" #include "base/memory/memory_pressure_monitor.h" +#include "base/message_loop/message_pump_mac.h" namespace base { namespace mac { @@ -34,24 +36,51 @@ private: friend TestMemoryPressureMonitor; - static MemoryPressureLevel - MemoryPressureLevelForMacMemoryPressure(int mac_memory_pressure); + static MemoryPressureLevel MemoryPressureLevelForMacMemoryPressureLevel( + int mac_memory_pressure_level); + static void OnRunLoopExit(CFRunLoopObserverRef observer, + CFRunLoopActivity activity, + void* info); + // Returns the raw memory pressure level from the macOS. Exposed for + // unit testing. + virtual int GetMacMemoryPressureLevel(); + + // Updates |last_pressure_level_| with the current memory pressure level. + void UpdatePressureLevel(); + + // Updates |last_pressure_level_| at the end of every run loop pass (modulo + // some number of seconds). + void UpdatePressureLevelOnRunLoopExit(); + + // Run |dispatch_callback| on memory pressure notifications from the OS. void OnMemoryPressureChanged(dispatch_source_s* event_source, const DispatchCallback& dispatch_callback); - void SendStatisticsIfNecessary(bool pressure_level_changed); + // Returns the number of seconds per UMA tick (for statistics recording). + // Exposed for testing. + static int GetSecondsPerUMATick(); + + // The dispatch source that generates memory pressure change notifications. ScopedDispatchObject<dispatch_source_t> memory_level_event_source_; + // The callback to call upon receiving a memory pressure change notification. DispatchCallback dispatch_callback_; - CFTimeInterval last_statistic_report_; + // Last UMA report time. + CFTimeInterval last_statistic_report_time_; + // Most-recent memory pressure level. MemoryPressureLevel last_pressure_level_; - // The UMA statistic is recorded in 5 second increments. This - // accumulates the remaining time to be rolled into the next - // call. - CFTimeInterval reporting_error_; + // Observer that tracks exits from the main run loop. + ScopedCFTypeRef<CFRunLoopObserverRef> exit_observer_; + + // Next time to update the memory pressure level when exiting the run loop. + CFTimeInterval next_run_loop_update_time_; + + // Seconds left over from the last UMA tick calculation (to be added to the + // next calculation). + CFTimeInterval subtick_seconds_; DISALLOW_COPY_AND_ASSIGN(MemoryPressureMonitor); };
diff --git a/base/memory/memory_pressure_monitor_mac_unittest.cc b/base/memory/memory_pressure_monitor_mac_unittest.cc index b7c29cd..9d251f0 100644 --- a/base/memory/memory_pressure_monitor_mac_unittest.cc +++ b/base/memory/memory_pressure_monitor_mac_unittest.cc
@@ -4,7 +4,11 @@ #include "base/memory/memory_pressure_monitor_mac.h" +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/mac/scoped_cftyperef.h" #include "base/macros.h" +#include "base/test/histogram_tester.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { @@ -12,43 +16,87 @@ class TestMemoryPressureMonitor : public MemoryPressureMonitor { public: - using MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressure; + using MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel; + + // A HistogramTester for verifying correct UMA stat generation. + base::HistogramTester tester; TestMemoryPressureMonitor() { } + // Clears the next run loop update time so that the next pass of the run + // loop checks the memory pressure level immediately. Normally there's a + // 5 second delay between pressure readings. + void ResetRunLoopUpdateTime() { next_run_loop_update_time_ = 0; } + + // Access to the last-recorded memory pressure level. + MemoryPressureListener::MemoryPressureLevel LastPressureLevel() { + return last_pressure_level_; + } + + // Sets the last UMA stat report time. Time spent in memory pressure is + // recorded in 5-second "ticks" from the last time statistics were recorded. + void SetLastStatisticReportTime(CFTimeInterval time) { + last_statistic_report_time_ = time; + } + + // Sets the raw macOS memory pressure level read by the memory pressure + // monitor. + int macos_pressure_level_for_testing_; + + // Exposes the UpdatePressureLevel() method for testing. + void UpdatePressureLevel() { MemoryPressureMonitor::UpdatePressureLevel(); } + + // Returns the number of seconds left over from the last UMA tick + // calculation. + int SubTickSeconds() { return subtick_seconds_; } + + // Returns the number of seconds per UMA tick. + static int GetSecondsPerUMATick() { + return MemoryPressureMonitor::GetSecondsPerUMATick(); + } + private: DISALLOW_COPY_AND_ASSIGN(TestMemoryPressureMonitor); + + int GetMacMemoryPressureLevel() override { + return macos_pressure_level_for_testing_; + } }; TEST(MacMemoryPressureMonitorTest, MemoryPressureFromMacMemoryPressure) { - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure( - DISPATCH_MEMORYPRESSURE_NORMAL)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure( - DISPATCH_MEMORYPRESSURE_WARN)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure( - DISPATCH_MEMORYPRESSURE_CRITICAL)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure(0)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure(3)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure(5)); - EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, - TestMemoryPressureMonitor:: - MemoryPressureLevelForMacMemoryPressure(-1)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + DISPATCH_MEMORYPRESSURE_NORMAL)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + DISPATCH_MEMORYPRESSURE_WARN)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + DISPATCH_MEMORYPRESSURE_CRITICAL)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + 0)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + 3)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + 5)); + EXPECT_EQ( + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE, + TestMemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressureLevel( + -1)); } TEST(MacMemoryPressureMonitorTest, CurrentMemoryPressure) { TestMemoryPressureMonitor monitor; + MemoryPressureListener::MemoryPressureLevel memory_pressure = monitor.GetCurrentPressureLevel(); EXPECT_TRUE(memory_pressure == @@ -59,5 +107,124 @@ MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); } +TEST(MacMemoryPressureMonitorTest, MemoryPressureConversion) { + TestMemoryPressureMonitor monitor; + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_NORMAL; + MemoryPressureListener::MemoryPressureLevel memory_pressure = + monitor.GetCurrentPressureLevel(); + EXPECT_EQ(memory_pressure, + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE); + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_WARN; + memory_pressure = monitor.GetCurrentPressureLevel(); + EXPECT_EQ(memory_pressure, + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_CRITICAL; + memory_pressure = monitor.GetCurrentPressureLevel(); + EXPECT_EQ(memory_pressure, + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); +} + +TEST(MacMemoryPressureMonitorTest, MemoryPressureRunLoopChecking) { + TestMemoryPressureMonitor monitor; + + // To test grabbing the memory presure at the end of the run loop, we have to + // run the run loop, but to do that the run loop needs a run loop source. Add + // a timer as the source. We know that the exit observer is attached to + // the kMessageLoopExclusiveRunLoopMode mode, so use that mode. + ScopedCFTypeRef<CFRunLoopTimerRef> timer_ref(CFRunLoopTimerCreate( + NULL, CFAbsoluteTimeGetCurrent() + 10, 0, 0, 0, nullptr, nullptr)); + CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer_ref, + kMessageLoopExclusiveRunLoopMode); + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_WARN; + monitor.ResetRunLoopUpdateTime(); + CFRunLoopRunInMode(kMessageLoopExclusiveRunLoopMode, 0, true); + EXPECT_EQ(monitor.LastPressureLevel(), + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_CRITICAL; + monitor.ResetRunLoopUpdateTime(); + CFRunLoopRunInMode(kMessageLoopExclusiveRunLoopMode, 0, true); + EXPECT_EQ(monitor.LastPressureLevel(), + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); + + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_NORMAL; + monitor.ResetRunLoopUpdateTime(); + CFRunLoopRunInMode(kMessageLoopExclusiveRunLoopMode, 0, true); + EXPECT_EQ(monitor.LastPressureLevel(), + MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE); + + CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), timer_ref, + kMessageLoopExclusiveRunLoopMode); +} + +TEST(MacMemoryPressureMonitorTest, RecordMemoryPressureStats) { + TestMemoryPressureMonitor monitor; + const char* kHistogram = "Memory.PressureLevel"; + CFTimeInterval now = CFAbsoluteTimeGetCurrent(); + const int seconds_per_tick = + TestMemoryPressureMonitor::GetSecondsPerUMATick(); + + // Set the initial pressure level. + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_NORMAL; + // Incur one UMA tick of time (and include one extra second of elapsed time). + monitor.SetLastStatisticReportTime(now - (seconds_per_tick + 1)); + monitor.UpdatePressureLevel(); + monitor.tester.ExpectTotalCount(kHistogram, 1); + monitor.tester.ExpectBucketCount(kHistogram, 0, 1); + // The report time above included an extra second so there should be 1 + // sub-tick second left over. + EXPECT_EQ(1, monitor.SubTickSeconds()); + + // Simulate sitting in normal pressure for 1 second less than 6 UMA tick + // seconds and then elevating to warning. With the left over sub-tick second + // from above, the total elapsed ticks should be an even 6 UMA ticks. + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_WARN; + monitor.SetLastStatisticReportTime(now - (seconds_per_tick * 6 - 1)); + monitor.UpdatePressureLevel(); + monitor.tester.ExpectTotalCount(kHistogram, 7); + monitor.tester.ExpectBucketCount(kHistogram, 0, 7); + monitor.tester.ExpectBucketCount(kHistogram, 1, 0); + EXPECT_EQ(0, monitor.SubTickSeconds()); + + // Simulate sitting in warning pressure for 20 UMA ticks and 2 seconds, and + // then elevating to critical. + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_CRITICAL; + monitor.SetLastStatisticReportTime(now - (20 * seconds_per_tick + 2)); + monitor.UpdatePressureLevel(); + monitor.tester.ExpectTotalCount(kHistogram, 27); + monitor.tester.ExpectBucketCount(kHistogram, 0, 7); + monitor.tester.ExpectBucketCount(kHistogram, 1, 20); + monitor.tester.ExpectBucketCount(kHistogram, 2, 0); + EXPECT_EQ(2, monitor.SubTickSeconds()); + + // A quick update while critical - the stats should not budge because less + // than 1 tick of time has elapsed. + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_CRITICAL; + monitor.SetLastStatisticReportTime(now - 1); + monitor.UpdatePressureLevel(); + monitor.tester.ExpectTotalCount(kHistogram, 27); + monitor.tester.ExpectBucketCount(kHistogram, 0, 7); + monitor.tester.ExpectBucketCount(kHistogram, 1, 20); + monitor.tester.ExpectBucketCount(kHistogram, 2, 0); + EXPECT_EQ(3, monitor.SubTickSeconds()); + + // A quick change back to normal. Less than 1 tick of time has elapsed, but + // in this case the pressure level changed, so the critical bucket should + // get another sample (otherwise we could miss quick level changes). + monitor.macos_pressure_level_for_testing_ = DISPATCH_MEMORYPRESSURE_NORMAL; + monitor.SetLastStatisticReportTime(now - 1); + monitor.UpdatePressureLevel(); + monitor.tester.ExpectTotalCount(kHistogram, 28); + monitor.tester.ExpectBucketCount(kHistogram, 0, 7); + monitor.tester.ExpectBucketCount(kHistogram, 1, 20); + monitor.tester.ExpectBucketCount(kHistogram, 2, 1); + // When less than 1 tick of time has elapsed but the pressure level changed, + // the subtick remainder gets zeroed out. + EXPECT_EQ(0, monitor.SubTickSeconds()); +} } // namespace mac } // namespace base
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 9137028..1f89686 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -1100,9 +1100,6 @@ # TODO(hans): https://crbug.com/637306 "-Wno-address-of-packed-member", - # TODO(thakis): Consider turning this on, https://crbug.com/691120 - "-Wno-block-capture-autoreleasing", - # TODO(hans): https://crbug.com/681136 "-Wno-unused-lambda-capture",
diff --git a/cc/layers/scrollbar_layer_unittest.cc b/cc/layers/scrollbar_layer_unittest.cc index 5abdca7..8824b28 100644 --- a/cc/layers/scrollbar_layer_unittest.cc +++ b/cc/layers/scrollbar_layer_unittest.cc
@@ -224,8 +224,8 @@ scoped_refptr<Layer> layer_tree_root = Layer::Create(); scoped_refptr<Layer> scroll_layer = Layer::Create(); scoped_refptr<Layer> content_layer = Layer::Create(); - scoped_refptr<Layer> scrollbar_layer = PaintedScrollbarLayer::Create( - std::move(scrollbar), layer_tree_root->id()); + scoped_refptr<Layer> scrollbar_layer = + PaintedScrollbarLayer::Create(std::move(scrollbar), scroll_layer->id()); // Choose bounds to give max_scroll_offset = (30, 50). layer_tree_root->SetBounds(gfx::Size(70, 150)); @@ -238,7 +238,6 @@ layer_tree_root->AddChild(scroll_layer); scroll_layer->AddChild(content_layer); layer_tree_root->AddChild(scrollbar_layer); - scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); layer_tree_root->SavePaintProperties(); content_layer->SavePaintProperties(); @@ -531,8 +530,7 @@ const bool kIsLeftSideVerticalScrollbar = false; child2 = SolidColorScrollbarLayer::Create( scrollbar->Orientation(), kThumbThickness, kTrackStart, - kIsLeftSideVerticalScrollbar, child1->id()); - child2->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); + kIsLeftSideVerticalScrollbar, scroll_layer->id()); scroll_layer->AddChild(child1); scroll_layer->InsertChild(child2, 1); layer_tree_root->AddChild(scroll_layer); @@ -584,8 +582,7 @@ const bool kIsLeftSideVerticalScrollbar = false; scrollbar_layer = SolidColorScrollbarLayer::Create( scrollbar->Orientation(), kThumbThickness, kTrackStart, - kIsLeftSideVerticalScrollbar, child1->id()); - scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); + kIsLeftSideVerticalScrollbar, scroll_layer->id()); scroll_layer->AddChild(child1); scroll_layer->InsertChild(scrollbar_layer, 1); layer_tree_root->AddChild(scroll_layer); @@ -666,9 +663,8 @@ const bool kIsLeftSideVerticalScrollbar = false; scrollbar_layer = SolidColorScrollbarLayer::Create( scrollbar->Orientation(), kThumbThickness, kTrackStart, - kIsLeftSideVerticalScrollbar, child1->id()); + kIsLeftSideVerticalScrollbar, scroll_layer->id()); scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); - scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); scroll_layer->AddChild(child1); scroll_layer->InsertChild(scrollbar_layer, 1); layer_tree_root->AddChild(scroll_layer);
diff --git a/cc/layers/solid_color_scrollbar_layer.cc b/cc/layers/solid_color_scrollbar_layer.cc index 2670fd3..2eb5484 100644 --- a/cc/layers/solid_color_scrollbar_layer.cc +++ b/cc/layers/solid_color_scrollbar_layer.cc
@@ -39,7 +39,7 @@ int track_start, bool is_left_side_vertical_scrollbar, int scroll_layer_id) - : scroll_layer_id(Layer::INVALID_ID), + : scroll_layer_id(scroll_layer_id), orientation(orientation), thumb_thickness(thumb_thickness), track_start(track_start),
diff --git a/cc/trees/layer_tree_host_unittest_damage.cc b/cc/trees/layer_tree_host_unittest_damage.cc index 5873138c..d2f0b86 100644 --- a/cc/trees/layer_tree_host_unittest_damage.cc +++ b/cc/trees/layer_tree_host_unittest_damage.cc
@@ -354,7 +354,6 @@ FakePaintedScrollbarLayer::Create(false, true, content_layer_->id()); scrollbar_layer->SetPosition(gfx::PointF(300.f, 300.f)); scrollbar_layer->SetBounds(gfx::Size(10, 100)); - scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(content_layer_->id()); root_layer->AddChild(scrollbar_layer); gfx::RectF content_rect(content_layer_->position(),
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc index 8e1cd9d..6525d653 100644 --- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc +++ b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
@@ -256,11 +256,7 @@ visible_fraction_ = 0; browser_view_->top_container()->SetPaintToLayer(); - // In mash the window manager (ash) also renders to the non-client area. In - // order to see the decorations drawn by ash the layer needs to be marked as - // not filling bounds opaquely. - if (ash_util::IsRunningInMash()) - browser_view_->top_container()->layer()->SetFillsBoundsOpaquely(false); + browser_view_->top_container()->layer()->SetFillsBoundsOpaquely(false); LayoutBrowserRootView(); CreateMashRevealWidget(); for (Observer& observer : observers_)
diff --git a/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc similarity index 97% rename from chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc rename to chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc index 209437c..6d4bb54 100644 --- a/chrome/browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc +++ b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc
@@ -7,8 +7,8 @@ #include "base/macros.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h" #include "chrome/browser/ui/views/payments/validating_textfield.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/personal_data_manager.h" @@ -28,10 +28,10 @@ } // namespace class PaymentRequestCreditCardEditorTest - : public PaymentRequestInteractiveTestBase { + : public PaymentRequestBrowserTestBase { protected: PaymentRequestCreditCardEditorTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_no_shipping_test.html") {} PersonalDataLoadedObserverMock personal_data_observer_; @@ -297,11 +297,11 @@ } class PaymentRequestCreditCardBasicCardTest - : public PaymentRequestInteractiveTestBase { + : public PaymentRequestBrowserTestBase { protected: PaymentRequestCreditCardBasicCardTest() - : PaymentRequestInteractiveTestBase( - "/payment_request_basic_card_test.html") {} + : PaymentRequestBrowserTestBase("/payment_request_basic_card_test.html") { + } void InvokePaymentRequestWithJs(const std::string& js) { ResetEventObserver(DialogEvent::DIALOG_OPENED);
diff --git a/chrome/browser/ui/views/payments/payment_method_view_controller_interactive_uitest.cc b/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc similarity index 93% rename from chrome/browser/ui/views/payments/payment_method_view_controller_interactive_uitest.cc rename to chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc index 580e056..9d1e111 100644 --- a/chrome/browser/ui/views/payments/payment_method_view_controller_interactive_uitest.cc +++ b/chrome/browser/ui/views/payments/payment_method_view_controller_browsertest.cc
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/payments/content/payment_request.h" @@ -11,11 +11,10 @@ namespace payments { -class PaymentMethodViewControllerTest - : public PaymentRequestInteractiveTestBase { +class PaymentMethodViewControllerTest : public PaymentRequestBrowserTestBase { protected: PaymentMethodViewControllerTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_no_shipping_test.html") {} private:
diff --git a/chrome/browser/ui/views/payments/payment_request_interactive_uitest.cc b/chrome/browser/ui/views/payments/payment_request_browsertest.cc similarity index 88% rename from chrome/browser/ui/views/payments/payment_request_interactive_uitest.cc rename to chrome/browser/ui/views/payments/payment_request_browsertest.cc index 1c707fe2..5cebdacf 100644 --- a/chrome/browser/ui/views/payments/payment_request_interactive_uitest.cc +++ b/chrome/browser/ui/views/payments/payment_request_browsertest.cc
@@ -7,8 +7,8 @@ #include "base/macros.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/browser_commands.h" +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h" #include "chrome/test/base/ui_test_utils.h" #include "components/payments/content/payment_request.h" #include "components/payments/content/payment_request_web_contents_manager.h" @@ -18,10 +18,10 @@ namespace payments { class PaymentRequestWebContentsManagerTest - : public PaymentRequestInteractiveTestBase { + : public PaymentRequestBrowserTestBase { protected: PaymentRequestWebContentsManagerTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_multiple_requests.html") {} private: @@ -35,10 +35,10 @@ EXPECT_EQ(5U, payment_requests.size()); } -class PaymentRequestNoShippingTest : public PaymentRequestInteractiveTestBase { +class PaymentRequestNoShippingTest : public PaymentRequestBrowserTestBase { protected: PaymentRequestNoShippingTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_no_shipping_test.html") {} private: @@ -93,10 +93,10 @@ WaitForObservedEvent(); } -class PaymentRequestAbortTest : public PaymentRequestInteractiveTestBase { +class PaymentRequestAbortTest : public PaymentRequestBrowserTestBase { protected: PaymentRequestAbortTest() - : PaymentRequestInteractiveTestBase("/payment_request_abort_test.html") {} + : PaymentRequestBrowserTestBase("/payment_request_abort_test.html") {} private: DISALLOW_COPY_AND_ASSIGN(PaymentRequestAbortTest);
diff --git a/chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.cc b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc similarity index 75% rename from chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.cc rename to chrome/browser/ui/views/payments/payment_request_browsertest_base.cc index 86fa7e5..a30b17a 100644 --- a/chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.cc +++ b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h" +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include <vector> @@ -19,7 +19,6 @@ #include "chrome/browser/ui/views/payments/validating_combobox.h" #include "chrome/browser/ui/views/payments/validating_textfield.h" #include "chrome/browser/ui/views/payments/view_stack.h" -#include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" #include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/credit_card.h" @@ -35,7 +34,10 @@ #include "services/service_manager/public/cpp/interface_registry.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/test/ui_controls.h" +#include "ui/events/base_event_utils.h" +#include "ui/events/event.h" #include "ui/gfx/animation/test_animation_delegate.h" +#include "ui/gfx/geometry/point.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/label.h" #include "ui/views/controls/styled_label.h" @@ -45,13 +47,12 @@ PersonalDataLoadedObserverMock::PersonalDataLoadedObserverMock() {} PersonalDataLoadedObserverMock::~PersonalDataLoadedObserverMock() {} -PaymentRequestInteractiveTestBase::PaymentRequestInteractiveTestBase( +PaymentRequestBrowserTestBase::PaymentRequestBrowserTestBase( const std::string& test_file_path) - : test_file_path_(test_file_path), - delegate_(nullptr) {} -PaymentRequestInteractiveTestBase::~PaymentRequestInteractiveTestBase() {} + : test_file_path_(test_file_path), delegate_(nullptr) {} +PaymentRequestBrowserTestBase::~PaymentRequestBrowserTestBase() {} -void PaymentRequestInteractiveTestBase::SetUpCommandLine( +void PaymentRequestBrowserTestBase::SetUpCommandLine( base::CommandLine* command_line) { InProcessBrowserTest::SetUpCommandLine(command_line); command_line->AppendSwitch(switches::kEnableExperimentalWebPlatformFeatures); @@ -59,7 +60,7 @@ features::kWebPayments.name); } -void PaymentRequestInteractiveTestBase::SetUpOnMainThread() { +void PaymentRequestBrowserTestBase::SetUpOnMainThread() { https_server_ = base::MakeUnique<net::EmbeddedTestServer>( net::EmbeddedTestServer::TYPE_HTTPS); ASSERT_TRUE(https_server_->InitializeAndListen()); @@ -76,48 +77,47 @@ service_manager::InterfaceRegistry* registry = web_contents->GetMainFrame()->GetInterfaceRegistry(); registry->RemoveInterface(payments::mojom::PaymentRequest::Name_); - registry->AddInterface(base::Bind( - &PaymentRequestInteractiveTestBase::CreatePaymentRequestForTest, - base::Unretained(this), web_contents)); + registry->AddInterface( + base::Bind(&PaymentRequestBrowserTestBase::CreatePaymentRequestForTest, + base::Unretained(this), web_contents)); } -void PaymentRequestInteractiveTestBase::OnDialogOpened() { +void PaymentRequestBrowserTestBase::OnDialogOpened() { if (event_observer_) event_observer_->Observe(DialogEvent::DIALOG_OPENED); } -void PaymentRequestInteractiveTestBase::OnOrderSummaryOpened() { +void PaymentRequestBrowserTestBase::OnOrderSummaryOpened() { if (event_observer_) event_observer_->Observe(DialogEvent::ORDER_SUMMARY_OPENED); } -void PaymentRequestInteractiveTestBase::OnPaymentMethodOpened() { +void PaymentRequestBrowserTestBase::OnPaymentMethodOpened() { if (event_observer_) event_observer_->Observe(DialogEvent::PAYMENT_METHOD_OPENED); } -void PaymentRequestInteractiveTestBase::OnCreditCardEditorOpened() { +void PaymentRequestBrowserTestBase::OnCreditCardEditorOpened() { if (event_observer_) event_observer_->Observe(DialogEvent::CREDIT_CARD_EDITOR_OPENED); } -void PaymentRequestInteractiveTestBase::OnBackNavigation() { +void PaymentRequestBrowserTestBase::OnBackNavigation() { if (event_observer_) event_observer_->Observe(DialogEvent::BACK_NAVIGATION); } -void PaymentRequestInteractiveTestBase::OnContactInfoOpened() { +void PaymentRequestBrowserTestBase::OnContactInfoOpened() { if (event_observer_) event_observer_->Observe(DialogEvent::CONTACT_INFO_OPENED); } -void PaymentRequestInteractiveTestBase::OnWidgetDestroyed( - views::Widget* widget) { +void PaymentRequestBrowserTestBase::OnWidgetDestroyed(views::Widget* widget) { if (event_observer_) event_observer_->Observe(DialogEvent::DIALOG_CLOSED); } -void PaymentRequestInteractiveTestBase::InvokePaymentRequestUI() { +void PaymentRequestBrowserTestBase::InvokePaymentRequestUI() { ResetEventObserver(DialogEvent::DIALOG_OPENED); content::WebContents* web_contents = GetActiveWebContents(); @@ -133,31 +133,30 @@ EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive()); } -void PaymentRequestInteractiveTestBase::OpenOrderSummaryScreen() { +void PaymentRequestBrowserTestBase::OpenOrderSummaryScreen() { ResetEventObserver(DialogEvent::ORDER_SUMMARY_OPENED); ClickOnDialogViewAndWait(DialogViewID::PAYMENT_SHEET_SUMMARY_SECTION); } -void PaymentRequestInteractiveTestBase::OpenPaymentMethodScreen() { +void PaymentRequestBrowserTestBase::OpenPaymentMethodScreen() { ResetEventObserver(DialogEvent::PAYMENT_METHOD_OPENED); ClickOnDialogViewAndWait(DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION); } -void PaymentRequestInteractiveTestBase::OpenCreditCardEditorScreen() { +void PaymentRequestBrowserTestBase::OpenCreditCardEditorScreen() { ResetEventObserver(DialogEvent::CREDIT_CARD_EDITOR_OPENED); ClickOnDialogViewAndWait(DialogViewID::PAYMENT_METHOD_ADD_CARD_BUTTON); } -content::WebContents* -PaymentRequestInteractiveTestBase::GetActiveWebContents() { +content::WebContents* PaymentRequestBrowserTestBase::GetActiveWebContents() { return browser()->tab_strip_model()->GetActiveWebContents(); } const std::vector<PaymentRequest*> -PaymentRequestInteractiveTestBase::GetPaymentRequests( +PaymentRequestBrowserTestBase::GetPaymentRequests( content::WebContents* web_contents) { PaymentRequestWebContentsManager* manager = PaymentRequestWebContentsManager::GetOrCreateForWebContents(web_contents); @@ -170,13 +169,12 @@ return payment_requests_ptrs; } -autofill::PersonalDataManager* -PaymentRequestInteractiveTestBase::GetDataManager() { +autofill::PersonalDataManager* PaymentRequestBrowserTestBase::GetDataManager() { return autofill::PersonalDataManagerFactory::GetForProfile( Profile::FromBrowserContext(GetActiveWebContents()->GetBrowserContext())); } -void PaymentRequestInteractiveTestBase::AddAutofillProfile( +void PaymentRequestBrowserTestBase::AddAutofillProfile( const autofill::AutofillProfile& profile) { autofill::PersonalDataManager* personal_data_manager = GetDataManager(); size_t profile_count = personal_data_manager->GetProfiles().size(); @@ -193,7 +191,7 @@ EXPECT_EQ(profile_count + 1, personal_data_manager->GetProfiles().size()); } -void PaymentRequestInteractiveTestBase::AddCreditCard( +void PaymentRequestBrowserTestBase::AddCreditCard( const autofill::CreditCard& card) { autofill::PersonalDataManager* personal_data_manager = GetDataManager(); size_t card_count = personal_data_manager->GetCreditCards().size(); @@ -210,7 +208,7 @@ EXPECT_EQ(card_count + 1, personal_data_manager->GetCreditCards().size()); } -void PaymentRequestInteractiveTestBase::CreatePaymentRequestForTest( +void PaymentRequestBrowserTestBase::CreatePaymentRequestForTest( content::WebContents* web_contents, mojo::InterfaceRequest<payments::mojom::PaymentRequest> request) { DCHECK(web_contents); @@ -223,7 +221,7 @@ std::move(request)); } -void PaymentRequestInteractiveTestBase::ClickOnDialogViewAndWait( +void PaymentRequestBrowserTestBase::ClickOnDialogViewAndWait( DialogViewID view_id) { views::View* view = delegate_->dialog_view()->GetViewByID(static_cast<int>(view_id)); @@ -231,21 +229,24 @@ ClickOnDialogViewAndWait(view); } -void PaymentRequestInteractiveTestBase::ClickOnDialogViewAndWait( +void PaymentRequestBrowserTestBase::ClickOnDialogViewAndWait( views::View* view) { DCHECK(view); - base::RunLoop run_loop; - ui_test_utils::MoveMouseToCenterAndPress( - view, ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, - run_loop.QuitClosure()); - run_loop.Run(); + ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), + ui::EventTimeForNow(), ui::EF_LEFT_MOUSE_BUTTON, + ui::EF_LEFT_MOUSE_BUTTON); + view->OnMousePressed(pressed); + ui::MouseEvent released_event = ui::MouseEvent( + ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON); + view->OnMouseReleased(released_event); WaitForAnimation(); WaitForObservedEvent(); } -void PaymentRequestInteractiveTestBase::SetEditorTextfieldValue( +void PaymentRequestBrowserTestBase::SetEditorTextfieldValue( const base::string16& value, autofill::ServerFieldType type) { ValidatingTextfield* textfield = static_cast<ValidatingTextfield*>( @@ -256,7 +257,7 @@ textfield->OnBlur(); } -void PaymentRequestInteractiveTestBase::SetComboboxValue( +void PaymentRequestBrowserTestBase::SetComboboxValue( const base::string16& value, autofill::ServerFieldType type) { ValidatingCombobox* combobox = static_cast<ValidatingCombobox*>( @@ -267,7 +268,7 @@ combobox->OnBlur(); } -bool PaymentRequestInteractiveTestBase::IsEditorTextfieldInvalid( +bool PaymentRequestBrowserTestBase::IsEditorTextfieldInvalid( autofill::ServerFieldType type) { ValidatingTextfield* textfield = static_cast<ValidatingTextfield*>( delegate_->dialog_view()->GetViewByID(static_cast<int>(type))); @@ -275,7 +276,7 @@ return textfield->invalid(); } -bool PaymentRequestInteractiveTestBase::IsEditorComboboxInvalid( +bool PaymentRequestBrowserTestBase::IsEditorComboboxInvalid( autofill::ServerFieldType type) { ValidatingCombobox* combobox = static_cast<ValidatingCombobox*>( delegate_->dialog_view()->GetViewByID(static_cast<int>(type))); @@ -283,7 +284,7 @@ return combobox->invalid(); } -bool PaymentRequestInteractiveTestBase::IsPayButtonEnabled() { +bool PaymentRequestBrowserTestBase::IsPayButtonEnabled() { views::Button* button = static_cast<views::Button*>(delegate_->dialog_view()->GetViewByID( static_cast<int>(DialogViewID::PAY_BUTTON))); @@ -291,7 +292,7 @@ return button->enabled(); } -void PaymentRequestInteractiveTestBase::WaitForAnimation() { +void PaymentRequestBrowserTestBase::WaitForAnimation() { ViewStack* view_stack = dialog_view()->view_stack_for_testing(); if (view_stack->slide_in_animator_->IsAnimating()) { view_stack->slide_in_animator_->SetAnimationDuration(1); @@ -308,14 +309,14 @@ } } -const base::string16& PaymentRequestInteractiveTestBase::GetStyledLabelText( +const base::string16& PaymentRequestBrowserTestBase::GetStyledLabelText( DialogViewID view_id) { views::View* view = dialog_view()->GetViewByID(static_cast<int>(view_id)); DCHECK(view); return static_cast<views::StyledLabel*>(view)->text(); } -const base::string16& PaymentRequestInteractiveTestBase::GetErrorLabelForType( +const base::string16& PaymentRequestBrowserTestBase::GetErrorLabelForType( autofill::ServerFieldType type) { views::View* view = dialog_view()->GetViewByID( static_cast<int>(DialogViewID::ERROR_LABEL_OFFSET) + type); @@ -323,13 +324,12 @@ return static_cast<views::Label*>(view)->text(); } -PaymentRequestInteractiveTestBase::DialogEventObserver::DialogEventObserver( - PaymentRequestInteractiveTestBase::DialogEvent event) +PaymentRequestBrowserTestBase::DialogEventObserver::DialogEventObserver( + PaymentRequestBrowserTestBase::DialogEvent event) : event_(event), seen_(false) {} -PaymentRequestInteractiveTestBase::DialogEventObserver::~DialogEventObserver() { -} +PaymentRequestBrowserTestBase::DialogEventObserver::~DialogEventObserver() {} -void PaymentRequestInteractiveTestBase::DialogEventObserver::Wait() { +void PaymentRequestBrowserTestBase::DialogEventObserver::Wait() { if (seen_) return; @@ -337,8 +337,8 @@ run_loop_.Run(); } -void PaymentRequestInteractiveTestBase::DialogEventObserver::Observe( - PaymentRequestInteractiveTestBase::DialogEvent event) { +void PaymentRequestBrowserTestBase::DialogEventObserver::Observe( + PaymentRequestBrowserTestBase::DialogEvent event) { if (seen_) return; @@ -348,11 +348,11 @@ run_loop_.Quit(); } -void PaymentRequestInteractiveTestBase::ResetEventObserver(DialogEvent event) { +void PaymentRequestBrowserTestBase::ResetEventObserver(DialogEvent event) { event_observer_ = base::MakeUnique<DialogEventObserver>(event); } -void PaymentRequestInteractiveTestBase::WaitForObservedEvent() { +void PaymentRequestBrowserTestBase::WaitForObservedEvent() { event_observer_->Wait(); }
diff --git a/chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h b/chrome/browser/ui/views/payments/payment_request_browsertest_base.h similarity index 92% rename from chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h rename to chrome/browser/ui/views/payments/payment_request_browsertest_base.h index a7b619a7..718e8b3 100644 --- a/chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h +++ b/chrome/browser/ui/views/payments/payment_request_browsertest_base.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_INTERACTIVE_UITEST_BASE_H_ -#define CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_INTERACTIVE_UITEST_BASE_H_ +#ifndef CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_BROWSERTEST_BASE_H_ +#define CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_BROWSERTEST_BASE_H_ #include <vector> @@ -58,15 +58,15 @@ // Base class for any interactive PaymentRequest test that will need to open // the UI and interact with it. -class PaymentRequestInteractiveTestBase +class PaymentRequestBrowserTestBase : public InProcessBrowserTest, public PaymentRequestDialogView::ObserverForTest, public views::WidgetObserver { protected: // Test will open a browser window to |test_file_path| (relative to // chrome/test/data/payments). - explicit PaymentRequestInteractiveTestBase(const std::string& test_file_path); - ~PaymentRequestInteractiveTestBase() override; + explicit PaymentRequestBrowserTestBase(const std::string& test_file_path); + ~PaymentRequestBrowserTestBase() override; void SetUpCommandLine(base::CommandLine* command_line) override; void SetUpOnMainThread() override; @@ -199,9 +199,9 @@ // Weak, owned by the PaymentRequest object. TestChromePaymentRequestDelegate* delegate_; - DISALLOW_COPY_AND_ASSIGN(PaymentRequestInteractiveTestBase); + DISALLOW_COPY_AND_ASSIGN(PaymentRequestBrowserTestBase); }; } // namespace payments -#endif // CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_INTERACTIVE_UITEST_BASE_H_ +#endif // CHROME_BROWSER_UI_VIEWS_PAYMENTS_PAYMENT_REQUEST_BROWSERTEST_BASE_H_
diff --git a/chrome/browser/ui/views/payments/payment_sheet_view_controller_interactive_uitest.cc b/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc similarity index 95% rename from chrome/browser/ui/views/payments/payment_sheet_view_controller_interactive_uitest.cc rename to chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc index 67f9276..d8ecdb9 100644 --- a/chrome/browser/ui/views/payments/payment_sheet_view_controller_interactive_uitest.cc +++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc
@@ -3,8 +3,8 @@ // found in the LICENSE file. #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "chrome/browser/ui/views/payments/payment_request_interactive_uitest_base.h" #include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/credit_card.h" @@ -16,10 +16,10 @@ // A simple PaymentRequest which simply requests 'visa' or 'mastercard' and // nothing else. class PaymentSheetViewControllerNoShippingTest - : public PaymentRequestInteractiveTestBase { + : public PaymentRequestBrowserTestBase { protected: PaymentSheetViewControllerNoShippingTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_no_shipping_test.html") {} private: @@ -70,10 +70,10 @@ // Accepts 'visa' cards and requests the full contact details. class PaymentSheetViewControllerContactDetailsTest - : public PaymentRequestInteractiveTestBase { + : public PaymentRequestBrowserTestBase { protected: PaymentSheetViewControllerContactDetailsTest() - : PaymentRequestInteractiveTestBase( + : PaymentRequestBrowserTestBase( "/payment_request_contact_details_and_free_shipping_test.html") {} private:
diff --git a/chrome/browser/ui/views/payments/view_stack.h b/chrome/browser/ui/views/payments/view_stack.h index 3699ef29..8b941041 100644 --- a/chrome/browser/ui/views/payments/view_stack.h +++ b/chrome/browser/ui/views/payments/view_stack.h
@@ -10,7 +10,7 @@ #include "ui/views/animation/bounds_animator_observer.h" namespace payments { -class PaymentRequestInteractiveTestBase; +class PaymentRequestBrowserTestBase; } // namespace payments // This view represents a stack of views that slide in over one another from @@ -47,7 +47,7 @@ FRIEND_TEST_ALL_PREFIXES(ViewStackTest, TestPushStateAddsViewToChildren); FRIEND_TEST_ALL_PREFIXES(ViewStackTest, TestLayoutUpdatesAnimations); friend class ViewStackTest; - friend class payments::PaymentRequestInteractiveTestBase; + friend class payments::PaymentRequestBrowserTestBase; // Returns the top state of the stack, used in tests. views::View* top() { return stack_.back().get(); }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 1007bbb..8872fe5 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -572,18 +572,6 @@ "base/interactive_test_utils_views.cc", ] } - if (is_win || is_linux) { - # TODO(crbug.com/679127): Investigate why these tests currently break - # on Mac, and enable them. - sources += [ - "../browser/ui/views/payments/payment_method_view_controller_interactive_uitest.cc", - "../browser/ui/views/payments/payment_request_credit_card_editor_interactive_uitest.cc", - "../browser/ui/views/payments/payment_request_interactive_uitest.cc", - "../browser/ui/views/payments/payment_request_interactive_uitest_base.cc", - "../browser/ui/views/payments/payment_request_interactive_uitest_base.h", - "../browser/ui/views/payments/payment_sheet_view_controller_interactive_uitest.cc", - ] - } if (is_linux) { if (!is_chromeos) { # Desktop linux. @@ -2147,6 +2135,12 @@ "../browser/ui/views/frame/browser_non_client_frame_view_browsertest_win.cc", "../browser/ui/views/frame/browser_window_property_manager_browsertest_win.cc", "../browser/ui/views/location_bar/content_setting_bubble_dialog_browsertest.cc", + "../browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc", + "../browser/ui/views/payments/payment_method_view_controller_browsertest.cc", + "../browser/ui/views/payments/payment_request_browsertest.cc", + "../browser/ui/views/payments/payment_request_browsertest_base.cc", + "../browser/ui/views/payments/payment_request_browsertest_base.h", + "../browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc", "../browser/ui/views/select_file_dialog_extension_browsertest.cc", "../browser/ui/views/sync/profile_signin_confirmation_dialog_views_browsertest.cc", ]
diff --git a/chrome/test/base/v8_unit_test.cc b/chrome/test/base/v8_unit_test.cc index 92c3ae58..2e7976a1 100644 --- a/chrome/test/base/v8_unit_test.cc +++ b/chrome/test/base/v8_unit_test.cc
@@ -6,6 +6,8 @@ #include "base/files/file_util.h" #include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "base/message_loop/message_loop.h" #include "base/path_service.h" #include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" @@ -192,6 +194,8 @@ console->Set(v8::String::NewFromUtf8(isolate, "error"), error_function); context_.Reset(isolate, v8::Context::New(isolate, NULL, global)); + + loop_ = base::MakeUnique<base::MessageLoop>(); } void V8UnitTest::SetGlobalStringVar(const std::string& var_name,
diff --git a/chrome/test/base/v8_unit_test.h b/chrome/test/base/v8_unit_test.h index 830da54..2184973 100644 --- a/chrome/test/base/v8_unit_test.h +++ b/chrome/test/base/v8_unit_test.h
@@ -13,6 +13,10 @@ #include "testing/gtest/include/gtest/gtest.h" #include "v8/include/v8.h" +namespace base { +class MessageLoop; +} // namespace base + // A superclass for unit tests that involve running JavaScript. This class // sets up V8 context and has methods that make it easy to execute scripts in // this context as well as call functions in the context. @@ -82,6 +86,8 @@ // User added libraries. std::vector<base::FilePath> user_libraries_; + + std::unique_ptr<base::MessageLoop> loop_; }; #endif // CHROME_TEST_BASE_V8_UNIT_TEST_H_
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc index a7628f1..b6def5f 100644 --- a/chromecast/browser/url_request_context_factory.cc +++ b/chromecast/browser/url_request_context_factory.cc
@@ -73,6 +73,11 @@ } }; +bool IgnoreCertificateErrors() { + base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); + return cmd_line->HasSwitch(switches::kIgnoreCertificateErrors); +} + } // namespace // Private classes to expose URLRequestContextGetter that call back to the @@ -336,7 +341,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::IO); InitializeSystemContextDependencies(); net::HttpNetworkSession::Params system_params; - PopulateNetworkSessionParams(false, &system_params); + PopulateNetworkSessionParams(IgnoreCertificateErrors(), &system_params); system_transaction_factory_.reset(new net::HttpNetworkLayer( new net::HttpNetworkSession(system_params))); system_job_factory_.reset(new net::URLRequestJobFactoryImpl()); @@ -392,13 +397,8 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::IO); InitializeSystemContextDependencies(); - bool ignore_certificate_errors = false; - base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); - if (cmd_line->HasSwitch(switches::kIgnoreCertificateErrors)) { - ignore_certificate_errors = true; - } net::HttpNetworkSession::Params network_session_params; - PopulateNetworkSessionParams(ignore_certificate_errors, + PopulateNetworkSessionParams(IgnoreCertificateErrors(), &network_session_params); InitializeMainContextDependencies( new net::HttpNetworkLayer(
diff --git a/chromecast/net/DEPS b/chromecast/net/DEPS index cd66c1f..90e91a5 100644 --- a/chromecast/net/DEPS +++ b/chromecast/net/DEPS
@@ -1,4 +1,4 @@ include_rules = [ - "+net", "+components/proxy_config", + "+net", ]
diff --git a/chromecast/net/connectivity_checker_impl.cc b/chromecast/net/connectivity_checker_impl.cc index 6c1b234..17e7c5b0 100644 --- a/chromecast/net/connectivity_checker_impl.cc +++ b/chromecast/net/connectivity_checker_impl.cc
@@ -15,9 +15,11 @@ #include "chromecast/chromecast_features.h" #include "chromecast/net/net_switches.h" #include "net/base/request_priority.h" +#include "net/http/http_network_session.h" #include "net/http/http_response_headers.h" #include "net/http/http_response_info.h" #include "net/http/http_status_code.h" +#include "net/http/http_transaction_factory.h" #include "net/socket/ssl_client_socket.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_builder.h" @@ -212,6 +214,15 @@ net::URLRequest* request, const net::SSLInfo& ssl_info, bool fatal) { + if (url_request_context_->http_transaction_factory() + ->GetSession() + ->params() + .ignore_certificate_errors) { + LOG(WARNING) << "OnSSLCertificateError: ignore cert_status=" + << ssl_info.cert_status; + request->ContinueDespiteLastError(); + return; + } DCHECK(task_runner_->BelongsToCurrentThread()); LOG(ERROR) << "OnSSLCertificateError: cert_status=" << ssl_info.cert_status; net::SSLClientSocket::ClearSessionCache();
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn index a6b7b52..22f3648 100644 --- a/components/cronet/android/BUILD.gn +++ b/components/cronet/android/BUILD.gn
@@ -1271,17 +1271,15 @@ action("cronet_combine_proguard_flags") { script = "//components/cronet/tools/generate_proguard_file.py" + sources = [ + "//base/android/proguard/chromium_code.flags", + "//components/cronet/android/cronet_impl_native_proguard.cfg", + ] outputs = [ "$target_gen_dir/cronet_impl_native_proguard.cfg", ] - args = [ - "--output-file", - rebase_path("$target_gen_dir/cronet_impl_native_proguard.cfg", - root_build_dir), - rebase_path("//components/cronet/android/cronet_impl_native_proguard.cfg", - root_build_dir), - rebase_path("//base/android/proguard/chromium_code.flags", root_build_dir), - ] + args = [ "--output-file" ] + rebase_path(outputs, root_build_dir) + + rebase_path(sources, root_build_dir) } copy("cronet_package_copy_native_lib") {
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc index 8bae820..aaf790f 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
@@ -19,12 +19,14 @@ #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h" #include "components/data_reduction_proxy/core/browser/data_use_group.h" #include "components/data_reduction_proxy/core/browser/data_use_group_provider.h" +#include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h" #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h" #include "components/data_reduction_proxy/core/common/data_reduction_proxy_util.h" #include "components/data_reduction_proxy/core/common/lofi_decider.h" #include "net/base/load_flags.h" #include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" +#include "net/nqe/effective_connection_type.h" #include "net/nqe/network_quality_estimator.h" #include "net/proxy/proxy_info.h" #include "net/proxy/proxy_server.h" @@ -194,6 +196,8 @@ ->MaybeSetAcceptTransformHeader( *request, data_reduction_proxy_config_->lofi_off(), headers); } + + MaybeAddChromeProxyECTHeader(headers, *request); } void DataReductionProxyNetworkDelegate::OnBeforeSendHeadersInternal( @@ -241,6 +245,7 @@ // Chrome-Proxy-Accept-Transform header. lofi_decider->RemoveAcceptTransformHeader(headers); } + RemoveChromeProxyECTHeader(headers); return; } @@ -498,4 +503,47 @@ header_value); } +void DataReductionProxyNetworkDelegate::MaybeAddChromeProxyECTHeader( + net::HttpRequestHeaders* request_headers, + const net::URLRequest& request) const { + DCHECK(thread_checker_.CalledOnValidThread()); + + // This method should be called only when the resolved proxy was a data + // saver proxy. + DCHECK(request.url().is_valid()); + DCHECK(!request.url().SchemeIsCryptographic()); + DCHECK(request.url().SchemeIsHTTPOrHTTPS()); + + if (!params::IsAddChromeProxyECTHeaderEnabled()) + return; + + DCHECK(!request_headers->HasHeader(chrome_proxy_ect_header())); + + if (!request.context()->network_quality_estimator()) + return; + + net::EffectiveConnectionType ect = request.context() + ->network_quality_estimator() + ->GetEffectiveConnectionType(); + if (ect <= net::EFFECTIVE_CONNECTION_TYPE_OFFLINE) + return; + + static_assert(net::EFFECTIVE_CONNECTION_TYPE_OFFLINE + 1 == + net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, + "ECT enum value is not handled."); + static_assert(net::EFFECTIVE_CONNECTION_TYPE_4G + 1 == + net::EFFECTIVE_CONNECTION_TYPE_LAST, + "ECT enum value is not handled."); + + request_headers->SetHeader(chrome_proxy_ect_header(), + net::GetNameForEffectiveConnectionType(ect)); +} + +void DataReductionProxyNetworkDelegate::RemoveChromeProxyECTHeader( + net::HttpRequestHeaders* request_headers) const { + DCHECK(thread_checker_.CalledOnValidThread()); + + request_headers->RemoveHeader(chrome_proxy_ect_header()); +} + } // namespace data_reduction_proxy
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h index f36cea45..f32107b 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h
@@ -157,6 +157,17 @@ net::HttpRequestHeaders* request_headers, const net::URLRequest& request) const; + // May add chrome-proxy-ect header to |request_headers| if adding of + // chrome-proxy-ect is enabled via field trial and a valid estimate of + // network quality is available. This method should be called only when the + // resolved proxy for |request| is a data saver proxy. + void MaybeAddChromeProxyECTHeader(net::HttpRequestHeaders* request_headers, + const net::URLRequest& request) const; + + // Removes the chrome-proxy-ect header from |request_headers|. + void RemoveChromeProxyECTHeader( + net::HttpRequestHeaders* request_headers) const; + // All raw Data Reduction Proxy pointers must outlive |this|. DataReductionProxyConfig* data_reduction_proxy_config_;
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc index 028c43e..0153127 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate_unittest.cc
@@ -180,7 +180,13 @@ class DataReductionProxyNetworkDelegateTest : public testing::Test { public: DataReductionProxyNetworkDelegateTest() - : context_(true), context_storage_(&context_) {} + : context_(true), + context_storage_(&context_), + ssl_socket_data_provider_(net::ASYNC, net::OK) { + ssl_socket_data_provider_.next_proto = net::kProtoHTTP11; + ssl_socket_data_provider_.cert = net::ImportCertFromFile( + net::GetTestCertsDirectory(), "unittest.selfsigned.der"); + } void Init(bool use_secure_proxy, bool enable_brotli_globally) { net::ProxyServer proxy_server = @@ -213,11 +219,85 @@ test_context_->io_data()->set_lofi_ui_service(std::move(lofi_ui_service)); context_.set_enable_brotli(enable_brotli_globally); + context_.set_network_quality_estimator(&test_network_quality_estimator_); context_.Init(); test_context_->EnableDataReductionProxyWithSecureProxyCheckSuccess(); } + // Build the sockets by adding appropriate mock data for + // |effective_connection_types.size()| number of requests. Data for + // chrome-Proxy-ect header is added to the mock data if |expect_ect_header| + // is true. |reads_list|, |mock_writes| and |writes_list| should be empty, and + // are owned by the caller. + void BuildSocket(const std::string& response_headers, + const std::string& response_body, + bool expect_ect_header, + const std::vector<net::EffectiveConnectionType>& + effective_connection_types, + std::vector<net::MockRead>* reads_list, + std::vector<std::string>* mock_writes, + std::vector<net::MockWrite>* writes_list) { + EXPECT_LT(0u, effective_connection_types.size()); + EXPECT_TRUE(reads_list->empty()); + EXPECT_TRUE(mock_writes->empty()); + EXPECT_TRUE(writes_list->empty()); + + for (size_t i = 0; i < effective_connection_types.size(); ++i) { + reads_list->push_back(net::MockRead(response_headers.c_str())); + reads_list->push_back(net::MockRead(response_body.c_str())); + } + reads_list->push_back(net::MockRead(net::SYNCHRONOUS, net::OK)); + + std::string prefix = std::string("GET ") + .append(kTestURL) + .append(" HTTP/1.1\r\n") + .append("Host: ") + .append(GURL(kTestURL).host()) + .append( + "\r\n" + "Proxy-Connection: keep-alive\r\n" + "User-Agent:\r\n" + "Accept-Encoding: gzip, deflate\r\n" + "Accept-Language: en-us,fr\r\n"); + + if (io_data()->test_request_options()->GetHeaderValueForTesting().empty()) { + // Force regeneration of Chrome-Proxy header. + io_data()->test_request_options()->SetSecureSession("123"); + } + + EXPECT_FALSE( + io_data()->test_request_options()->GetHeaderValueForTesting().empty()); + + std::string suffix = + std::string("Chrome-Proxy: ") + + io_data()->test_request_options()->GetHeaderValueForTesting() + + std::string("\r\n\r\n"); + + mock_socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider_); + + for (net::EffectiveConnectionType effective_connection_type : + effective_connection_types) { + std::string ect_header; + if (expect_ect_header) { + ect_header = "chrome-proxy-ect: " + + std::string(net::GetNameForEffectiveConnectionType( + effective_connection_type)) + + "\r\n"; + } + + std::string mock_write = prefix + ect_header + suffix; + mock_writes->push_back(mock_write); + writes_list->push_back(net::MockWrite(mock_writes->back().c_str())); + } + + EXPECT_FALSE(socket_); + socket_ = base::MakeUnique<net::StaticSocketDataProvider>( + reads_list->data(), reads_list->size(), writes_list->data(), + writes_list->size()); + mock_socket_factory_.AddSocketDataProvider(socket_.get()); + } + static void VerifyHeaders(bool expected_data_reduction_proxy_used, bool expected_lofi_used, const net::HttpRequestHeaders& headers) { @@ -285,16 +365,12 @@ bool expect_cached, bool expect_brotli) { GURL url(kTestURL); - net::SSLSocketDataProvider ssl_socket_data_provider(net::ASYNC, net::OK); int response_body_size = 140; const std::string response_body( base::checked_cast<size_t>(response_body_size), ' '); - ssl_socket_data_provider.next_proto = net::kProtoHTTP11; - ssl_socket_data_provider.cert = net::ImportCertFromFile( - net::GetTestCertsDirectory(), "unittest.selfsigned.der"); - mock_socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); + mock_socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider_); net::MockRead reads[] = {net::MockRead(response_headers.c_str()), net::MockRead(response_body.c_str()), @@ -386,6 +462,53 @@ } } + // Fetches a request while the effective connection type is set to + // |effective_connection_type|. Verifies that the request headers include the + // chrome-proxy-ect header only if |expect_ect_header| is true. The response + // must be served from the cache if |expect_cached| is true. + void FetchURLRequestAndVerifyECTHeader( + net::EffectiveConnectionType effective_connection_type, + bool expect_ect_header, + bool expect_cached) { + EXPECT_EQ(expect_ect_header, params::IsAddChromeProxyECTHeaderEnabled()); + + test_network_quality_estimator()->set_effective_connection_type( + effective_connection_type); + + net::TestDelegate delegate; + std::unique_ptr<net::URLRequest> request = + context_.CreateRequest(GURL(kTestURL), net::IDLE, &delegate); + + request->Start(); + base::RunLoop().RunUntilIdle(); + + EXPECT_EQ(140, request->received_response_content_length()); + EXPECT_EQ(expect_cached, request->was_cached()); + EXPECT_EQ(expect_cached, request->GetTotalSentBytes() == 0); + EXPECT_EQ(expect_cached, request->GetTotalReceivedBytes() == 0); + + net::HttpRequestHeaders sent_request_headers; + EXPECT_NE(expect_cached, + request->GetFullRequestHeaders(&sent_request_headers)); + + if (expect_cached) { + // Request headers are missing. Return since there is nothing left to + // check. + return; + } + + // Verify that chrome-proxy-ect header is present in the request headers + // only if |expect_ect_header| is true. + std::string ect_value; + EXPECT_EQ(expect_ect_header, sent_request_headers.GetHeader( + chrome_proxy_ect_header(), &ect_value)); + + if (!expect_ect_header) + return; + EXPECT_EQ(net::GetNameForEffectiveConnectionType(effective_connection_type), + ect_value); + } + void DelegateStageDone(int result) {} void NotifyNetworkDelegate(net::URLRequest* request, @@ -430,6 +553,10 @@ TestLoFiDecider* lofi_decider() const { return lofi_decider_; } + net::TestNetworkQualityEstimator* test_network_quality_estimator() { + return &test_network_quality_estimator_; + } + private: base::MessageLoopForIO message_loop_; net::MockClientSocketFactory mock_socket_factory_; @@ -440,6 +567,11 @@ TestLoFiDecider* lofi_decider_; TestLoFiUIService* lofi_ui_service_; std::unique_ptr<DataReductionProxyTestContext> test_context_; + net::TestNetworkQualityEstimator test_network_quality_estimator_; + + net::SSLSocketDataProvider ssl_socket_data_provider_; + + std::unique_ptr<net::StaticSocketDataProvider> socket_; }; TEST_F(DataReductionProxyNetworkDelegateTest, AuthenticationTest) { @@ -655,10 +787,8 @@ net::HttpRequestHeaders headers; net::ProxyRetryInfoMap proxy_retry_info; - net::TestNetworkQualityEstimator test_network_quality_estimator; - test_network_quality_estimator.set_effective_connection_type( + test_network_quality_estimator()->set_effective_connection_type( net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); - context()->set_network_quality_estimator(&test_network_quality_estimator); std::unique_ptr<net::URLRequest> request = context()->CreateRequest( GURL(kTestURL), net::RequestPriority::IDLE, nullptr); @@ -744,10 +874,8 @@ net::HttpRequestHeaders headers; net::ProxyRetryInfoMap proxy_retry_info; - net::TestNetworkQualityEstimator test_network_quality_estimator; - test_network_quality_estimator.set_effective_connection_type( + test_network_quality_estimator()->set_effective_connection_type( net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); - context()->set_network_quality_estimator(&test_network_quality_estimator); std::unique_ptr<net::URLRequest> request = context()->CreateRequest( GURL(kTestURL), net::RequestPriority::IDLE, nullptr); @@ -1075,6 +1203,131 @@ FetchURLRequestAndVerifyBrotli(nullptr, response_headers, true, true); } +// Test that effective connection type is correctly added to the request +// headers when it is enabled using field trial. The server is varying on the +// effective connection type (ECT). +TEST_F(DataReductionProxyNetworkDelegateTest, ECTHeaderEnabledWithVary) { + Init(true /* use_secure_proxy */, false /* enable_brotli_globally */); + + base::FieldTrialList field_trial_list(nullptr); + base::FieldTrialList::CreateFieldTrial( + "DataReductionProxyAddChromeProxyECTHeader", "Enabled"); + + std::string response_headers = + "HTTP/1.1 200 OK\r\n" + "Content-Length: 140\r\n" + "Via: 1.1 Chrome-Compression-Proxy\r\n" + "Cache-Control: max-age=1200\r\n" + "Vary: chrome-proxy-ect\r\n" + "x-original-content-length: 200\r\n\r\n"; + + int response_body_size = 140; + std::string response_body(base::checked_cast<size_t>(response_body_size), + ' '); + + std::vector<net::MockRead> reads_list; + std::vector<std::string> mock_writes; + std::vector<net::MockWrite> writes_list; + + std::vector<net::EffectiveConnectionType> effective_connection_types; + effective_connection_types.push_back(net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G); + effective_connection_types.push_back(net::EFFECTIVE_CONNECTION_TYPE_2G); + + BuildSocket(response_headers, response_body, true, effective_connection_types, + &reads_list, &mock_writes, &writes_list); + + // Add 2 socket providers since 2 requests in this test are fetched from the + // network. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[0], true, false); + + // When the ECT is set to the same value, fetching the same resource should + // result in a cache hit. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[0], true, true); + + // When the ECT is set to a different value, the response should not be + // served from the cache. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[1], true, false); +} + +// Test that effective connection type is correctly added to the request +// headers when it is enabled using field trial. The server is not varying on +// the effective connection type (ECT). +TEST_F(DataReductionProxyNetworkDelegateTest, ECTHeaderEnabledWithoutVary) { + Init(true /* use_secure_proxy */, false /* enable_brotli_globally */); + + base::FieldTrialList field_trial_list(nullptr); + base::FieldTrialList::CreateFieldTrial( + "DataReductionProxyAddChromeProxyECTHeader", "Enabled"); + + std::string response_headers = + "HTTP/1.1 200 OK\r\n" + "Content-Length: 140\r\n" + "Via: 1.1 Chrome-Compression-Proxy\r\n" + "Cache-Control: max-age=1200\r\n" + "x-original-content-length: 200\r\n\r\n"; + + int response_body_size = 140; + std::string response_body(base::checked_cast<size_t>(response_body_size), + ' '); + + std::vector<net::MockRead> reads_list; + std::vector<std::string> mock_writes; + std::vector<net::MockWrite> writes_list; + + std::vector<net::EffectiveConnectionType> effective_connection_types; + effective_connection_types.push_back(net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G); + effective_connection_types.push_back(net::EFFECTIVE_CONNECTION_TYPE_2G); + + BuildSocket(response_headers, response_body, true, effective_connection_types, + &reads_list, &mock_writes, &writes_list); + + // Add 1 socket provider since 1 request in this test is fetched from the + // network. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[0], true, false); + + // When the ECT is set to the same value, fetching the same resource should + // result in a cache hit. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[0], true, true); + + // When the ECT is set to a different value, the response should still be + // served from the cache. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[1], true, true); +} + +// Test that effective connection type is not added to the request headers when +// the field trial is not enabled. +TEST_F(DataReductionProxyNetworkDelegateTest, ECTHeaderNotEnabled) { + Init(true /* use_secure_proxy */, false /* enable_brotli_globally */); + + std::string response_headers = + "HTTP/1.1 200 OK\r\n" + "Content-Length: 140\r\n" + "Via: 1.1 Chrome-Compression-Proxy\r\n" + "Cache-Control: max-age=1200\r\n" + "Vary: chrome-proxy-ect\r\n" + "x-original-content-length: 200\r\n\r\n"; + + int response_body_size = 140; + std::string response_body(base::checked_cast<size_t>(response_body_size), + ' '); + + std::vector<net::MockRead> reads_list; + std::vector<std::string> mock_writes; + std::vector<net::MockWrite> writes_list; + + std::vector<net::EffectiveConnectionType> effective_connection_types; + effective_connection_types.push_back(net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G); + + BuildSocket(response_headers, response_body, false, + effective_connection_types, &reads_list, &mock_writes, + &writes_list); + + // Add 1 socket provider since 1 request in this test is fetched from the + // network. + FetchURLRequestAndVerifyECTHeader(effective_connection_types[0], false, + false); +} + } // namespace } // namespace data_reduction_proxy
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.cc b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.cc index 375416a0..a8dca30 100644 --- a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.cc +++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.cc
@@ -27,6 +27,7 @@ namespace { const char kChromeProxyHeader[] = "chrome-proxy"; +const char kChromeProxyECTHeader[] = "chrome-proxy-ect"; const char kChromeProxyAcceptTransformHeader[] = "chrome-proxy-accept-transform"; const char kChromeProxyContentTransformHeader[] = @@ -113,6 +114,10 @@ return kChromeProxyHeader; } +const char* chrome_proxy_ect_header() { + return kChromeProxyECTHeader; +} + const char* chrome_proxy_accept_transform_header() { return kChromeProxyAcceptTransformHeader; }
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h index e86cb5a..3e613d8 100644 --- a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h +++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h
@@ -67,6 +67,10 @@ // Gets the header used for data reduction proxy requests and responses. const char* chrome_proxy_header(); +// Gets the chrome-proxy-ect request header that includes the effective +// connection type. +const char* chrome_proxy_ect_header(); + // Gets the ChromeProxyAcceptTransform header name. const char* chrome_proxy_accept_transform_header();
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_params.cc b/components/data_reduction_proxy/core/common/data_reduction_proxy_params.cc index ac08fb10..a1069e3c 100644 --- a/components/data_reduction_proxy/core/common/data_reduction_proxy_params.cc +++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_params.cc
@@ -260,6 +260,12 @@ kDisabled, base::CompareCase::SENSITIVE); } +bool IsAddChromeProxyECTHeaderEnabled() { + return base::StartsWith(base::FieldTrialList::FindFullName( + "DataReductionProxyAddChromeProxyECTHeader"), + kEnabled, base::CompareCase::SENSITIVE); +} + bool IsConfigClientEnabled() { // Config client is enabled by default. It can be disabled only if Chromium // belongs to a field trial group whose name starts with "Disabled".
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_params.h b/components/data_reduction_proxy/core/common/data_reduction_proxy_params.h index 02b3d9c..401f78e7 100644 --- a/components/data_reduction_proxy/core/common/data_reduction_proxy_params.h +++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_params.h
@@ -130,6 +130,10 @@ // Returns true if Brotli should be added to the accept-encoding header. bool IsBrotliAcceptEncodingEnabled(); +// Returns true if the effective connection type should be added to the data +// saver requests using chrome-proxy-ect header. +bool IsAddChromeProxyECTHeaderEnabled(); + // Returns true if the Data Reduction Proxy config client should be used. bool IsConfigClientEnabled();
diff --git a/components/payments/content/payment_request_web_contents_manager.h b/components/payments/content/payment_request_web_contents_manager.h index 5232314..2c94216 100644 --- a/components/payments/content/payment_request_web_contents_manager.h +++ b/components/payments/content/payment_request_web_contents_manager.h
@@ -52,7 +52,7 @@ private: explicit PaymentRequestWebContentsManager(content::WebContents* web_contents); friend class content::WebContentsUserData<PaymentRequestWebContentsManager>; - friend class PaymentRequestInteractiveTestBase; + friend class PaymentRequestBrowserTestBase; // Owns all the PaymentRequest for this WebContents. Since the // PaymentRequestWebContentsManager's lifetime is tied to the WebContents,
diff --git a/content/browser/loader/DEPS b/content/browser/loader/DEPS index ec18e1f..b49f115b 100644 --- a/content/browser/loader/DEPS +++ b/content/browser/loader/DEPS
@@ -203,9 +203,7 @@ "+content/browser/streams/stream_context.h", "+content/browser/streams/stream_registry.h", "+content/common/content_export.h", - "+content/common/navigation_params.h", "+content/common/net/url_request_service_worker_data.h", - "+content/common/site_isolation_policy.h", "+content/public/browser/browser_thread.h", "+content/public/browser/navigation_ui_data.h", "+content/public/browser/plugin_service.h",
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc index 3e200a2..081d917 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.cc +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -74,13 +74,11 @@ #include "content/browser/streams/stream.h" #include "content/browser/streams/stream_context.h" #include "content/browser/streams/stream_registry.h" -#include "content/common/navigation_params.h" #include "content/common/net/url_request_service_worker_data.h" #include "content/common/resource_messages.h" #include "content/common/resource_request.h" #include "content/common/resource_request_body_impl.h" #include "content/common/resource_request_completion_status.h" -#include "content/common/site_isolation_policy.h" #include "content/common/view_messages.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/global_request_id.h"
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index b67a5f3..4bbf13f 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -3419,7 +3419,7 @@ BOOL returnTypeIsString = [returnType isEqual:NSStringPboardType]; const content::TextInputManager::TextSelection* selection = renderWidgetHostView_->GetTextSelection(); - BOOL hasText = !selection || selection->selected_text().empty(); + BOOL hasText = selection && !selection->selected_text().empty(); BOOL takesText = renderWidgetHostView_->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE;
diff --git a/content/child/web_url_loader_impl.cc b/content/child/web_url_loader_impl.cc index eb948a9..e57df2a 100644 --- a/content/child/web_url_loader_impl.cc +++ b/content/child/web_url_loader_impl.cc
@@ -928,9 +928,12 @@ // For compatibility reasons on Android we need to expose top-level data:// // to the browser. In tests resource_dispatcher_ can be null, and test pages // need to be loaded locally. + // For PlzNavigate, navigation requests were already checked in the browser. if (resource_dispatcher_ && - request_.getFrameType() == WebURLRequest::FrameTypeTopLevel) - return false; + request_.getFrameType() == WebURLRequest::FrameTypeTopLevel) { + if (!IsBrowserSideNavigationEnabled()) + return false; + } #endif if (request_.getFrameType() != WebURLRequest::FrameTypeTopLevel &&
diff --git a/content/common/origin_trials/trial_token.cc b/content/common/origin_trials/trial_token.cc index ab9debf..ecb8608 100644 --- a/content/common/origin_trials/trial_token.cc +++ b/content/common/origin_trials/trial_token.cc
@@ -50,13 +50,19 @@ blink::WebOriginTrialTokenStatus* out_status) { DCHECK(out_status); std::string token_payload; - *out_status = Extract(token_text, public_key, &token_payload); + std::string token_signature; + *out_status = + Extract(token_text, public_key, &token_payload, &token_signature); if (*out_status != blink::WebOriginTrialTokenStatus::Success) { return nullptr; } std::unique_ptr<TrialToken> token = Parse(token_payload); - *out_status = token ? blink::WebOriginTrialTokenStatus::Success - : blink::WebOriginTrialTokenStatus::Malformed; + if (token) { + token->signature_ = token_signature; + *out_status = blink::WebOriginTrialTokenStatus::Success; + } else { + *out_status = blink::WebOriginTrialTokenStatus::Malformed; + } return token; } @@ -78,7 +84,8 @@ blink::WebOriginTrialTokenStatus TrialToken::Extract( const std::string& token_text, base::StringPiece public_key, - std::string* out_token_payload) { + std::string* out_token_payload, + std::string* out_token_signature) { if (token_text.empty()) { return blink::WebOriginTrialTokenStatus::Malformed; } @@ -129,8 +136,9 @@ return blink::WebOriginTrialTokenStatus::InvalidSignature; } - // Return just the payload, as a new string. + // Return the payload and signature, as new strings. *out_token_payload = token_contents.substr(kPayloadOffset, payload_length); + *out_token_signature = signature.as_string(); return blink::WebOriginTrialTokenStatus::Success; }
diff --git a/content/common/origin_trials/trial_token.h b/content/common/origin_trials/trial_token.h index 943275639..31daae3 100644 --- a/content/common/origin_trials/trial_token.h +++ b/content/common/origin_trials/trial_token.h
@@ -60,6 +60,7 @@ bool match_subdomains() const { return match_subdomains_; } std::string feature_name() { return feature_name_; } base::Time expiry_time() { return expiry_time_; } + std::string signature() { return signature_; } protected: // Tests can access the Parse method directly to validate it, and so are @@ -69,14 +70,16 @@ friend class TrialTokenTest; friend int ::LLVMFuzzerTestOneInput(const uint8_t*, size_t); - // If the string represents a properly signed and well-formed token, the token - // payload is returned in the |out_token_payload| parameter and success is - // returned. Otherwise,the return code indicates what was wrong with the - // string, and |out_token_payload| is unchanged. + // If the string represents a properly signed and well-formed token, success + // is returned, with the token payload and signature returned in the + // |out_token_payload| and |out_token_signature| parameters, respectively. + // Otherwise,the return code indicates what was wrong with the string, and + // |out_token_payload| and |out_token_signature| are unchanged. static blink::WebOriginTrialTokenStatus Extract( const std::string& token_text, base::StringPiece public_key, - std::string* out_token_payload); + std::string* out_token_payload, + std::string* out_token_signature); // Returns a token object if the string represents a well-formed JSON token // payload, or nullptr otherwise. @@ -107,6 +110,9 @@ // The time until which this token should be considered valid. base::Time expiry_time_; + + // The signature identifying the fully signed contents of the token. + std::string signature_; }; } // namespace content
diff --git a/content/common/origin_trials/trial_token_unittest.cc b/content/common/origin_trials/trial_token_unittest.cc index b5d396c..bffb88d 100644 --- a/content/common/origin_trials/trial_token_unittest.cc +++ b/content/common/origin_trials/trial_token_unittest.cc
@@ -64,6 +64,13 @@ "7FO5L22sNvkZZnacLvmfNwsAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" "IjogMTQ1ODc2NjI3N30="; +const uint8_t kSampleTokenSignature[] = { + 0x9f, 0x90, 0xfd, 0x09, 0xb4, 0x10, 0xb6, 0x9d, 0x66, 0xa9, 0x7e, + 0x76, 0x51, 0x06, 0x4b, 0x09, 0xc0, 0x56, 0xc1, 0x59, 0x2a, 0x00, + 0x84, 0xb5, 0x46, 0x60, 0xf2, 0x27, 0x50, 0x0b, 0x7b, 0x9e, 0x92, + 0x42, 0x1e, 0x49, 0x92, 0x18, 0xd6, 0xd7, 0xed, 0xa1, 0x87, 0x6b, + 0xc2, 0x1a, 0xa3, 0xec, 0x53, 0xb9, 0x2f, 0x6d, 0xac, 0x36, 0xf9, + 0x19, 0x66, 0x76, 0x9c, 0x2e, 0xf9, 0x9f, 0x37, 0x0b}; // This is a good subdomain trial token, signed with the above test private key. // Generate this token with the command (in tools/origin_trials): @@ -74,6 +81,13 @@ "FjpbmQG+VCPk1NrldVXZng4AAABoeyJvcmlnaW4iOiAiaHR0cHM6Ly9leGFtcGxl" "LmNvbTo0NDMiLCAiaXNTdWJkb21haW4iOiB0cnVlLCAiZmVhdHVyZSI6ICJGcm9i" "dWxhdGUiLCAiZXhwaXJ5IjogMTQ1ODc2NjI3N30="; +const uint8_t kSampleSubdomainTokenSignature[] = { + 0xeb, 0xbe, 0x8f, 0xd9, 0xd7, 0x01, 0x0a, 0x32, 0xe7, 0xeb, 0x74, + 0xd0, 0xc8, 0x96, 0x6a, 0x46, 0x70, 0x14, 0x4c, 0x5c, 0x74, 0xd0, + 0xbc, 0x10, 0xd9, 0x11, 0x74, 0xad, 0x60, 0x2f, 0x83, 0x8c, 0x14, + 0x74, 0xb4, 0x01, 0xb6, 0x42, 0xb1, 0xcb, 0x25, 0x0d, 0x37, 0x0f, + 0xd5, 0xf8, 0xcd, 0x16, 0x3a, 0x5b, 0x99, 0x01, 0xbe, 0x54, 0x23, + 0xe4, 0xd4, 0xda, 0xe5, 0x75, 0x55, 0xd9, 0x9e, 0x0e}; // This is a good trial token, explicitly not a subdomain, signed with the above // test private key. Generate this token with the command: @@ -84,6 +98,13 @@ "lvH52Winvy39tHbsU2gJJQYAAABveyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" "eGFtcGxlLmNvbTo0NDMiLCAiaXNTdWJkb21haW4iOiBmYWxzZSwgImZlYXR1cmUi" "OiAiRnJvYnVsYXRlIiwgImV4cGlyeSI6IDE0NTg3NjYyNzd9"; +const uint8_t kSampleNonSubdomainTokenSignature[] = { + 0xb7, 0x83, 0xf7, 0xbf, 0x43, 0xee, 0xd3, 0xb4, 0x96, 0xe4, 0x99, + 0x4e, 0xbd, 0x7e, 0xff, 0xe2, 0x7a, 0x13, 0x44, 0x92, 0x8f, 0xf1, + 0x84, 0x53, 0x22, 0xca, 0xe3, 0x5a, 0x35, 0x85, 0x71, 0x73, 0x5f, + 0x0d, 0x51, 0xed, 0x9d, 0x61, 0x08, 0x31, 0xec, 0xd2, 0x05, 0xd6, + 0x55, 0x2b, 0xb5, 0x96, 0xf1, 0xf9, 0xd9, 0x68, 0xa7, 0xbf, 0x2d, + 0xfd, 0xb4, 0x76, 0xec, 0x53, 0x68, 0x09, 0x25, 0x06}; const char* kExpectedFeatureName = "Frobulate"; const char* kExpectedOrigin = "https://valid.example.com"; @@ -198,6 +219,15 @@ expected_expiry_(base::Time::FromDoubleT(kExpectedExpiry)), valid_timestamp_(base::Time::FromDoubleT(kValidTimestamp)), invalid_timestamp_(base::Time::FromDoubleT(kInvalidTimestamp)), + expected_signature_( + std::string(reinterpret_cast<const char*>(kSampleTokenSignature), + arraysize(kSampleTokenSignature))), + expected_subdomain_signature_(std::string( + reinterpret_cast<const char*>(kSampleSubdomainTokenSignature), + arraysize(kSampleSubdomainTokenSignature))), + expected_nonsubdomain_signature_(std::string( + reinterpret_cast<const char*>(kSampleNonSubdomainTokenSignature), + arraysize(kSampleNonSubdomainTokenSignature))), correct_public_key_( base::StringPiece(reinterpret_cast<const char*>(kTestPublicKey), arraysize(kTestPublicKey))), @@ -208,15 +238,18 @@ protected: blink::WebOriginTrialTokenStatus Extract(const std::string& token_text, base::StringPiece public_key, - std::string* token_payload) { - return TrialToken::Extract(token_text, public_key, token_payload); + std::string* token_payload, + std::string* token_signature) { + return TrialToken::Extract(token_text, public_key, token_payload, + token_signature); } blink::WebOriginTrialTokenStatus ExtractIgnorePayload( const std::string& token_text, base::StringPiece public_key) { std::string token_payload; - return Extract(token_text, public_key, &token_payload); + std::string token_signature; + return Extract(token_text, public_key, &token_payload, &token_signature); } std::unique_ptr<TrialToken> Parse(const std::string& token_payload) { @@ -251,6 +284,10 @@ const base::Time valid_timestamp_; const base::Time invalid_timestamp_; + std::string expected_signature_; + std::string expected_subdomain_signature_; + std::string expected_nonsubdomain_signature_; + private: base::StringPiece correct_public_key_; base::StringPiece incorrect_public_key_; @@ -264,26 +301,34 @@ // token. TEST_F(TrialTokenTest, ValidateValidSignature) { std::string token_payload; - blink::WebOriginTrialTokenStatus status = - Extract(kSampleToken, correct_public_key(), &token_payload); + std::string token_signature; + blink::WebOriginTrialTokenStatus status = Extract( + kSampleToken, correct_public_key(), &token_payload, &token_signature); ASSERT_EQ(blink::WebOriginTrialTokenStatus::Success, status); EXPECT_STREQ(kSampleTokenJSON, token_payload.c_str()); + EXPECT_EQ(expected_signature_, token_signature); } TEST_F(TrialTokenTest, ValidateSubdomainValidSignature) { std::string token_payload; + std::string token_signature; blink::WebOriginTrialTokenStatus status = - Extract(kSampleSubdomainToken, correct_public_key(), &token_payload); + Extract(kSampleSubdomainToken, correct_public_key(), &token_payload, + &token_signature); ASSERT_EQ(blink::WebOriginTrialTokenStatus::Success, status); EXPECT_STREQ(kSampleSubdomainTokenJSON, token_payload.c_str()); + EXPECT_EQ(expected_subdomain_signature_, token_signature); } TEST_F(TrialTokenTest, ValidateNonSubdomainValidSignature) { std::string token_payload; + std::string token_signature; blink::WebOriginTrialTokenStatus status = - Extract(kSampleNonSubdomainToken, correct_public_key(), &token_payload); + Extract(kSampleNonSubdomainToken, correct_public_key(), &token_payload, + &token_signature); ASSERT_EQ(blink::WebOriginTrialTokenStatus::Success, status); EXPECT_STREQ(kSampleNonSubdomainTokenJSON, token_payload.c_str()); + EXPECT_EQ(expected_nonsubdomain_signature_, token_signature); } TEST_F(TrialTokenTest, ValidateInvalidSignature) { @@ -430,13 +475,15 @@ token->IsValid(expected_origin_, invalid_timestamp_)); } -// Test overall extraction, to ensure output status matches returned token +// Test overall extraction, to ensure output status matches returned token, and +// signature is provided. TEST_F(TrialTokenTest, ExtractValidToken) { blink::WebOriginTrialTokenStatus status; std::unique_ptr<TrialToken> token = TrialToken::From(kSampleToken, correct_public_key(), &status); EXPECT_TRUE(token); EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, status); + EXPECT_EQ(expected_signature_, token->signature()); } TEST_F(TrialTokenTest, ExtractInvalidSignature) {
diff --git a/content/common/origin_trials/trial_token_validator.cc b/content/common/origin_trials/trial_token_validator.cc index 2cb1dd3d..1460fe4 100644 --- a/content/common/origin_trials/trial_token_validator.cc +++ b/content/common/origin_trials/trial_token_validator.cc
@@ -47,6 +47,10 @@ if (origin_trial_policy->IsFeatureDisabled(trial_token->feature_name())) return blink::WebOriginTrialTokenStatus::FeatureDisabled; + // TODO(chasej): Add a new status for disabled tokens + if (origin_trial_policy->IsTokenDisabled(trial_token->signature())) + return blink::WebOriginTrialTokenStatus::FeatureDisabled; + *feature_name = trial_token->feature_name(); return blink::WebOriginTrialTokenStatus::Success; }
diff --git a/content/common/origin_trials/trial_token_validator_unittest.cc b/content/common/origin_trials/trial_token_validator_unittest.cc index cf196cc..a41f386 100644 --- a/content/common/origin_trials/trial_token_validator_unittest.cc +++ b/content/common/origin_trials/trial_token_validator_unittest.cc
@@ -60,6 +60,13 @@ "O4fM3Sa+MEd+5JcIgSZafw8AAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" "IjogMjAwMDAwMDAwMH0="; +const uint8_t kSampleTokenSignature[] = { + 0xe4, 0x7f, 0xd6, 0x68, 0x3e, 0xff, 0x0e, 0x51, 0x38, 0xb3, 0x79, + 0xe0, 0xe9, 0x36, 0xd2, 0xb0, 0x29, 0x2b, 0x7a, 0x29, 0x81, 0x1e, + 0xd3, 0xab, 0xd6, 0x5f, 0xce, 0x10, 0x13, 0x42, 0x69, 0xc2, 0x6b, + 0xe0, 0x6d, 0x3c, 0x0d, 0x51, 0x47, 0x0e, 0x0d, 0x8a, 0x07, 0xf7, + 0xdf, 0xaa, 0xfe, 0x3b, 0x87, 0xcc, 0xdd, 0x26, 0xbe, 0x30, 0x47, + 0x7e, 0xe4, 0x97, 0x08, 0x81, 0x26, 0x5a, 0x7f, 0x0f}; // The token should be valid for this origin and for this feature. const char kAppropriateOrigin[] = "https://valid.example.com"; @@ -85,6 +92,13 @@ "RrOtlAwa0gPqqn+A8GTD3AQAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" "IjogMTAwMDAwMDAwMH0="; +const uint8_t kExpiredTokenSignature[] = { + 0x61, 0xcf, 0x50, 0x85, 0xcc, 0x69, 0x77, 0xbd, 0x8d, 0x65, 0xbc, + 0x90, 0x97, 0x83, 0x15, 0x7a, 0x25, 0x56, 0x34, 0xfd, 0xde, 0x9e, + 0x17, 0x32, 0x72, 0xb8, 0xfa, 0x33, 0x18, 0x77, 0x6a, 0x63, 0xaa, + 0xd1, 0x5c, 0x60, 0x1d, 0x5b, 0x52, 0x67, 0x43, 0xf0, 0xfb, 0xa7, + 0x40, 0xa3, 0x3e, 0x46, 0xb3, 0xad, 0x94, 0x0c, 0x1a, 0xd2, 0x03, + 0xea, 0xaa, 0x7f, 0x80, 0xf0, 0x64, 0xc3, 0xdc, 0x04}; const char kUnparsableToken[] = "abcde"; @@ -119,10 +133,19 @@ void DisableFeature(const std::string& feature) { disabled_features_.insert(feature); } + void DisableToken(const std::string& token) { + disabled_tokens_.insert(token); + } + + protected: + bool IsTokenDisabled(base::StringPiece token_signature) const override { + return disabled_tokens_.count(token_signature.as_string()) > 0; + } private: const uint8_t* key_ = nullptr; std::set<std::string> disabled_features_; + std::set<std::string> disabled_tokens_; }; class TestContentClient : public ContentClient { @@ -138,6 +161,9 @@ void DisableFeature(const std::string& feature) { origin_trial_policy_.DisableFeature(feature); } + void DisableToken(const std::string& token_signature) { + origin_trial_policy_.DisableToken(token_signature); + } private: TestOriginTrialPolicy origin_trial_policy_; @@ -151,6 +177,12 @@ : appropriate_origin_(GURL(kAppropriateOrigin)), inappropriate_origin_(GURL(kInappropriateOrigin)), insecure_origin_(GURL(kInsecureOrigin)), + valid_token_signature_( + std::string(reinterpret_cast<const char*>(kSampleTokenSignature), + arraysize(kSampleTokenSignature))), + expired_token_signature_( + std::string(reinterpret_cast<const char*>(kExpiredTokenSignature), + arraysize(kExpiredTokenSignature))), response_headers_(new net::HttpResponseHeaders("")) { SetPublicKey(kTestPublicKey); SetContentClient(&test_content_client_); @@ -175,10 +207,17 @@ test_content_client_.DisableFeature(feature); } + void DisableToken(const std::string& token_signature) { + test_content_client_.DisableToken(token_signature); + } + const url::Origin appropriate_origin_; const url::Origin inappropriate_origin_; const url::Origin insecure_origin_; + std::string valid_token_signature_; + std::string expired_token_signature_; + scoped_refptr<net::HttpResponseHeaders> response_headers_; private: @@ -259,6 +298,22 @@ appropriate_origin_, &feature)); } +TEST_F(TrialTokenValidatorTest, ValidatorRespectsDisabledTokens) { + std::string feature; + // Disable an irrelevant token; token should still validate + DisableToken(expired_token_signature_); + EXPECT_EQ(blink::WebOriginTrialTokenStatus::Success, + TrialTokenValidator::ValidateToken(kSampleToken, + appropriate_origin_, &feature)); + EXPECT_EQ(kAppropriateFeatureName, feature); + // Disable the token; it should no longer be valid + DisableToken(valid_token_signature_); + // TODO(chasej): Add a new status for disabled tokens + EXPECT_EQ(blink::WebOriginTrialTokenStatus::FeatureDisabled, + TrialTokenValidator::ValidateToken(kSampleToken, + appropriate_origin_, &feature)); +} + TEST_F(TrialTokenValidatorTest, ValidateRequestInsecure) { response_headers_->AddHeader(std::string("Origin-Trial: ") + kInsecureOriginToken);
diff --git a/content/renderer/mus/renderer_window_tree_client.cc b/content/renderer/mus/renderer_window_tree_client.cc index 0e9f0b64..65fe281 100644 --- a/content/renderer/mus/renderer_window_tree_client.cc +++ b/content/renderer/mus/renderer_window_tree_client.cc
@@ -114,7 +114,8 @@ void RendererWindowTreeClient::OnWindowBoundsChanged( ui::Id window_id, const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) {} + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) {} void RendererWindowTreeClient::OnClientAreaChanged( uint32_t window_id,
diff --git a/content/renderer/mus/renderer_window_tree_client.h b/content/renderer/mus/renderer_window_tree_client.h index 48fb20e..53cf3c8 100644 --- a/content/renderer/mus/renderer_window_tree_client.h +++ b/content/renderer/mus/renderer_window_tree_client.h
@@ -74,9 +74,11 @@ ui::mojom::WindowDataPtr data, int64_t display_id, bool drawn) override; - void OnWindowBoundsChanged(ui::Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) override; + void OnWindowBoundsChanged( + ui::Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_frame_id) override; void OnClientAreaChanged( uint32_t window_id, const gfx::Insets& new_client_area,
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 9624cfb..27feea5a 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -4205,9 +4205,10 @@ // TODO(mkwst): It would be cleaner to adjust blink::ResourceRequest to // initialize itself with a `nullptr` initiator so that this can be a simple // `isNull()` check. https://crbug.com/625969 + WebDocument frame_document = frame->document(); if (request.requestorOrigin().isUnique() && - !frame->document().getSecurityOrigin().isUnique()) { - request.setRequestorOrigin(frame->document().getSecurityOrigin()); + !frame_document.getSecurityOrigin().isUnique()) { + request.setRequestorOrigin(frame_document.getSecurityOrigin()); } WebDataSource* provisional_data_source = frame->provisionalDataSource(); @@ -4320,7 +4321,7 @@ extra_data->set_render_frame_id(routing_id_); extra_data->set_is_main_frame(!parent); extra_data->set_frame_origin( - url::Origin(frame->document().getSecurityOrigin())); + url::Origin(frame_document.getSecurityOrigin())); extra_data->set_parent_is_main_frame(parent && !parent->parent()); extra_data->set_parent_render_frame_id(parent_routing_id); extra_data->set_allow_download( @@ -4336,7 +4337,7 @@ is_prefetch && WebURLRequestToResourceType(request) != RESOURCE_TYPE_MAIN_FRAME); extra_data->set_initiated_in_secure_context( - frame->document().isSecureContext()); + frame_document.isSecureContext()); // Renderer process transfers apply only to navigational requests. bool is_navigational_request = @@ -4858,20 +4859,21 @@ params.socket_address.set_port(response.remotePort()); params.was_within_same_page = navigation_state->WasWithinSamePage(); + WebDocument frame_document = frame->document(); // Set the origin of the frame. This will be replicated to the corresponding // RenderFrameProxies in other processes. - params.origin = frame->document().getSecurityOrigin(); + WebSecurityOrigin frame_origin = frame_document.getSecurityOrigin(); + params.origin = frame_origin; params.insecure_request_policy = frame->getInsecureRequestPolicy(); params.has_potentially_trustworthy_unique_origin = - frame->document().getSecurityOrigin().isUnique() && - frame->document().getSecurityOrigin().isPotentiallyTrustworthy(); + frame_origin.isUnique() && frame_origin.isPotentiallyTrustworthy(); // Set the URL to be displayed in the browser UI to the user. params.url = GetLoadingUrl(); - if (GURL(frame->document().baseURL()) != params.url) - params.base_url = frame->document().baseURL(); + if (GURL(frame_document.baseURL()) != params.url) + params.base_url = frame_document.baseURL(); GetRedirectChain(ds, ¶ms.redirects); params.should_update_history =
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm index 5104b68..e0cf332 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm +++ b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm
@@ -6,9 +6,12 @@ #include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" +#include "components/ntp_snippets/content_suggestions_service.h" +#include "components/ntp_snippets/remote/remote_suggestions_scheduler.h" #import "ios/chrome/browser/content_suggestions/content_suggestions_mediator.h" #include "ios/chrome/browser/ntp_snippets/ios_chrome_content_suggestions_service_factory.h" #import "ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h" +#import "ios/chrome/browser/ui/content_suggestions/content_suggestion_identifier.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h" @@ -22,16 +25,21 @@ #error "This file requires ARC support." #endif -@interface ContentSuggestionsCoordinator ()<ContentSuggestionsCommands> { - ContentSuggestionsMediator* _contentSuggestionsMediator; -} +@interface ContentSuggestionsCoordinator ()<ContentSuggestionsCommands> @property(nonatomic, strong) AlertCoordinator* alertCoordinator; @property(nonatomic, strong) UINavigationController* navigationController; @property(nonatomic, strong) ContentSuggestionsViewController* suggestionsViewController; +@property(nonatomic, strong) + ContentSuggestionsMediator* contentSuggestionsMediator; +// Opens the |URL| in a new tab |incognito| or not. - (void)openNewTabWithURL:(const GURL&)URL incognito:(BOOL)incognito; +// Dismisses the |article|, removing it from the content service, and dismisses +// the item at |indexPath| in the view controller. +- (void)dismissArticle:(ContentSuggestionsArticleItem*)article + atIndexPath:(NSIndexPath*)indexPath; @end @@ -43,6 +51,7 @@ @synthesize suggestionsViewController = _suggestionsViewController; @synthesize URLLoader = _URLLoader; @synthesize visible = _visible; +@synthesize contentSuggestionsMediator = _contentSuggestionsMediator; - (void)start { if (self.visible || !self.browserState) { @@ -53,13 +62,17 @@ _visible = YES; - _contentSuggestionsMediator = [[ContentSuggestionsMediator alloc] - initWithContentService:IOSChromeContentSuggestionsServiceFactory:: - GetForBrowserState(self.browserState)]; + ntp_snippets::ContentSuggestionsService* contentSuggestionsService = + IOSChromeContentSuggestionsServiceFactory::GetForBrowserState( + self.browserState); + contentSuggestionsService->remote_suggestions_scheduler()->OnNTPOpened(); + + self.contentSuggestionsMediator = [[ContentSuggestionsMediator alloc] + initWithContentService:contentSuggestionsService]; self.suggestionsViewController = [[ContentSuggestionsViewController alloc] initWithStyle:CollectionViewControllerStyleDefault - dataSource:_contentSuggestionsMediator]; + dataSource:self.contentSuggestionsMediator]; self.suggestionsViewController.suggestionCommandHandler = self; _navigationController = [[UINavigationController alloc] @@ -82,6 +95,7 @@ dismissViewControllerAnimated:YES completion:nil]; self.navigationController = nil; + self.contentSuggestionsMediator = nil; _visible = NO; } @@ -108,7 +122,8 @@ } - (void)displayContextMenuForArticle:(ContentSuggestionsArticleItem*)articleItem - atPoint:(CGPoint)touchLocation { + atPoint:(CGPoint)touchLocation + atIndexPath:(NSIndexPath*)indexPath { NSString* urlString = base::SysUTF8ToNSString(articleItem.articleURL.spec()); self.alertCoordinator = [[ActionSheetCoordinator alloc] initWithBaseViewController:self.navigationController @@ -120,6 +135,7 @@ __weak ContentSuggestionsCoordinator* weakSelf = self; GURL articleURL = articleItem.articleURL; + __weak ContentSuggestionsArticleItem* weakArticle = articleItem; NSString* openInNewTabTitle = l10n_util::GetNSString(IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWTAB); @@ -146,7 +162,8 @@ [self.alertCoordinator addItemWithTitle:deleteTitle action:^{ // TODO(crbug.com/691979): Add metrics. - [weakSelf removeEntry]; + [weakSelf dismissArticle:weakArticle + atIndexPath:indexPath]; } style:UIAlertActionStyleDefault]; @@ -173,8 +190,15 @@ [self stop]; } -- (void)removeEntry { +- (void)dismissArticle:(ContentSuggestionsArticleItem*)article + atIndexPath:(NSIndexPath*)indexPath { + if (!article) + return; + // TODO(crbug.com/691979): Add metrics. + [self.contentSuggestionsMediator + dismissSuggestion:article.suggestionIdentifier]; + [self.suggestionsViewController dismissEntryAtIndexPath:indexPath]; } @end
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.h b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.h index f53553a..11394aa 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.h +++ b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.h
@@ -14,6 +14,8 @@ class ContentSuggestionsService; } +@class ContentSuggestionIdentifier; + // Mediator for ContentSuggestions. Makes the interface between a // ntp_snippets::ContentSuggestionsService and the Objective-C services using // its data. @@ -25,6 +27,10 @@ NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; +// Dismisses the suggestion from the content suggestions service. It doesn't +// change the UI. +- (void)dismissSuggestion:(ContentSuggestionIdentifier*)suggestionIdentifier; + @end #endif // IOS_CHROME_BROWSER_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_MEDIATOR_H_
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm index 55e62e62..52b7c7c 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm +++ b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm
@@ -133,6 +133,8 @@ @synthesize dataSink = _dataSink; @synthesize sectionInformationByCategory = _sectionInformationByCategory; +#pragma mark - Public + - (instancetype)initWithContentService: (ntp_snippets::ContentSuggestionsService*)contentService { self = [super init]; @@ -145,6 +147,16 @@ return self; } +- (void)dismissSuggestion:(ContentSuggestionIdentifier*)suggestionIdentifier { + ContentSuggestionsCategoryWrapper* categoryWrapper = + [self categoryWrapperForSectionInfo:suggestionIdentifier.sectionInfo]; + ntp_snippets::ContentSuggestion::ID suggestion_id = + ntp_snippets::ContentSuggestion::ID([categoryWrapper category], + suggestionIdentifier.IDInSection); + + self.contentService->DismissSuggestion(suggestion_id); +} + #pragma mark - ContentSuggestionsDataSource - (NSArray<ContentSuggestion*>*)allSuggestions {
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm index 2ee2912..ecc4581 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm
@@ -56,16 +56,16 @@ _subtitle = [subtitle copy]; _articleURL = url; _delegate = delegate; + _image = [self emptyImageBackground]; } return self; } - (void)configureCell:(ContentSuggestionsArticleCell*)cell { [super configureCell:cell]; - if (!self.image && !self.imageFetched) { + if (!self.imageFetched) { self.imageFetched = YES; - // Fetch the image. During the fetch the cell's image should still be set to - // nil. + // Fetch the image. During the fetch the cell's image should still be set. [self.delegate loadImageForArticleItem:self]; } cell.titleLabel.text = self.title; @@ -74,6 +74,21 @@ [cell setPublisherName:self.publisher date:self.publishDate]; } +#pragma mark - Private + +- (UIImage*)emptyImageBackground { + // TODO(crbug.com/698171): Remove this function once we have real background + // image. + UIColor* color = [UIColor lightGrayColor]; + CGRect rect = CGRectMake(0, 0, 1, 1); + UIGraphicsBeginImageContext(rect.size); + [color setFill]; + UIRectFill(rect); + UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return image; +} + @end #pragma mark - ContentSuggestionsArticleCell @@ -156,9 +171,9 @@ CGFloat parentWidth = CGRectGetWidth(self.contentView.bounds); self.titleLabel.preferredMaxLayoutWidth = - parentWidth - self.imageView.bounds.size.width - 3 * kStandardSpacing; + parentWidth - kImageSize - 3 * kStandardSpacing; self.subtitleLabel.preferredMaxLayoutWidth = - parentWidth - self.imageView.bounds.size.width - 3 * kStandardSpacing; + parentWidth - kImageSize - 3 * kStandardSpacing; // Re-layout with the new preferred width to allow the label to adjust its // height.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item_unittest.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item_unittest.mm index b8c0003..f0b5063 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item_unittest.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item_unittest.mm
@@ -34,47 +34,18 @@ ContentSuggestionsArticleCell* cell = [[[item cellClass] alloc] init]; ASSERT_EQ([ContentSuggestionsArticleCell class], [cell class]); ASSERT_EQ(url, item.articleURL); - ASSERT_EQ(nil, item.image); + ASSERT_NE(nil, item.image); // Action. [item configureCell:cell]; // Tests. - EXPECT_EQ(nil, cell.imageView.image); + EXPECT_EQ(item.image, cell.imageView.image); EXPECT_EQ(title, cell.titleLabel.text); EXPECT_EQ(subtitle, cell.subtitleLabel.text); EXPECT_OCMOCK_VERIFY(delegateMock); } -// Tests that configureCell: set all the fields of the cell with an image and -// does not call the delegate. -TEST(ContentSuggestionsArticleItemTest, CellIsConfiguredWithImage) { - // Setup. - NSString* title = @"testTitle"; - NSString* subtitle = @"testSubtitle"; - UIImage* image = [[UIImage alloc] init]; - GURL url = GURL("http://chromium.org"); - id delegateMock = - OCMStrictProtocolMock(@protocol(ContentSuggestionsArticleItemDelegate)); - ContentSuggestionsArticleItem* item = - [[ContentSuggestionsArticleItem alloc] initWithType:0 - title:title - subtitle:subtitle - delegate:delegateMock - url:url]; - item.image = image; - ContentSuggestionsArticleCell* cell = [[[item cellClass] alloc] init]; - - // Action. - [item configureCell:cell]; - - // Tests. - EXPECT_EQ(image, cell.imageView.image); - EXPECT_EQ(title, cell.titleLabel.text); - EXPECT_EQ(subtitle, cell.subtitleLabel.text); - EXPECT_EQ(image, cell.imageView.image); -} - // Tests that configureCell: does not call the delegate if it fetched the image // once. TEST(ContentSuggestionsArticleItemTest, DontFetchImageIsImageIsBeingFetched) { @@ -93,7 +64,7 @@ OCMExpect([niceDelegateMock loadImageForArticleItem:item]); ContentSuggestionsArticleCell* cell = [[[item cellClass] alloc] init]; - ASSERT_EQ(nil, item.image); + ASSERT_NE(nil, item.image); [item configureCell:cell]; ASSERT_OCMOCK_VERIFY(niceDelegateMock); @@ -105,7 +76,7 @@ [item configureCell:cell]; // Tests. - EXPECT_EQ(nil, cell.imageView.image); + EXPECT_EQ(item.image, cell.imageView.image); EXPECT_EQ(title, cell.titleLabel.text); EXPECT_EQ(subtitle, cell.subtitleLabel.text); }
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h index 7c11505..b874e51 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h
@@ -21,7 +21,8 @@ - (void)openURL:(const GURL&)URL; // Displays a context menu for opening the |articleItem|. - (void)displayContextMenuForArticle:(ContentSuggestionsArticleItem*)articleItem - atPoint:(CGPoint)touchLocation; + atPoint:(CGPoint)touchLocation + atIndexPath:(NSIndexPath*)indexPath; @end
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h index e25bdb9..997f569 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h
@@ -30,6 +30,9 @@ @property(nonatomic, weak) id<ContentSuggestionsCommands> suggestionCommandHandler; +// Removes the entry at |indexPath|, from the collection and its model. +- (void)dismissEntryAtIndexPath:(NSIndexPath*)indexPath; + @end #endif // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_VIEW_CONTROLLER_H_
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 3fb509f..3754aa9f 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
@@ -41,6 +41,8 @@ @synthesize suggestionCommandHandler = _suggestionCommandHandler; @synthesize collectionUpdater = _collectionUpdater; +#pragma mark - Public + - (instancetype)initWithStyle:(CollectionViewControllerStyle)style dataSource:(id<ContentSuggestionsDataSource>)dataSource { self = [super initWithStyle:style]; @@ -51,6 +53,20 @@ return self; } +- (void)dismissEntryAtIndexPath:(NSIndexPath*)indexPath { + if (!indexPath || ![self.collectionViewModel hasItemAtIndexPath:indexPath]) { + return; + } + + [self.collectionView performBatchUpdates:^{ + [self collectionView:self.collectionView + willDeleteItemsAtIndexPaths:@[ indexPath ]]; + + [self.collectionView deleteItemsAtIndexPaths:@[ indexPath ]]; + } + completion:nil]; +} + #pragma mark - UIViewController - (void)viewDidLoad { @@ -197,8 +213,10 @@ ContentSuggestionsArticleItem* articleItem = base::mac::ObjCCastStrict<ContentSuggestionsArticleItem>(touchedItem); - [self.suggestionCommandHandler displayContextMenuForArticle:articleItem - atPoint:touchLocation]; + [self.suggestionCommandHandler + displayContextMenuForArticle:articleItem + atPoint:touchLocation + atIndexPath:touchedItemIndexPath]; } @end
diff --git a/ios/chrome/browser/ui/settings/BUILD.gn b/ios/chrome/browser/ui/settings/BUILD.gn index 74e62dd6..389ea9d 100644 --- a/ios/chrome/browser/ui/settings/BUILD.gn +++ b/ios/chrome/browser/ui/settings/BUILD.gn
@@ -37,6 +37,7 @@ "autofill_credit_card_edit_collection_view_controller.mm", "autofill_edit_accessory_view.h", "autofill_edit_accessory_view.mm", + "autofill_edit_collection_view_controller+protected.h", "autofill_edit_collection_view_controller.h", "autofill_edit_collection_view_controller.mm", "autofill_profile_edit_collection_view_controller.h",
diff --git a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm index a7ed56c..3c4ad8a 100644 --- a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
@@ -11,6 +11,7 @@ #include "base/mac/scoped_block.h" #import "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" +#include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/payments_service_url.h" @@ -22,6 +23,7 @@ #import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h" #include "ios/chrome/browser/ui/commands/ios_command_ids.h" #import "ios/chrome/browser/ui/commands/open_url_command.h" +#import "ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h" #import "ios/chrome/browser/ui/settings/cells/autofill_edit_item.h" #import "ios/chrome/browser/ui/settings/cells/copied_to_chrome_item.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" @@ -35,6 +37,8 @@ NSString* const kAutofillCreditCardEditCollectionViewId = @"kAutofillCreditCardEditCollectionViewId"; +const CGFloat kCardTypeIconDimension = 30.0; + typedef NS_ENUM(NSInteger, SectionIdentifier) { SectionIdentifierFields = kSectionIdentifierEnumZero, SectionIdentifierCopiedToChrome, @@ -156,6 +160,7 @@ : base::SysUTF16ToNSString(_creditCard.LastFourDigits()); cardNumberitem.textFieldEnabled = isEditing; cardNumberitem.autofillType = autofill::CREDIT_CARD_NUMBER; + [self setCardTypeIconForItem:cardNumberitem]; [model addItem:cardNumberitem toSectionWithIdentifier:SectionIdentifierFields]; @@ -193,6 +198,26 @@ } } +#pragma mark - UITextFieldDelegate + +- (void)textFieldDidEndEditing:(UITextField*)textField { + NSIndexPath* cellPath = [self indexPathForCurrentTextField]; + DCHECK(cellPath); + NSIndexPath* itemPath = [NSIndexPath indexPathForItem:[cellPath row] + inSection:[cellPath section]]; + AutofillEditItem* item = base::mac::ObjCCastStrict<AutofillEditItem>( + [self.collectionViewModel itemAtIndexPath:itemPath]); + + if (item.autofillType == autofill::CREDIT_CARD_NUMBER) + [self setCardTypeIconForItem:item]; + + // Update the cell. + [self reconfigureCellsForItems:@[ item ] + inSectionWithIdentifier:SectionIdentifierFields]; + + [super textFieldDidEndEditing:textField]; +} + #pragma mark - MDCCollectionViewEditingDelegate - (BOOL)collectionViewAllowsEditing:(UICollectionView*)collectionView { @@ -270,4 +295,22 @@ [self reloadData]; } +#pragma mark - Helper Methods + +- (void)setCardTypeIconForItem:(AutofillEditItem*)item { + const char* cardType = autofill::CreditCard::GetCreditCardType( + base::SysNSStringToUTF16(item.textFieldValue)); + if (cardType != autofill::kGenericCard) { + int resourceID = + autofill::data_util::GetPaymentRequestData(cardType).icon_resource_id; + // Resize and set the card type icon. + CGFloat dimension = kCardTypeIconDimension; + item.cardTypeIcon = + ResizeImage(NativeImage(resourceID), CGSizeMake(dimension, dimension), + ProjectionMode::kAspectFillNoClipping); + } else { + item.cardTypeIcon = nil; + } +} + @end
diff --git a/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h new file mode 100644 index 0000000..89b8ed83 --- /dev/null +++ b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h
@@ -0,0 +1,18 @@ +// 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 IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_EDIT_COLLECTION_VIEW_CONTROLLER_PROTECTED_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_EDIT_COLLECTION_VIEW_CONTROLLER_PROTECTED_H_ + +#import "ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.h" + +// The collection view for an Autofill edit entry menu. +@interface AutofillEditCollectionViewController (Protected) + +// Returns the indexPath for the currently focused text field when in edit mode. +- (NSIndexPath*)indexPathForCurrentTextField; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_EDIT_COLLECTION_VIEW_CONTROLLER_PROTECTED_H_
diff --git a/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm index f0f4faa..bc485697 100644 --- a/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm
@@ -8,6 +8,7 @@ #import "base/mac/foundation_util.h" #import "base/mac/scoped_nsobject.h" #import "ios/chrome/browser/ui/settings/autofill_edit_accessory_view.h" +#import "ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller+protected.h" #import "ios/chrome/browser/ui/settings/cells/autofill_edit_item.h" #import "ios/third_party/material_components_ios/src/components/CollectionCells/src/MaterialCollectionCells.h" @@ -128,6 +129,20 @@ #pragma mark - AutofillEditAccessoryDelegate +- (void)nextPressed { + [self moveToAnotherCellWithOffset:1]; +} + +- (void)previousPressed { + [self moveToAnotherCellWithOffset:-1]; +} + +- (void)closePressed { + [[_currentEditingCell textField] resignFirstResponder]; +} + +#pragma mark - Helper methods + - (NSIndexPath*)indexPathForCurrentTextField { DCHECK(_currentEditingCell); return [[self collectionView] indexPathForCell:_currentEditingCell]; @@ -149,18 +164,6 @@ } } -- (void)nextPressed { - [self moveToAnotherCellWithOffset:1]; -} - -- (void)previousPressed { - [self moveToAnotherCellWithOffset:-1]; -} - -- (void)closePressed { - [[_currentEditingCell textField] resignFirstResponder]; -} - - (void)updateAccessoryViewButtonState { NSIndexPath* currentPath = [self indexPathForCurrentTextField]; NSIndexPath* nextPath =
diff --git a/ios/chrome/browser/ui/settings/cells/autofill_edit_item.h b/ios/chrome/browser/ui/settings/cells/autofill_edit_item.h index 2c44f4c..dd8ca2e7 100644 --- a/ios/chrome/browser/ui/settings/cells/autofill_edit_item.h +++ b/ios/chrome/browser/ui/settings/cells/autofill_edit_item.h
@@ -21,6 +21,9 @@ // The value of the text field. @property(nonatomic, copy) NSString* textFieldValue; +// An image corresponding to the type of the credit card, if any. +@property(nonatomic, copy) UIImage* cardTypeIcon; + // The field type this item is describing. @property(nonatomic, assign) autofill::ServerFieldType autofillType; @@ -40,6 +43,9 @@ // |textFieldValue|. @property(nonatomic, readonly, strong) UITextField* textField; +// UIImageView containing the credit card type icon. +@property(nonatomic, readonly, strong) UIImageView* cardTypeIconView; + @end #endif // IOS_CHROME_BROWSER_UI_SETTINGS_CELLS_AUTOFILL_EDIT_ITEM_H_
diff --git a/ios/chrome/browser/ui/settings/cells/autofill_edit_item.mm b/ios/chrome/browser/ui/settings/cells/autofill_edit_item.mm index 0c17215..1db8055 100644 --- a/ios/chrome/browser/ui/settings/cells/autofill_edit_item.mm +++ b/ios/chrome/browser/ui/settings/cells/autofill_edit_item.mm
@@ -28,6 +28,7 @@ @synthesize textFieldName = _textFieldName; @synthesize textFieldValue = _textFieldValue; +@synthesize cardTypeIcon = _cardTypeIcon; @synthesize textFieldEnabled = _textFieldEnabled; @synthesize autofillType = _autofillType; @@ -56,6 +57,7 @@ [cell.textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged]; + cell.cardTypeIconView.image = self.cardTypeIcon; } #pragma mark - Actions @@ -66,10 +68,15 @@ @end -@implementation AutofillEditCell +@implementation AutofillEditCell { + NSLayoutConstraint* _iconHeightConstraint; + NSLayoutConstraint* _iconWidthConstraint; + NSLayoutConstraint* _textFieldTrailingConstraint; +} @synthesize textField = _textField; @synthesize textLabel = _textLabel; +@synthesize cardTypeIconView = _cardTypeIconView; - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; @@ -101,6 +108,24 @@ _textField.textAlignment = UseRTLLayout() ? NSTextAlignmentLeft : NSTextAlignmentRight; + // Card type icon. + _cardTypeIconView = [[UIImageView alloc] initWithFrame:CGRectZero]; + _cardTypeIconView.layer.borderColor = + [UIColor colorWithWhite:0.9 alpha:1.0].CGColor; + _cardTypeIconView.layer.borderWidth = 1.0; + _cardTypeIconView.translatesAutoresizingMaskIntoConstraints = NO; + [contentView addSubview:_cardTypeIconView]; + + // Set up the icons size constraints. They are activated here and updated in + // layoutSubviews. + _iconHeightConstraint = + [_cardTypeIconView.heightAnchor constraintEqualToConstant:0]; + _iconWidthConstraint = + [_cardTypeIconView.widthAnchor constraintEqualToConstant:0]; + + _textFieldTrailingConstraint = [_textField.trailingAnchor + constraintEqualToAnchor:_cardTypeIconView.leadingAnchor]; + // Set up the constraints. [NSLayoutConstraint activateConstraints:@[ [_textLabel.leadingAnchor @@ -110,14 +135,19 @@ constant:kVerticalPadding], [_textLabel.bottomAnchor constraintEqualToAnchor:contentView.bottomAnchor constant:-kVerticalPadding], - [_textField.trailingAnchor - constraintEqualToAnchor:contentView.trailingAnchor - constant:-kHorizontalPadding], + _textFieldTrailingConstraint, [_textField.firstBaselineAnchor constraintEqualToAnchor:_textLabel.firstBaselineAnchor], [_textField.leadingAnchor constraintEqualToAnchor:_textLabel.trailingAnchor constant:kLabelAndFieldGap], + [_cardTypeIconView.trailingAnchor + constraintEqualToAnchor:contentView.trailingAnchor + constant:-kHorizontalPadding], + [_cardTypeIconView.centerYAnchor + constraintEqualToAnchor:contentView.centerYAnchor], + _iconHeightConstraint, + _iconWidthConstraint, ]]; [_textField setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; @@ -125,6 +155,27 @@ return self; } +#pragma mark - UIView + +- (void)layoutSubviews { + if (self.cardTypeIconView.image) { + _textFieldTrailingConstraint.constant = -kLabelAndFieldGap; + + // Set the size constraints of the icon view to the dimensions of the image. + _iconHeightConstraint.constant = self.cardTypeIconView.image.size.height; + _iconWidthConstraint.constant = self.cardTypeIconView.image.size.width; + } else { + _textFieldTrailingConstraint.constant = 0; + + _iconHeightConstraint.constant = 0; + _iconWidthConstraint.constant = 0; + } + + [super layoutSubviews]; +} + +#pragma mark - UICollectionReusableView + - (void)prepareForReuse { [super prepareForReuse]; self.textLabel.text = nil; @@ -138,6 +189,7 @@ [self.textField removeTarget:nil action:nil forControlEvents:UIControlEventAllEvents]; + self.cardTypeIconView.image = nil; } #pragma mark - Accessibility
diff --git a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm index dba5948..c475920 100644 --- a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm +++ b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm
@@ -7,6 +7,8 @@ #import <UIKit/UIKit.h> #import "base/mac/foundation_util.h" +#include "components/autofill/core/browser/autofill_data_util.h" +#include "components/autofill/core/browser/credit_card.h" #include "components/grit/components_scaled_resources.h" #import "ios/chrome/browser/payments/cells/autofill_profile_item.h" #import "ios/chrome/browser/payments/cells/payments_text_item.h" @@ -25,6 +27,7 @@ #import "ios/chrome/browser/ui/settings/cells/account_control_item.h" #import "ios/chrome/browser/ui/settings/cells/account_signin_item.h" #import "ios/chrome/browser/ui/settings/cells/autofill_data_item.h" +#import "ios/chrome/browser/ui/settings/cells/autofill_edit_item.h" #import "ios/chrome/browser/ui/settings/cells/native_app_item.h" #import "ios/chrome/browser/ui/settings/cells/sync_switch_item.h" #import "ios/chrome/browser/ui/settings/cells/text_and_error_item.h" @@ -208,6 +211,10 @@ toSectionWithIdentifier:SectionIdentifierAutofill]; [model addItem:[self autofillItemWithAllText] toSectionWithIdentifier:SectionIdentifierAutofill]; + [model addItem:[self autofillEditItem] + toSectionWithIdentifier:SectionIdentifierAutofill]; + [model addItem:[self autofillEditItemWithIcon] + toSectionWithIdentifier:SectionIdentifierAutofill]; [model addItem:[self cvcItem] toSectionWithIdentifier:SectionIdentifierAutofill]; [model addItem:[self cvcItemWithDate] @@ -533,6 +540,30 @@ return item; } +- (CollectionViewItem*)autofillEditItem { + AutofillEditItem* item = [[[AutofillEditItem alloc] + initWithType:ItemTypeAutofillDynamicHeight] autorelease]; + item.textFieldName = @"Credit Number"; + item.textFieldValue = @"4111111111111111"; + item.textFieldEnabled = YES; + return item; +} + +- (CollectionViewItem*)autofillEditItemWithIcon { + AutofillEditItem* item = [[[AutofillEditItem alloc] + initWithType:ItemTypeAutofillDynamicHeight] autorelease]; + item.textFieldName = @"Credit Number"; + item.textFieldValue = @"4111111111111111"; + item.textFieldEnabled = YES; + int resourceID = + autofill::data_util::GetPaymentRequestData(autofill::kVisaCard) + .icon_resource_id; + item.cardTypeIcon = + ResizeImage(NativeImage(resourceID), CGSizeMake(30.0, 30.0), + ProjectionMode::kAspectFillNoClipping); + return item; +} + - (CollectionViewItem*)cvcItem { CVCItem* item = [[[CVCItem alloc] initWithType:ItemTypeAutofillCVC] autorelease];
diff --git a/media/gpu/jpeg_decode_accelerator_unittest.cc b/media/gpu/jpeg_decode_accelerator_unittest.cc index 00fa4f5..aa1f42d 100644 --- a/media/gpu/jpeg_decode_accelerator_unittest.cc +++ b/media/gpu/jpeg_decode_accelerator_unittest.cc
@@ -475,7 +475,7 @@ } TEST_F(JpegDecodeAcceleratorTest, SimpleDecode) { - for (const auto& image : g_env->image_data_user_) { + for (auto* image : g_env->image_data_user_) { test_image_files_.push_back(image); expected_status_.push_back(CS_DECODE_PASS); } @@ -483,7 +483,7 @@ } TEST_F(JpegDecodeAcceleratorTest, MultipleDecoders) { - for (const auto& image : g_env->image_data_user_) { + for (auto* image : g_env->image_data_user_) { test_image_files_.push_back(image); expected_status_.push_back(CS_DECODE_PASS); }
diff --git a/remoting/test/chromoting_test_driver.cc b/remoting/test/chromoting_test_driver.cc index 1e7d73e..b75ce580 100644 --- a/remoting/test/chromoting_test_driver.cc +++ b/remoting/test/chromoting_test_driver.cc
@@ -27,6 +27,7 @@ const char kPinSwitchName[] = "pin"; const char kRefreshTokenPathSwitchName[] = "refresh-token-path"; const char kSingleProcessTestsSwitchName[] = "single-process-tests"; +const char kShowHostListSwitchName[] = "show-host-list"; const char kTestEnvironmentSwitchName[] = "use-test-env"; const char kUserNameSwitchName[] = "username"; } @@ -68,6 +69,10 @@ switches::kUserNameSwitchName); printf(" %s: Specifies which host to connect to when running tests\n", switches::kHostNameSwitchName); + printf( + " %s: Retrieves and displays the connection status for all known " + "hosts, no tests will be run\n", + switches::kShowHostListSwitchName); printf("\nOptional Parameters:\n"); printf(" %s: Exchanged for a refresh and access token for authentication\n", switches::kAuthCodeSwitchName); @@ -220,11 +225,14 @@ options.host_name = command_line->GetSwitchValueASCII(switches::kHostNameSwitchName); - if (options.host_name.empty()) { + if (!options.host_name.empty()) { + VLOG(1) << "host_name: '" << options.host_name << "'"; + } else if (command_line->HasSwitch(switches::kShowHostListSwitchName)) { + options.host_name = "unspecified"; + } else { LOG(ERROR) << "No hostname passed in, connect to host requires hostname!"; return -1; } - VLOG(1) << "host_name: '" << options.host_name << "'"; options.host_jid = command_line->GetSwitchValueASCII(switches::kHostJidSwitchName); @@ -247,14 +255,25 @@ return -1; } + if (command_line->HasSwitch(switches::kShowHostListSwitchName)) { + // When this flag is specified, we will show the host list and exit. + shared_data->RefreshHostList(); + shared_data->DisplayHostList(); + return 0; + } + // This method is necessary as there are occasional propagation delays in the // backend and we don't want the test to fail because of that. - if (!shared_data->WaitForHostOnline(options.host_jid, options.host_name)) { + if (!shared_data->WaitForHostOnline()) { VLOG(1) << "The expected host was not available for connections."; // Host is not online. No point running further tests. return -1; } + if (options.pin.empty()) { + LOG(WARNING) << "No PIN specified, tests may not run reliably."; + } + // Since we've successfully set up our shared_data object, we'll assign the // value to our global* and transfer ownership to the framework. remoting::test::g_chromoting_shared_data = shared_data.release();
diff --git a/remoting/test/chromoting_test_driver_environment.cc b/remoting/test/chromoting_test_driver_environment.cc index 356e901..2cb53d7 100644 --- a/remoting/test/chromoting_test_driver_environment.cc +++ b/remoting/test/chromoting_test_driver_environment.cc
@@ -86,12 +86,10 @@ } void ChromotingTestDriverEnvironment::DisplayHostList() { - const char kHostAvailabilityFormatString[] = "%-45s%-15s%-35s"; + const char kHostAvailabilityFormatString[] = "%-25s%-15s%-35s\n"; - LOG(INFO) << base::StringPrintf(kHostAvailabilityFormatString, - "Host Name", "Host Status", "Host JID"); - LOG(INFO) << base::StringPrintf(kHostAvailabilityFormatString, - "---------", "-----------", "--------"); + printf(kHostAvailabilityFormatString, "Host Name", "Host Status", "Host JID"); + printf(kHostAvailabilityFormatString, "---------", "-----------", "--------"); std::string status; for (const HostInfo& host_info : host_list_) { @@ -104,31 +102,34 @@ status = "UNKNOWN"; } - LOG(INFO) << base::StringPrintf( - kHostAvailabilityFormatString, host_info.host_name.c_str(), - status.c_str(), host_info.host_jid.c_str()); + printf(kHostAvailabilityFormatString, host_info.host_name.c_str(), + status.c_str(), host_info.host_jid.c_str()); } } -bool ChromotingTestDriverEnvironment::WaitForHostOnline( - const std::string& host_jid, - const std::string& host_name) { +bool ChromotingTestDriverEnvironment::WaitForHostOnline() { if (host_list_.empty()) { RetrieveHostList(); } + DisplayHostList(); + // Refresh the |host_list_| periodically to check if expected JID is online. const base::TimeDelta kTotalTimeInSeconds = base::TimeDelta::FromSeconds(60); const base::TimeDelta kSleepTimeInSeconds = base::TimeDelta::FromSeconds(5); const int kMaxIterations = kTotalTimeInSeconds / kSleepTimeInSeconds; - int num_iterations = 0; - while (num_iterations < kMaxIterations) { + for (int iterations = 0; iterations < kMaxIterations; iterations++) { + if (!FindHostInHostList()) { + LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ + << "' not found in host list."; + return false; + } + if (host_info_.IsReadyForConnection()) { - if (num_iterations > 0) { + if (iterations > 0) { VLOG(0) << "Host online after: " - << num_iterations * kSleepTimeInSeconds.InSeconds() - << " seconds."; + << iterations * kSleepTimeInSeconds.InSeconds() << " seconds."; } return true; } @@ -136,14 +137,31 @@ // Wait a while before refreshing host list. base::PlatformThread::Sleep(kSleepTimeInSeconds); RefreshHostList(); - ++num_iterations; } - LOG(ERROR) << "Host with JID '" << host_jid << "' still not online after " - << num_iterations * kSleepTimeInSeconds.InSeconds() << " seconds."; + LOG(ERROR) << "Host '" << host_name_ << "' with JID '" << host_jid_ + << "' still not online after " + << kMaxIterations * kSleepTimeInSeconds.InSeconds() << " seconds."; return false; } +bool ChromotingTestDriverEnvironment::FindHostInHostList() { + bool host_found = false; + for (HostInfo& host_info : host_list_) { + // The JID is optional so we consider an empty string to be a '*' match. + bool host_jid_match = + host_jid_.empty() || (host_jid_ == host_info.host_jid); + bool host_name_match = host_name_ == host_info.host_name; + + if (host_name_match && host_jid_match) { + host_info_ = host_info; + host_found = true; + break; + } + } + return host_found; +} + void ChromotingTestDriverEnvironment::SetAccessTokenFetcherForTest( AccessTokenFetcher* access_token_fetcher) { DCHECK(access_token_fetcher); @@ -306,28 +324,7 @@ return false; } - DisplayHostList(); - for (HostInfo& host_info : host_list_) { - // The JID is optional so we consider an empty string to be a '*' match. - bool host_jid_match = - host_jid_.empty() || (host_jid_ == host_info.host_jid); - bool host_name_match = host_name_ == host_info.host_name; - - if (host_name_match && host_jid_match) { - host_info_ = host_info; - - if (host_info.IsReadyForConnection()) { - return true; - } else { - LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ - << "' not online."; - return false; - } - } - } - LOG(WARNING) << "Host '" << host_name_ << "' with JID '" << host_jid_ - << "' not found in host list."; - return false; + return true; } void ChromotingTestDriverEnvironment::OnHostListRetrieved(
diff --git a/remoting/test/chromoting_test_driver_environment.h b/remoting/test/chromoting_test_driver_environment.h index df2cb21e..90d1134 100644 --- a/remoting/test/chromoting_test_driver_environment.h +++ b/remoting/test/chromoting_test_driver_environment.h
@@ -49,14 +49,16 @@ // Returns false if a valid access token cannot be retrieved. bool Initialize(const std::string& auth_code); + // Clears and then retrieves a new host list. + bool RefreshHostList(); + // Retrieves connection information for all known hosts and displays // their availability to STDOUT. void DisplayHostList(); // Waits for either the host to come online or a maximum timeout. Returns true - // if host is found online. - bool WaitForHostOnline(const std::string& host_jid, - const std::string& host_name); + // if host is found online and |host_info_| is valid. + bool WaitForHostOnline(); // Used to set fake/mock objects for ChromotingTestDriverEnvironment tests. // The caller retains ownership of the supplied objects, and must ensure that @@ -95,12 +97,11 @@ const std::string& retrieved_refresh_token); // Used to retrieve a host list from the directory service. - // Returns true if the request was successful, |host_list_| is valid, and - // |host_info_| has been set. + // Returns true if the request was successful and |host_list_| is valid. bool RetrieveHostList(); - // Clears and then retrieves a new host list. - bool RefreshHostList(); + // Sets |host_info_| if the requested host exists in the host list. + bool FindHostInHostList(); // Called after the host info fetcher completes. void OnHostListRetrieved(base::Closure done_closure,
diff --git a/remoting/test/chromoting_test_driver_environment_unittest.cc b/remoting/test/chromoting_test_driver_environment_unittest.cc index 843be6d..63add746 100644 --- a/remoting/test/chromoting_test_driver_environment_unittest.cc +++ b/remoting/test/chromoting_test_driver_environment_unittest.cc
@@ -81,7 +81,8 @@ } bool ChromotingTestDriverEnvironmentTest::RefreshHostList() { - return environment_object_->RefreshHostList(); + return environment_object_->RefreshHostList() && + environment_object_->FindHostInHostList(); } HostInfo ChromotingTestDriverEnvironmentTest::CreateFakeHostInfo() { @@ -113,9 +114,8 @@ kFakeAccessTokenFetcherAccessTokenValue); EXPECT_EQ(environment_object_->host_list().size(), 0u); - // Now Retrieve the host list. - EXPECT_TRUE(environment_object_->WaitForHostOnline(kFakeHostJidValue, - kFakeHostNameValue)); + // Now retrieve the host list. + EXPECT_TRUE(environment_object_->WaitForHostOnline()); // Should only have one host in the list. EXPECT_EQ(environment_object_->host_list().size(), kExpectedHostListSize); @@ -152,9 +152,8 @@ kFakeAccessTokenFetcherAccessTokenValue); EXPECT_EQ(environment_object_->host_list().size(), 0u); - // Now Retrieve the host list. - EXPECT_TRUE(environment_object_->WaitForHostOnline(kFakeHostJidValue, - kFakeHostNameValue)); + // Now retrieve the host list. + EXPECT_TRUE(environment_object_->WaitForHostOnline()); // Should only have one host in the list. EXPECT_EQ(environment_object_->host_list().size(), kExpectedHostListSize); @@ -262,7 +261,7 @@ environment_object_->SetHostNameForTest(kFakeHostNameValue); environment_object_->SetHostJidForTest(kFakeHostJidValue); - EXPECT_FALSE(RefreshHostList()); + EXPECT_TRUE(RefreshHostList()); EXPECT_FALSE(environment_object_->host_info().IsReadyForConnection()); }
diff --git a/services/ui/gpu/gpu_main.cc b/services/ui/gpu/gpu_main.cc index bc04ac5..3e4015a 100644 --- a/services/ui/gpu/gpu_main.cc +++ b/services/ui/gpu/gpu_main.cc
@@ -71,6 +71,7 @@ thread_options.priority = base::ThreadPriority::DISPLAY; #endif CHECK(gpu_thread_.StartWithOptions(thread_options)); + gpu_thread_task_runner_ = gpu_thread_.task_runner(); // TODO(sad): We do not need the IO thread once gpu has a separate process. It // should be possible to use |main_task_runner_| for doing IO tasks. @@ -85,11 +86,12 @@ // Start the compositor thread. compositor_thread_.Start(); + compositor_thread_task_runner_ = compositor_thread_.task_runner(); } GpuMain::~GpuMain() { // Unretained() is OK here since the thread/task runner is owned by |this|. - compositor_thread_.task_runner()->PostTask( + compositor_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::TearDownOnCompositorThread, base::Unretained(this))); @@ -98,7 +100,7 @@ // thread to avoid deadlock. compositor_thread_.Stop(); - gpu_thread_.task_runner()->PostTask( + gpu_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::TearDownOnGpuThread, base::Unretained(this))); gpu_thread_.Stop(); @@ -108,10 +110,10 @@ void GpuMain::OnStart() { // |this| will outlive the gpu thread and so it's safe to use // base::Unretained here. - gpu_thread_.task_runner()->PostTask( + gpu_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::InitOnGpuThread, base::Unretained(this), - io_thread_.task_runner(), compositor_thread_.task_runner())); + io_thread_.task_runner(), compositor_thread_task_runner_)); } void GpuMain::CreateGpuService(mojom::GpuServiceRequest request, @@ -119,7 +121,7 @@ const gpu::GpuPreferences& preferences) { // |this| will outlive the gpu thread and so it's safe to use // base::Unretained here. - gpu_thread_.task_runner()->PostTask( + gpu_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::CreateGpuServiceOnGpuThread, base::Unretained(this), base::Passed(std::move(request)), @@ -163,7 +165,7 @@ cc::mojom::DisplayCompositorClientPtrInfo client_info) { DCHECK(!gpu_command_service_); gpu_command_service_ = new gpu::GpuInProcessThreadService( - gpu_thread_.task_runner(), gpu_service_->sync_point_manager(), + gpu_thread_task_runner_, gpu_service_->sync_point_manager(), gpu_service_->mailbox_manager(), gpu_service_->share_group()); // |gpu_memory_buffer_factory_| is null in tests. @@ -174,19 +176,19 @@ mojom::GpuServicePtr gpu_service; mojom::GpuServiceRequest gpu_service_request(&gpu_service); - if (gpu_thread_.task_runner()->BelongsToCurrentThread()) { + if (gpu_thread_task_runner_->BelongsToCurrentThread()) { // If the DisplayCompositor creation was delayed because GpuService // had not been created yet, then this is called, in gpu thread, right after // GpuService is created. BindGpuInternalOnGpuThread(std::move(gpu_service_request)); } else { - gpu_thread_.task_runner()->PostTask( + gpu_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::BindGpuInternalOnGpuThread, base::Unretained(this), base::Passed(std::move(gpu_service_request)))); } - compositor_thread_.task_runner()->PostTask( + compositor_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&GpuMain::CreateDisplayCompositorOnCompositorThread, base::Unretained(this), image_factory, base::Passed(gpu_service.PassInterface()),
diff --git a/services/ui/gpu/gpu_main.h b/services/ui/gpu/gpu_main.h index a5c859d..fb9adb49 100644 --- a/services/ui/gpu/gpu_main.h +++ b/services/ui/gpu/gpu_main.h
@@ -86,6 +86,7 @@ // The main thread for Gpu. base::Thread gpu_thread_; + scoped_refptr<base::SingleThreadTaskRunner> gpu_thread_task_runner_; // The thread that handles IO events for Gpu. base::Thread io_thread_; @@ -96,6 +97,7 @@ // and GLRenderer block on sync tokens from other command buffers. Thus, // the gpu service must live on a separate thread. base::Thread compositor_thread_; + scoped_refptr<base::SingleThreadTaskRunner> compositor_thread_task_runner_; mojo::Binding<mojom::GpuMain> binding_;
diff --git a/services/ui/public/interfaces/window_tree.mojom b/services/ui/public/interfaces/window_tree.mojom index ab53d13..6449eb4 100644 --- a/services/ui/public/interfaces/window_tree.mojom +++ b/services/ui/public/interfaces/window_tree.mojom
@@ -4,6 +4,7 @@ module ui.mojom; +import "cc/ipc/local_surface_id.mojom"; import "cc/ipc/surface_info.mojom"; import "cc/ipc/mojo_compositor_frame_sink.mojom"; import "services/ui/public/interfaces/cursor.mojom"; @@ -100,8 +101,10 @@ // Stops the pointer watcher for all events. StopPointerWatcher(); - // Sets the specified bounds of the specified window. - SetWindowBounds(uint32 change_id, uint32 window_id, gfx.mojom.Rect bounds); + // Sets the specified bounds of the specified window. The window will paint + // the frame in the provided |local_frame_id|, if any. + SetWindowBounds(uint32 change_id, uint32 window_id, gfx.mojom.Rect bounds, + cc.mojom.LocalSurfaceId? local_surface_id); // Sets the client area of the specified window. The client area is specified // by way of insets. Everything outside of the insets, and not in @@ -344,10 +347,12 @@ int64 display_id, bool parent_drawn); - // Invoked when a window's bounds have changed. + // Invoked when a window's bounds have changed. Only the client embedded in + // |window| gets a non_empty |local_surface_id|. OnWindowBoundsChanged(uint32 window, gfx.mojom.Rect old_bounds, - gfx.mojom.Rect new_bounds); + gfx.mojom.Rect new_bounds, + cc.mojom.LocalSurfaceId? local_surface_id); OnClientAreaChanged(uint32 window_id, gfx.mojom.Insets new_client_area,
diff --git a/services/ui/ws/display.cc b/services/ui/ws/display.cc index b3981b8..976b84c 100644 --- a/services/ui/ws/display.cc +++ b/services/ui/ws/display.cc
@@ -258,7 +258,7 @@ ServerWindow::Properties())); root_->set_event_targeting_policy( mojom::EventTargetingPolicy::DESCENDANTS_ONLY); - root_->SetBounds(gfx::Rect(size)); + root_->SetBounds(gfx::Rect(size), allocator_.GenerateId()); root_->SetVisible(true); focus_controller_ = base::MakeUnique<FocusController>(this, root_.get()); focus_controller_->AddObserver(this); @@ -303,9 +303,9 @@ return; gfx::Rect new_bounds(metrics.pixel_size); - root_->SetBounds(new_bounds); + root_->SetBounds(new_bounds, allocator_.GenerateId()); for (auto& pair : window_manager_display_root_map_) - pair.second->root()->SetBounds(new_bounds); + pair.second->root()->SetBounds(new_bounds, allocator_.GenerateId()); } ServerWindow* Display::GetActiveRootWindow() {
diff --git a/services/ui/ws/display.h b/services/ui/ws/display.h index 2fae94d..478f16a 100644 --- a/services/ui/ws/display.h +++ b/services/ui/ws/display.h
@@ -14,6 +14,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "cc/surfaces/local_surface_id_allocator.h" #include "services/ui/common/types.h" #include "services/ui/public/interfaces/window_manager_constants.mojom.h" #include "services/ui/public/interfaces/window_tree_host.mojom.h" @@ -202,6 +203,8 @@ ServerWindowTracker activation_parents_; + cc::LocalSurfaceIdAllocator allocator_; + WindowManagerDisplayRootMap window_manager_display_root_map_; DISALLOW_COPY_AND_ASSIGN(Display);
diff --git a/services/ui/ws/server_window.cc b/services/ui/ws/server_window.cc index 42bdcab..30d9116 100644 --- a/services/ui/ws/server_window.cc +++ b/services/ui/ws/server_window.cc
@@ -172,13 +172,16 @@ child->Reorder(children_.back(), mojom::OrderDirection::ABOVE); } -void ServerWindow::SetBounds(const gfx::Rect& bounds) { - if (bounds_ == bounds) +void ServerWindow::SetBounds( + const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { + if (bounds_ == bounds && current_local_surface_id_ == local_surface_id) return; - // TODO(fsamuel): figure out how will this work with CompositorFrames. - const gfx::Rect old_bounds = bounds_; + + current_local_surface_id_ = local_surface_id; + bounds_ = bounds; for (auto& observer : observers_) observer.OnWindowBoundsChanged(this, old_bounds, bounds);
diff --git a/services/ui/ws/server_window.h b/services/ui/ws/server_window.h index c600aa7..a8a9fdf 100644 --- a/services/ui/ws/server_window.h +++ b/services/ui/ws/server_window.h
@@ -74,6 +74,10 @@ const cc::FrameSinkId& frame_sink_id() const { return frame_sink_id_; } + const base::Optional<cc::LocalSurfaceId>& current_local_surface_id() const { + return current_local_surface_id_; + } + void Add(ServerWindow* child); void Remove(ServerWindow* child); void Reorder(ServerWindow* relative, mojom::OrderDirection diretion); @@ -83,7 +87,9 @@ const gfx::Rect& bounds() const { return bounds_; } // Sets the bounds. If the size changes this implicitly resets the client // area to fill the whole bounds. - void SetBounds(const gfx::Rect& bounds); + void SetBounds(const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id = + base::nullopt); const std::vector<gfx::Rect>& additional_client_areas() const { return additional_client_areas_; @@ -227,6 +233,8 @@ ServerWindowDelegate* delegate_; const WindowId id_; cc::FrameSinkId frame_sink_id_; + base::Optional<cc::LocalSurfaceId> current_local_surface_id_; + ServerWindow* parent_; Windows children_;
diff --git a/services/ui/ws/test_change_tracker.cc b/services/ui/ws/test_change_tracker.cc index eb393854..172c9b8 100644 --- a/services/ui/ws/test_change_tracker.cc +++ b/services/ui/ws/test_change_tracker.cc
@@ -60,9 +60,12 @@ case CHANGE_TYPE_NODE_BOUNDS_CHANGED: return base::StringPrintf( - "BoundsChanged window=%s old_bounds=%s new_bounds=%s", + "BoundsChanged window=%s old_bounds=%s new_bounds=%s " + "local_surface_id=%s", WindowIdToString(change.window_id).c_str(), - change.bounds.ToString().c_str(), change.bounds2.ToString().c_str()); + change.bounds.ToString().c_str(), change.bounds2.ToString().c_str(), + change.local_surface_id ? change.local_surface_id->ToString().c_str() + : "(none)"); case CHANGE_TYPE_NODE_HIERARCHY_CHANGED: return base::StringPrintf( @@ -249,14 +252,17 @@ AddChange(change); } -void TestChangeTracker::OnWindowBoundsChanged(Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) { +void TestChangeTracker::OnWindowBoundsChanged( + Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { Change change; change.type = CHANGE_TYPE_NODE_BOUNDS_CHANGED; change.window_id = window_id; change.bounds = old_bounds; change.bounds2 = new_bounds; + change.local_surface_id = local_surface_id; AddChange(change); }
diff --git a/services/ui/ws/test_change_tracker.h b/services/ui/ws/test_change_tracker.h index 7158f51..3421441e 100644 --- a/services/ui/ws/test_change_tracker.h +++ b/services/ui/ws/test_change_tracker.h
@@ -77,6 +77,7 @@ Id window_id3; gfx::Rect bounds; gfx::Rect bounds2; + base::Optional<cc::LocalSurfaceId> local_surface_id; int32_t event_action; bool matches_pointer_watcher; std::string embed_url; @@ -144,9 +145,11 @@ void OnCaptureChanged(Id new_capture_window_id, Id old_capture_window_id); void OnTransientWindowAdded(Id window_id, Id transient_window_id); void OnTransientWindowRemoved(Id window_id, Id transient_window_id); - void OnWindowBoundsChanged(Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds); + void OnWindowBoundsChanged( + Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id); void OnWindowHierarchyChanged(Id window_id, Id old_parent_id, Id new_parent_id,
diff --git a/services/ui/ws/test_utils.cc b/services/ui/ws/test_utils.cc index 23d10b7..d444e0c6 100644 --- a/services/ui/ws/test_utils.cc +++ b/services/ui/ws/test_utils.cc
@@ -312,11 +312,13 @@ tracker_.OnTopLevelCreated(change_id, std::move(data), drawn); } -void TestWindowTreeClient::OnWindowBoundsChanged(uint32_t window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) { +void TestWindowTreeClient::OnWindowBoundsChanged( + uint32_t window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { tracker_.OnWindowBoundsChanged(window, std::move(old_bounds), - std::move(new_bounds)); + std::move(new_bounds), local_surface_id); } void TestWindowTreeClient::OnClientAreaChanged( @@ -537,7 +539,7 @@ EXPECT_TRUE(wm_tree->NewWindow(embed_window_id, ServerWindow::Properties())); EXPECT_TRUE(wm_tree->SetWindowVisibility(embed_window_id, true)); EXPECT_TRUE(wm_tree->AddWindow(FirstRootId(wm_tree), embed_window_id)); - display_->root_window()->SetBounds(root_window_bounds); + display_->root_window()->SetBounds(root_window_bounds, base::nullopt); mojom::WindowTreeClientPtr client; mojom::WindowTreeClientRequest client_request(&client); ws_test_helper_.window_server_delegate()->last_client()->Bind( @@ -552,7 +554,7 @@ EXPECT_NE(tree1, wm_tree); WindowTreeTestApi(tree1).set_user_id(wm_tree->user_id()); - embed_window->SetBounds(window_bounds); + embed_window->SetBounds(window_bounds, base::nullopt); return embed_window; } @@ -575,7 +577,7 @@ tree1->GetDisplay(embed_window)->AddActivationParent(embed_window); child1->SetVisible(true); - child1->SetBounds(window_bounds); + child1->SetBounds(window_bounds, base::nullopt); TestWindowTreeClient* embed_client = ws_test_helper_.window_server_delegate()->last_client();
diff --git a/services/ui/ws/test_utils.h b/services/ui/ws/test_utils.h index 7e2cb3f..aa0c3ee5 100644 --- a/services/ui/ws/test_utils.h +++ b/services/ui/ws/test_utils.h
@@ -414,9 +414,11 @@ mojom::WindowDataPtr data, int64_t display_id, bool drawn) override; - void OnWindowBoundsChanged(uint32_t window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) override; + void OnWindowBoundsChanged( + uint32_t window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) override; void OnClientAreaChanged( uint32_t window_id, const gfx::Insets& new_client_area,
diff --git a/services/ui/ws/window_finder_unittest.cc b/services/ui/ws/window_finder_unittest.cc index 717dcd0..102057f 100644 --- a/services/ui/ws/window_finder_unittest.cc +++ b/services/ui/ws/window_finder_unittest.cc
@@ -20,17 +20,17 @@ mojom::EventTargetingPolicy::DESCENDANTS_ONLY); window_delegate.set_root_window(&root); root.SetVisible(true); - root.SetBounds(gfx::Rect(0, 0, 100, 100)); + root.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); ServerWindow child1(&window_delegate, WindowId(1, 3)); root.Add(&child1); child1.SetVisible(true); - child1.SetBounds(gfx::Rect(10, 10, 20, 20)); + child1.SetBounds(gfx::Rect(10, 10, 20, 20), base::nullopt); ServerWindow child2(&window_delegate, WindowId(1, 4)); root.Add(&child2); child2.SetVisible(true); - child2.SetBounds(gfx::Rect(15, 15, 20, 20)); + child2.SetBounds(gfx::Rect(15, 15, 20, 20), base::nullopt); EXPECT_EQ( &child2, @@ -56,12 +56,12 @@ ServerWindow root(&window_delegate, WindowId(1, 2)); window_delegate.set_root_window(&root); root.SetVisible(true); - root.SetBounds(gfx::Rect(0, 0, 100, 100)); + root.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); ServerWindow child1(&window_delegate, WindowId(1, 3)); root.Add(&child1); child1.SetVisible(true); - child1.SetBounds(gfx::Rect(10, 10, 20, 20)); + child1.SetBounds(gfx::Rect(10, 10, 20, 20), base::nullopt); DeepestWindow result = FindDeepestVisibleWindowForEvents(&root, gfx::Point(13, 14)); @@ -102,12 +102,12 @@ ServerWindow root(&window_delegate, WindowId(1, 2)); window_delegate.set_root_window(&root); root.SetVisible(true); - root.SetBounds(gfx::Rect(0, 0, 100, 100)); + root.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); ServerWindow child_with_mask(&window_delegate, WindowId(1, 4)); root.Add(&child_with_mask); child_with_mask.SetVisible(true); - child_with_mask.SetBounds(gfx::Rect(10, 10, 20, 20)); + child_with_mask.SetBounds(gfx::Rect(10, 10, 20, 20), base::nullopt); child_with_mask.SetHitTestMask(gfx::Rect(2, 2, 16, 16)); // Test a point inside the window but outside the mask. @@ -126,20 +126,20 @@ ServerWindow root(&window_delegate, WindowId(1, 2)); window_delegate.set_root_window(&root); root.SetVisible(true); - root.SetBounds(gfx::Rect(0, 0, 100, 100)); + root.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); // Create two windows, |child1| and |child2|. The two overlap but |child2| is // not a valid event target. ServerWindow child1(&window_delegate, WindowId(1, 3)); root.Add(&child1); child1.SetVisible(true); - child1.SetBounds(gfx::Rect(10, 10, 20, 20)); + child1.SetBounds(gfx::Rect(10, 10, 20, 20), base::nullopt); ServerWindow child2(&window_delegate, WindowId(1, 4)); root.Add(&child2); child2.set_event_targeting_policy(mojom::EventTargetingPolicy::NONE); child2.SetVisible(true); - child2.SetBounds(gfx::Rect(15, 15, 20, 20)); + child2.SetBounds(gfx::Rect(15, 15, 20, 20), base::nullopt); // 16, 16 is over |child2| and |child1|, but as |child2| isn't a valid event // target |child1| should be picked. @@ -153,7 +153,7 @@ ServerWindow root(&window_delegate, WindowId(1, 2)); window_delegate.set_root_window(&root); root.SetVisible(true); - root.SetBounds(gfx::Rect(0, 0, 100, 100)); + root.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); // Create two windows, |child| and |child_child|; |child| is a child of the // root and |child_child| and child of |child|. All share the same size with @@ -161,13 +161,13 @@ ServerWindow child(&window_delegate, WindowId(1, 3)); root.Add(&child); child.SetVisible(true); - child.SetBounds(gfx::Rect(0, 0, 100, 100)); + child.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); child.SetClientArea(gfx::Insets(2, 3, 4, 5), std::vector<gfx::Rect>()); ServerWindow child_child(&window_delegate, WindowId(1, 4)); child.Add(&child_child); child_child.SetVisible(true); - child_child.SetBounds(gfx::Rect(0, 0, 100, 100)); + child_child.SetBounds(gfx::Rect(0, 0, 100, 100), base::nullopt); // |child| was should be returned as the event is over the non-client area. EXPECT_EQ(&child,
diff --git a/services/ui/ws/window_manager_display_root.cc b/services/ui/ws/window_manager_display_root.cc index 7248714..5a933de 100644 --- a/services/ui/ws/window_manager_display_root.cc +++ b/services/ui/ws/window_manager_display_root.cc
@@ -31,7 +31,8 @@ // Our root is always a child of the Display's root. Do this // before the WindowTree has been created so that the client doesn't get // notified of the add, bounds change and visibility change. - root_->SetBounds(gfx::Rect(display->root_window()->bounds().size())); + root_->SetBounds(gfx::Rect(display->root_window()->bounds().size()), + allocator_.GenerateId()); root_->SetVisible(true); display->root_window()->Add(root_.get()); }
diff --git a/services/ui/ws/window_manager_display_root.h b/services/ui/ws/window_manager_display_root.h index 2ba39a0..1eacb3a 100644 --- a/services/ui/ws/window_manager_display_root.h +++ b/services/ui/ws/window_manager_display_root.h
@@ -10,6 +10,7 @@ #include <memory> #include "base/macros.h" +#include "cc/surfaces/local_surface_id_allocator.h" namespace ui { namespace ws { @@ -49,6 +50,7 @@ // the root ServerWindow of the Display. std::unique_ptr<ServerWindow> root_; WindowManagerState* window_manager_state_ = nullptr; + cc::LocalSurfaceIdAllocator allocator_; DISALLOW_COPY_AND_ASSIGN(WindowManagerDisplayRoot); };
diff --git a/services/ui/ws/window_server.cc b/services/ui/ws/window_server.cc index 8bcba9b..a1a6718 100644 --- a/services/ui/ws/window_server.cc +++ b/services/ui/ws/window_server.cc
@@ -346,12 +346,15 @@ change.client_change_id, window); } -void WindowServer::ProcessWindowBoundsChanged(const ServerWindow* window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) { +void WindowServer::ProcessWindowBoundsChanged( + const ServerWindow* window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { for (auto& pair : tree_map_) { pair.second->ProcessWindowBoundsChanged(window, old_bounds, new_bounds, - IsOperationSource(pair.first)); + IsOperationSource(pair.first), + local_surface_id); } } @@ -686,7 +689,8 @@ if (in_destructor_) return; - ProcessWindowBoundsChanged(window, old_bounds, new_bounds); + ProcessWindowBoundsChanged(window, old_bounds, new_bounds, + window->current_local_surface_id()); if (!window->parent()) return;
diff --git a/services/ui/ws/window_server.h b/services/ui/ws/window_server.h index fce14fa..2949e88c 100644 --- a/services/ui/ws/window_server.h +++ b/services/ui/ws/window_server.h
@@ -167,9 +167,11 @@ // These functions trivially delegate to all WindowTrees, which in // term notify their clients. - void ProcessWindowBoundsChanged(const ServerWindow* window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds); + void ProcessWindowBoundsChanged( + const ServerWindow* window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id); void ProcessClientAreaChanged( const ServerWindow* window, const gfx::Insets& new_client_area,
diff --git a/services/ui/ws/window_tree.cc b/services/ui/ws/window_tree.cc index f642e1f..ebb5bf6 100644 --- a/services/ui/ws/window_tree.cc +++ b/services/ui/ws/window_tree.cc
@@ -548,14 +548,17 @@ } } -void WindowTree::ProcessWindowBoundsChanged(const ServerWindow* window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds, - bool originated_change) { +void WindowTree::ProcessWindowBoundsChanged( + const ServerWindow* window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + bool originated_change, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { ClientWindowId client_window_id; if (originated_change || !IsWindowKnown(window, &client_window_id)) return; - client()->OnWindowBoundsChanged(client_window_id.id, old_bounds, new_bounds); + client()->OnWindowBoundsChanged(client_window_id.id, old_bounds, new_bounds, + local_surface_id); } void WindowTree::ProcessClientAreaChanged( @@ -1336,9 +1339,11 @@ pointer_watcher_want_moves_ = false; } -void WindowTree::SetWindowBounds(uint32_t change_id, - Id window_id, - const gfx::Rect& bounds) { +void WindowTree::SetWindowBounds( + uint32_t change_id, + Id window_id, + const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { ServerWindow* window = GetWindowByClientId(ClientWindowId(window_id)); if (window && ShouldRouteToWindowManager(window)) { const uint32_t wm_change_id = @@ -1362,7 +1367,7 @@ bool success = window && access_policy_->CanSetWindowBounds(window); if (success) { Operation op(this, window_server_, OperationType::SET_WINDOW_BOUNDS); - window->SetBounds(bounds); + window->SetBounds(bounds, local_surface_id); } client()->OnChangeCompleted(change_id, success); } @@ -1974,7 +1979,8 @@ if (!response && window) { // Our move loop didn't succeed, which means that we must restore the // original bounds of the window. - window->SetBounds(window_server_->GetCurrentMoveLoopRevertBounds()); + window->SetBounds(window_server_->GetCurrentMoveLoopRevertBounds(), + base::nullopt); } window_server_->EndMoveLoop();
diff --git a/services/ui/ws/window_tree.h b/services/ui/ws/window_tree.h index 6fc0a96..127ec8e 100644 --- a/services/ui/ws/window_tree.h +++ b/services/ui/ws/window_tree.h
@@ -211,10 +211,12 @@ // The following methods are invoked after the corresponding change has been // processed. They do the appropriate bookkeeping and update the client as // necessary. - void ProcessWindowBoundsChanged(const ServerWindow* window, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds, - bool originated_change); + void ProcessWindowBoundsChanged( + const ServerWindow* window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + bool originated_change, + const base::Optional<cc::LocalSurfaceId>& local_surface_id); void ProcessClientAreaChanged( const ServerWindow* window, const gfx::Insets& new_client_area, @@ -402,9 +404,11 @@ void ReleaseCapture(uint32_t change_id, Id window_id) override; void StartPointerWatcher(bool want_moves) override; void StopPointerWatcher() override; - void SetWindowBounds(uint32_t change_id, - Id window_id, - const gfx::Rect& bounds) override; + void SetWindowBounds( + uint32_t change_id, + Id window_id, + const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) override; void SetWindowVisibility(uint32_t change_id, Id window_id, bool visible) override;
diff --git a/services/ui/ws/window_tree_client_unittest.cc b/services/ui/ws/window_tree_client_unittest.cc index dbdbc4b..edb216a 100644 --- a/services/ui/ws/window_tree_client_unittest.cc +++ b/services/ui/ws/window_tree_client_unittest.cc
@@ -11,6 +11,7 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" +#include "cc/surfaces/local_surface_id_allocator.h" #include "mojo/public/cpp/bindings/associated_binding.h" #include "mojo/public/cpp/bindings/binding.h" #include "services/service_manager/public/cpp/interface_factory.h" @@ -302,15 +303,18 @@ bool drawn) override { tracker()->OnTopLevelCreated(change_id, std::move(data), drawn); } - void OnWindowBoundsChanged(Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) override { + void OnWindowBoundsChanged( + Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { // The bounds of the root may change during startup on Android at random // times. As this doesn't matter, and shouldn't impact test exepctations, // it is ignored. if (window_id == root_window_id_ && !track_root_bounds_changes_) return; - tracker()->OnWindowBoundsChanged(window_id, old_bounds, new_bounds); + tracker()->OnWindowBoundsChanged(window_id, old_bounds, new_bounds, + local_surface_id); } void OnClientAreaChanged( uint32_t window_id, @@ -1321,17 +1325,21 @@ wt_client2_->set_track_root_bounds_changes(true); - wt1()->SetWindowBounds(10, window_1_1, gfx::Rect(0, 0, 100, 100)); + cc::LocalSurfaceIdAllocator allocator; + cc::LocalSurfaceId local_surface_id = allocator.GenerateId(); + wt1()->SetWindowBounds(10, window_1_1, gfx::Rect(0, 0, 100, 100), + local_surface_id); ASSERT_TRUE(wt_client1()->WaitForChangeCompleted(10)); wt_client2_->WaitForChangeCount(1); EXPECT_EQ("BoundsChanged window=" + IdToString(window_1_1) + - " old_bounds=0,0 0x0 new_bounds=0,0 100x100", + " old_bounds=0,0 0x0 new_bounds=0,0 100x100 local_surface_id=" + + local_surface_id.ToString(), SingleChangeToDescription(*changes2())); // Should not be possible to change the bounds of a window created by another // client. - wt2()->SetWindowBounds(11, window_1_1, gfx::Rect(0, 0, 0, 0)); + wt2()->SetWindowBounds(11, window_1_1, gfx::Rect(0, 0, 0, 0), base::nullopt); ASSERT_FALSE(wt_client2()->WaitForChangeCompleted(11)); } @@ -2068,12 +2076,14 @@ changes1()->clear(); // Change the bounds of window_2_101 and make sure server gets it. - wt2()->SetWindowBounds(11, window_2_101, gfx::Rect(1, 2, 3, 4)); + wt2()->SetWindowBounds(11, window_2_101, gfx::Rect(1, 2, 3, 4), + base::nullopt); ASSERT_TRUE(wt_client2()->WaitForChangeCompleted(11)); wt_client1()->WaitForChangeCount(1); - EXPECT_EQ("BoundsChanged window=" + IdToString(window_2_101_in_ws1) + - " old_bounds=0,0 0x0 new_bounds=1,2 3x4", - SingleChangeToDescription(*changes1())); + EXPECT_EQ( + "BoundsChanged window=" + IdToString(window_2_101_in_ws1) + + " old_bounds=0,0 0x0 new_bounds=1,2 3x4 local_surface_id=(none)", + SingleChangeToDescription(*changes1())); changes2()->clear(); // Remove 2_101 from wm, client1 should see the change.
diff --git a/skia/ext/raster_handle_allocator_win.cc b/skia/ext/raster_handle_allocator_win.cc index 22d9bf4..fed059f 100644 --- a/skia/ext/raster_handle_allocator_win.cc +++ b/skia/ext/raster_handle_allocator_win.cc
@@ -19,23 +19,24 @@ namespace { +struct HDCContextRec { + HDC hdc_; + HBITMAP prev_bitmap_; +}; + static void DeleteHDCCallback(void*, void* context) { DCHECK_NE(context, nullptr); - HDC hdc = static_cast<HDC>(context); + const HDCContextRec* rec = static_cast<const HDCContextRec*>(context); - // We must get this before we call RestoreDC, as that will drop hbitmap and - // reselect the original/default bitmap. - HGDIOBJ hbitmap = GetCurrentObject(hdc, OBJ_BITMAP); - DCHECK_NE(hbitmap, nullptr); - - bool success = RestoreDC(hdc, -1); // effectly performs the deselect of hbitmap + // Must select back in the old bitmap before we delete the hdc, and so we can + // recover the new_bitmap that we allocated, so we can delete it. + HBITMAP new_bitmap = + static_cast<HBITMAP>(SelectObject(rec->hdc_, rec->prev_bitmap_)); + bool success = DeleteObject(new_bitmap); DCHECK(success); - - // Now we are the only owner, so we can delete our bitmap - success = DeleteObject(hbitmap); + success = DeleteDC(rec->hdc_); DCHECK(success); - success = DeleteDC(hdc); - DCHECK(success); + delete rec; } // Allocate the layer and fill in the fields for the Rec, or return false @@ -47,9 +48,9 @@ bool do_clear, SkRasterHandleAllocator::Rec* rec) { void* pixels; - HBITMAP hbitmap = + HBITMAP new_bitmap = skia::CreateHBitmap(width, height, is_opaque, shared_section, &pixels); - if (!hbitmap) { + if (!new_bitmap) { LOG(ERROR) << "CreateHBitmap failed"; return false; } @@ -60,21 +61,16 @@ HDC hdc = CreateCompatibleDC(nullptr); if (!hdc) { - DeleteObject(hbitmap); + DeleteObject(new_bitmap); return false; } SetGraphicsMode(hdc, GM_ADVANCED); - int saveIndex = SaveDC(hdc); // so we can Restore in the delete callback - DCHECK_NE(saveIndex, 0); - - // Be sure to select *after* we called SaveDC. - // Because we're using save/restore, we don't need to explicitly track the - // returned "previous" value. - SelectObject(hdc, hbitmap); + HBITMAP prev_bitmap = static_cast<HBITMAP>(SelectObject(hdc, new_bitmap)); + DCHECK(prev_bitmap); rec->fReleaseProc = DeleteHDCCallback; - rec->fReleaseCtx = hdc; + rec->fReleaseCtx = new HDCContextRec{hdc, prev_bitmap}; rec->fPixels = pixels; rec->fRowBytes = row_bytes; rec->fHandle = hdc;
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index c7e419c..3289732 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -1093,8 +1093,8 @@ ], "experiments": [ { - "name": "Enabled", - "enable_features": [ + "name": "Control", + "disable_features": [ "LazyParseCSS" ] }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png index d41d9808..dd9a170 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha-expected.png b/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha-expected.png index 554d248e..a099959 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha2-expected.png b/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha2-expected.png index 3c3aae5..aa216192 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha2-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/border-mixed-alpha2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png index 04bb653..b5fcef5 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png index 27a6262..94e6ced5 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png index efb5edda..d384b5a 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png index edc0f1c..991543c0 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted05-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted05-expected.png index 7b2eb48..df892d3 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted05-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted05-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png index a40c1f4..29a6b49f 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png index 901c2dd..ebfb8bb1 100644 --- a/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png +++ b/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/table-cell-vertical-overflow-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/table-cell-vertical-overflow-expected.png new file mode 100644 index 0000000..87e33894 --- /dev/null +++ b/third_party/WebKit/LayoutTests/paint/invalidation/table-cell-vertical-overflow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css1/box_properties/border_style-expected.png index ca8e6a114..eb3fb83 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css1/box_properties/border_style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png index ec92b614..c550e031c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t0805-c5517-brdr-s-00-c-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png index a1c83df..b16e102 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-04-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png index 2e05ca1..585c6b7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-14-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png index 6ef24e9d..0c11227 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-24-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png index 0d3514d0..c91ea61 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-34-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png index 2e979d7..857f30e2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-41-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png index 4ce085c..ca26a4b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-42-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png index 9ad9fa85..b22f0cac 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-43-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png index 6c4f16e..cfdb230 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-44-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png index 11a2c4e..6a913877 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-45-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png index 58888e5..d2bfa3be 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-46-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png index 8f3499e..a1b7706e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-47-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png index 1cb892eb..00d144d2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-48-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png index 92868be..158993e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-49-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png index 8e0f717..2d97670 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-54-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png index 23d6644..eb59afd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-64-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png index 1ace87a0..061322e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-74-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png index 26cadcdd..d1de84d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-84-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png index 0ccb7d7..06e9e90 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/css2.1/t170602-bdr-conflct-w-94-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha-expected.png index 31bc9f4..1c4bf784 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha2-expected.png index 3fe1f68f..2c1bbc1 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-mixed-alpha2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png index 70aa9d769..30a76bf 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-block-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-block-expected.png index d4a8ff3..f45948a7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-block-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-block-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-inline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-inline-expected.png index 46c6f7e..fbae8eba3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png index 187631e..a76e50c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png index c71abde..2b758aa4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png index 4c58378..880ccd3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/css3-text/css3-text-decoration/text-decoration-style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/layers/opacity-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/layers/opacity-outline-expected.png index 3c77136..ebea94f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/layers/opacity-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/layers/opacity-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png index c2c4907..5b50328 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png index cac3666..4f2088e9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png index c349ed9..7d8d82e7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png index 148c8fa6e..1ce32b1a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png index e388fc87..73a88d78 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png index 3a332b2..4e418a0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 483126f..8a45686 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png index 67afd0d..1b31819 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png index dee4155..d3612ae 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 6b00a3ef..8317788 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png index e91838df..6a9675b1 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png index f75f54e8..b095342 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png index 23628318..2910998 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 48b0d21..506c540 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png index 77de645..4cb982cf 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png index 5c885906..16f29cae 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png index 3cbdea6..9efc8dc 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png index e078d4a..346091d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png index d366ef6..c2f90a5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png index f3dd6a45..f54398b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png index f8b0aa62..e342e671 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png index f8cf68f4..a42a5ad 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index e9acf9f..ca43f93 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png index 071f73a..f8d4445c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png index 3da3ad22..2cb5468 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png index 889b297a..003e000 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png index 2e3e7b1b..5cb255d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index d71a473..16806d00a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png index 4559904..a85b30c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 0f806a0..aaac313 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png index edd618c4..a41d6f7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png index 654a55f4..6fd8573 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 1a5657d..1124fc8 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png index 68191ed..4d19843 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 2e2a956..a79f8dd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png index cf9e768..64fc2c6d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png index e2d4b97..2709293f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 49c6f17..b989e6aa0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png index 9dce23d..1134642 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 9137e4c9..97e6af9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png index e6c5275..4b033b62 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png index ed56511..13746729 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png index fadc2863..f25c3842 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index 5ea28b0..195cb05a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index e87a6e0f..e910926 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/layer-child-outline-expected.png index 03125f8..ebc25c2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png index 305a10f..96230150 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/no-inherited-dashed-stroke-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 563bc900..b6e64adc 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png index 03125f8..ebc25c2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/css1/box_properties/border_style-expected.png new file mode 100644 index 0000000..eb3fb83 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png index d103c556..0d2bf63 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 4bbfb61..265f173 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png index c5b225de..73b2cb3e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png index 1b2bf4d8..875000ef 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png index 991ba5bf..19ef114 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png index c9947f8..1524657 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index c91a474..54703d0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png index d2da6a7a..c86255b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png index 97c2c350..f301a7c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index b636956..1b91f95c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png index acd701d9..c718c94 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png index ec08b8d..683ac556 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png index b6f500e..1e3c368 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 704ad035..1af82603 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png index 653682f..19884ac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png index 16a66be..5d5273b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png index 5785c54..9e4950d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png index c756d37..aeafadd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png index 068afc0..b2e2f876 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png index aa585755..16f7de5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png index 57143aab..6e91128b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png index 33e1bec..b107d0c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index a034446..b7be808 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png index d1c2b480..03dcdaa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png index 8986885..93c5578d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png index 1633403..ab214f3b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png index 52bfc05d..30b3b4a3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 1fb1395..c66265c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png index 118fafe9..656c08e8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 867aee1..52df295c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png index 104af65..017fb331 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png index b9f12c3..0dfd327 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 426fe1e..c2aa3d8c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png index 8c76cfd5..8c0f1cd0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 17be6e4..3760da9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png index c431008b..3907118 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png index 2ea6701b..04d94cd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 5b1421d..1fae286 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png index 36012dd..4f2d1d8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index a6f3e52..8b103e5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png index dc795f3..c36d7d9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index ef8ce75..419f766 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/mojo-loading/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/mojo-loading/css1/box_properties/border_style-expected.png new file mode 100644 index 0000000..0d2bf63 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/mojo-loading/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusAllStylesAllCorners-expected.png new file mode 100644 index 0000000..78310ca --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed01-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed01-expected.png new file mode 100644 index 0000000..cfc557f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed02-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed02-expected.png new file mode 100644 index 0000000..24f0ce3a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed03-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed03-expected.png new file mode 100644 index 0000000..dd29cce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed04-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed04-expected.png new file mode 100644 index 0000000..50f367a5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed05-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed05-expected.png new file mode 100644 index 0000000..d9ac765 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed05-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed06-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed06-expected.png new file mode 100644 index 0000000..06e8f66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDashed06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted01-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted01-expected.png new file mode 100644 index 0000000..e60883c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted04-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted04-expected.png new file mode 100644 index 0000000..ed9ed195 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/borders/borderRadiusDotted04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-expected.png new file mode 100644 index 0000000..ee304d5f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-subpixel-expected.png new file mode 100644 index 0000000..d9ce72b3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png new file mode 100644 index 0000000..dade1ad4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png new file mode 100644 index 0000000..3741297 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/css1/box_properties/border_style-expected.png index 3544bd9e..704158d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/css1/box_properties/border_style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/overflow/overflow-with-local-background-attachment-expected.png index 098ae866..a686ade 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 1045a33..8c8d31f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-expected.png index ed3597ba..474fc6c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-collapsed-border-expected.png index bf67ce4..2b368ea3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-expected.png index b7c44dd..11b3cfd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 20a416f..9937402 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-expected.png index 3eed2112..d4915ae 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-expected.png index 6654227..0db2fcd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-collapsed-border-expected.png index 67b1987..958fe07 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-expected.png index c7d8515..cf72fcd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index a2bd2bd0..5f96ab8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-expected.png index 7e2fbee8..68195dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_layers-hide-expected.png index 4b5327e..48c1130 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-collapsed-border-expected.png index 553c171..c7be85c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-expected.png index 7a7810d..c3ab278 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-collapsed-border-expected.png index f460de8..9b5bae3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-expected.png index 85c573b..713524e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index e49cf75..14ffce5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-expected.png index 844b07dd..5293e7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-collapsed-border-expected.png index a9a6454..9aa02d8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-expected.png index 29529b57..31af6bb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 1e5123b1..ce7a74c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-expected.png index 894d3ef..0b90384f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 094beb62..05c4400 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-expected.png index 06d918c..95b4b83 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-collapsed-border-expected.png index 4398428..529f735 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 6cffd7e..ae35c90 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-expected.png index 2c309b9a..338e328 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 6879c80..87d38e45 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-expected.png index 7e95424..71f83030 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-expected.png index 39bdb26..d31b08f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 3b8d73a..a04f6494 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-expected.png index c59ff9b..100c14a3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 9aa9152..bcaf9f0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-expected.png index 40dac59..56906a91 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index d2fec69..4d22418 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/mojo-loading/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/mojo-loading/css1/box_properties/border_style-expected.png new file mode 100644 index 0000000..704158d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/mojo-loading/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusAllStylesAllCorners-expected.png new file mode 100644 index 0000000..78310ca --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed01-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed01-expected.png new file mode 100644 index 0000000..cfc557f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed02-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed02-expected.png new file mode 100644 index 0000000..24f0ce3a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed03-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed03-expected.png new file mode 100644 index 0000000..dd29cce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed04-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed04-expected.png new file mode 100644 index 0000000..50f367a5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed05-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed05-expected.png new file mode 100644 index 0000000..d9ac765 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed05-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed06-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed06-expected.png new file mode 100644 index 0000000..06e8f66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDashed06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted01-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted01-expected.png new file mode 100644 index 0000000..e60883c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted04-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted04-expected.png new file mode 100644 index 0000000..ed9ed195 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/borders/borderRadiusDotted04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-expected.png new file mode 100644 index 0000000..ee304d5f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-subpixel-expected.png new file mode 100644 index 0000000..d9ce72b3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png new file mode 100644 index 0000000..dade1ad4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png new file mode 100644 index 0000000..3741297 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css1/box_properties/border_style-expected.png index 41956c2..ade8054 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css1/box_properties/border_style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png index 74059e1..68d490b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t0805-c5517-brdr-s-00-c-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png index 9876199..ec4533e5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-04-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png index 76a2716..f103a27 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-14-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png index 398932a..59bf8d7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-24-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png index c4b63ac..609bb48 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-34-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png index 2301268f..251af43 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-41-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png index c8a85f0..dcb4a4c1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-42-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png index 429dc82..21c1b3e2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-43-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png index 830ce4d..e29d9ac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-44-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png index 2b29906..abb0165 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-45-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png index d1e5a01..f28aef4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-46-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png index 25a7c53..ab7e7b8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-47-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png index 11698b4..8437d7b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-48-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png index 68e64d59..e508e18a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-49-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png index 019a088..c816650 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-54-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png index 8ccd571..d4665c7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-64-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png index 53d4524..2b09780 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-74-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png index aeb8ac49..614eaa0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-84-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png index 1e1e7a1a..f8f7d9b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/css2.1/t170602-bdr-conflct-w-94-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png index 039dba9..c8700a7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-block-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-block-expected.png index 5f9f515..e2ad331 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-block-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-block-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-inline-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-inline-expected.png index 62db17a2..795df42c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/layers/opacity-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/layers/opacity-outline-expected.png index 2c5f1a9..713e8503 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/layers/opacity-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/layers/opacity-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png index c68d1d47..a7e124c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png index fab80b5..c5bc6c2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png index de54438f..d6a6512 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png index b86ae61..02d2b110 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png index 7dcb611..9f1ee845 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png index eaf2d2e1..77fdce6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 4285920..975b8d03 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png index 59a5db8e..65acf813 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png index c39693a..202652bb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 4d33c01..523fe9e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png index 2880f09..fe0322f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png index ed07ff1..4891242 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png index 620b0cf..261f23e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 8a2cdd5..7df742e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png index 1b9db53..d8eb459 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png index 64a186f..abf36394 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png index 2b8e2b3..b91877f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png index abe4753..a9b0063 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png index cd87e477..19c3ffde 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png index a882d703..f242a6c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png index f64d8ea..5e37186d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png index 2c543f9f..445938af4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index 95aeea4..db47f1bc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png index ef1502c..545922f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png index 79e773e..7cb9d4c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png index fe96405..5a6c7f31 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png index 09640fe8..782e5e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index cbde8c2..0c5d6965 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png index 1c0ce1e..35d05f7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index c2faf54..7784140e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png index 73c740d..463591e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png index 4cf080d2c..186b07b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 6b9143a..9a151a5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png index 543042c..1d4af9b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 81456061..b7f45d0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png index 7cec1d8..aa3ac26 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png index 024b62f..96f9663 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png index b4aa2f4..bd5aecd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png index 7a75624..f258886 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index d8ae2f6..f25bdad 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png index 89fca61..cea8c892 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png index ba5b13d8..45823dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png index 5553778..4596775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index f6f7dbf4..9483302 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/layer-child-outline-expected.png index 88e00e59..d15a3d63 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table-cell-vertical-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table-cell-vertical-overflow-expected.png deleted file mode 100644 index fc96e112..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table-cell-vertical-overflow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png index db05196..ed297e6b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/no-inherited-dashed-stroke-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index a62c20d..20d9f95 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png index 88e00e59..d15a3d63 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/css1/box_properties/border_style-expected.png new file mode 100644 index 0000000..ade8054 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/win/css1/box_properties/border_style-expected.png index 3cec260..c7145a3 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css1/box_properties/border_style-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png index 3cca8f3..665b34b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t0805-c5517-brdr-s-00-c-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png index 44fb330..a9c62f8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-04-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png index e80b0a6..f8ed37a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-14-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png index 2465f3c..7644f56 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-24-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png index 9d652f5..b28f5667 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-34-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png index f51fa31..a5f2827b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-41-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png index 1c66a94..3982111 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-42-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png index 6348ffa..7a2479c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-43-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png index b0c83210..dd40861 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-44-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png index 78c81c3d..6504a56 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-45-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png index 1eed2b5..d6867d49 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-46-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png index 5e6b96a..fa9eaeac 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-47-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png index 66357e9c..ca2613b0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-48-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png index 6cfdf89..e9abae3b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-49-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png index cddb39e..31bcac2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-54-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png index f918cc1..d3859b12 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-64-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png index 335e7bf..a10669e 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-74-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png index 839fc2f..030b765 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-84-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png index 45ddea16..c6f18a0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/css2.1/t170602-bdr-conflct-w-94-d-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png index 9f61ecb..abfe4f76 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusAllStylesAllCorners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed01-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed01-expected.png new file mode 100644 index 0000000..cfc557f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed02-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed02-expected.png new file mode 100644 index 0000000..24f0ce3a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed03-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed03-expected.png new file mode 100644 index 0000000..dd29cce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed04-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed04-expected.png new file mode 100644 index 0000000..50f367a5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed05-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed05-expected.png new file mode 100644 index 0000000..d9ac765 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed05-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed06-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed06-expected.png new file mode 100644 index 0000000..06e8f66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDashed06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted01-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted01-expected.png new file mode 100644 index 0000000..e60883c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted04-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted04-expected.png new file mode 100644 index 0000000..ed9ed195 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/borderRadiusDotted04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-block-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-block-expected.png index d70a664b..c787adac 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-block-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-block-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-inline-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-inline-expected.png index 52d1931..8bcd321 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-inline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/outline-alpha-inline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png index 550ca8cc..d127e00 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png index c45040a..251b561 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/layers/opacity-outline-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/layers/opacity-outline-expected.png index 27064d7..aa2fa4d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/layers/opacity-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/layers/opacity-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png index 7092ff5..ffb1dc0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png index 09c81c7..a1d0ee97 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png index c0855d9..a5c1f0c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index 0d770620..11af621 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index 4afe4e8..858e02d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/layer-child-outline-expected.png index c98b5433..7344b8d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/table-cell-vertical-overflow-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/table-cell-vertical-overflow-expected.png deleted file mode 100644 index 870cfc83..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/table-cell-vertical-overflow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png index 42913617..e22ab81 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/no-inherited-dashed-stroke-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 20645fd9..a3f7fea 100644 --- a/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png index c98b5433..7344b8d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/disable-spinvalidation/paint/invalidation/layer-child-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/css1/box_properties/border_style-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/css1/box_properties/border_style-expected.png new file mode 100644 index 0000000..c7145a3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/css1/box_properties/border_style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png new file mode 100644 index 0000000..4dda4ab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-styles-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 6e9e165..abe417d 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp index 1f40c6b..c889703 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.cpp
@@ -40,6 +40,7 @@ #include "core/dom/Document.h" #include "core/dom/ExecutionContext.h" #include "core/frame/LocalFrame.h" +#include "core/frame/UseCounter.h" #include "core/workers/WorkerGlobalScope.h" #include "core/workers/WorkerThread.h" #include "platform/instrumentation/tracing/TraceEvent.h" @@ -52,9 +53,13 @@ const Vector<ScriptValue>& arguments) { ASSERT(handler.isFunction()); if (!scriptState->world().isWorkerWorld()) { - DCHECK(BindingSecurity::shouldAllowAccessToFrame( - enteredDOMWindow(scriptState->isolate()), toDocument(target)->frame(), - BindingSecurity::ErrorReportOption::DoNotReport)); + if (!BindingSecurity::shouldAllowAccessToFrame( + enteredOrMicrotaskDOMWindow(scriptState->isolate()), + toDocument(target)->frame(), + BindingSecurity::ErrorReportOption::DoNotReport)) { + UseCounter::count(target, UseCounter::ScheduledActionIgnored); + return new ScheduledAction(scriptState); + } } return new ScheduledAction(scriptState, handler, arguments); } @@ -63,9 +68,13 @@ ExecutionContext* target, const String& handler) { if (!scriptState->world().isWorkerWorld()) { - DCHECK(BindingSecurity::shouldAllowAccessToFrame( - enteredDOMWindow(scriptState->isolate()), toDocument(target)->frame(), - BindingSecurity::ErrorReportOption::DoNotReport)); + if (!BindingSecurity::shouldAllowAccessToFrame( + enteredOrMicrotaskDOMWindow(scriptState->isolate()), + toDocument(target)->frame(), + BindingSecurity::ErrorReportOption::DoNotReport)) { + UseCounter::count(target, UseCounter::ScheduledActionIgnored); + return new ScheduledAction(scriptState); + } } return new ScheduledAction(scriptState, handler); } @@ -124,6 +133,11 @@ m_info(scriptState->isolate()), m_code(code, KURL()) {} +ScheduledAction::ScheduledAction(ScriptState* scriptState) + : m_scriptState(scriptState), + m_info(scriptState->isolate()), + m_code(String(), KURL()) {} + void ScheduledAction::execute(LocalFrame* frame) { if (!m_scriptState->contextIsValid()) { DVLOG(1) << "ScheduledAction::execute " << this << ": context is empty";
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h index f5385b3..13656a6 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h +++ b/third_party/WebKit/Source/bindings/core/v8/ScheduledAction.h
@@ -71,6 +71,9 @@ const Vector<ScriptValue>& arguments); ScheduledAction(ScriptState*, const String& handler); + // Creates an empty ScheduledAction. + explicit ScheduledAction(ScriptState*); + void execute(LocalFrame*); void execute(WorkerGlobalScope*); void createLocalHandlesForArgs(Vector<v8::Local<v8::Value>>* handles);
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp index 0ccf6f2..fb93c17 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/V8Binding.cpp
@@ -733,13 +733,21 @@ // // TODO(haraken): It's nasty to return a current window from // enteredDOMWindow. All call sites should be updated so that it works even - // if it doesn't have an entered window. + // if it doesn't have an entered window. Consider using + // enteredOrMicrotaskDOMWindow everywhere. window = currentDOMWindow(isolate); ASSERT(window); } return window; } +LocalDOMWindow* enteredOrMicrotaskDOMWindow(v8::Isolate* isolate) { + LocalDOMWindow* window = + toLocalDOMWindow(toDOMWindow(isolate->GetEnteredOrMicrotaskContext())); + DCHECK(window); + return window; +} + LocalDOMWindow* currentDOMWindow(v8::Isolate* isolate) { return toLocalDOMWindow(toDOMWindow(isolate->GetCurrentContext())); }
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Binding.h b/third_party/WebKit/Source/bindings/core/v8/V8Binding.h index 1df7fae..eccefd0 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8Binding.h +++ b/third_party/WebKit/Source/bindings/core/v8/V8Binding.h
@@ -997,6 +997,9 @@ CORE_EXPORT DOMWindow* toDOMWindow(v8::Isolate*, v8::Local<v8::Value>); DOMWindow* toDOMWindow(v8::Local<v8::Context>); LocalDOMWindow* enteredDOMWindow(v8::Isolate*); +// Returns the last entered context, or the context of the currently running +// microtask if no entered context is higher up on the stack. +LocalDOMWindow* enteredOrMicrotaskDOMWindow(v8::Isolate*); CORE_EXPORT LocalDOMWindow* currentDOMWindow(v8::Isolate*); CORE_EXPORT ExecutionContext* toExecutionContext(v8::Local<v8::Context>); CORE_EXPORT void registerToExecutionContextForModules(
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h index d00df541..97f324bb 100644 --- a/third_party/WebKit/Source/core/frame/UseCounter.h +++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -1476,6 +1476,7 @@ ScrollByKeyboardSpacebarKey = 1846, ScrollByTouch = 1847, ScrollByWheel = 1848, + ScheduledActionIgnored = 1849, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp b/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp index ed9afd7b..24c798e 100644 --- a/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp +++ b/third_party/WebKit/Source/core/html/forms/RadioInputType.cpp
@@ -112,13 +112,13 @@ // We can only stay within the form's children if the form hasn't been demoted // to a leaf because of malformed HTML. - HTMLInputElement* inputElement = findNextFocusableRadioButtonInGroup( - toHTMLInputElement(&element()), forward); + HTMLInputElement* inputElement = + findNextFocusableRadioButtonInGroup(&element(), forward); if (!inputElement) { // Traverse in reverse direction till last or first radio button forward = !(forward); - HTMLInputElement* nextInputElement = findNextFocusableRadioButtonInGroup( - toHTMLInputElement(&element()), forward); + HTMLInputElement* nextInputElement = + findNextFocusableRadioButtonInGroup(&element(), forward); while (nextInputElement) { inputElement = nextInputElement; nextInputElement =
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp index 8d10bb36..3308fa3 100644 --- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp +++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp
@@ -976,7 +976,7 @@ return; case BorderStyleDotted: case BorderStyleDashed: { - drawDashedDottedBoxSideFromPath(graphicsContext, borderPath, thickness, + drawDashedDottedBoxSideFromPath(graphicsContext, borderRect, thickness, drawThickness, color, borderStyle); return; } @@ -1011,18 +1011,34 @@ void BoxBorderPainter::drawDashedDottedBoxSideFromPath( GraphicsContext& graphicsContext, - const Path& borderPath, + const LayoutRect& borderRect, float thickness, float drawThickness, Color color, EBorderStyle borderStyle) const { + // Convert the path to be down the middle of the dots or dashes. + const LayoutRectOutsets centerOffsets( + -m_edges[BSTop].usedWidth() * 0.5, -m_edges[BSRight].usedWidth() * 0.5, + -m_edges[BSBottom].usedWidth() * 0.5, -m_edges[BSLeft].usedWidth() * 0.5); + Path centerlinePath; + centerlinePath.addRoundedRect(m_style.getRoundedInnerBorderFor( + borderRect, centerOffsets, m_includeLogicalLeftEdge, + m_includeLogicalRightEdge)); + graphicsContext.setStrokeColor(color); + if (!StrokeData::strokeIsDashed(thickness, borderStyle == BorderStyleDashed + ? DashedStroke + : DottedStroke)) { + drawWideDottedBoxSideFromPath(graphicsContext, centerlinePath, thickness); + return; + } + // The stroke is doubled here because the provided path is the // outside edge of the border so half the stroke is clipped off. // The extra multiplier is so that the clipping mask can antialias // the edges to prevent jaggies. - graphicsContext.setStrokeThickness(drawThickness * 2 * 1.1f); + graphicsContext.setStrokeThickness(drawThickness * 1.1f); graphicsContext.setStrokeStyle( borderStyle == BorderStyleDashed ? DashedStroke : DottedStroke); @@ -1034,11 +1050,10 @@ // do the same thing as StrokeData::setupPaintDashPathEffect and should be // refactored to re-use that code. It would require // GraphicsContext::strokePath to take a length parameter. - float dashLength = thickness * ((borderStyle == BorderStyleDashed) ? 3.0f : 1.0f); float gapLength = dashLength; - float numberOfDashes = borderPath.length() / dashLength; + float numberOfDashes = centerlinePath.length() / dashLength; // Don't try to show dashes if we have less than 2 dashes + 2 gaps. // FIXME: should do this test per side. if (numberOfDashes >= 4) { @@ -1057,8 +1072,50 @@ // FIXME: stroking the border path causes issues with tight corners: // https://bugs.webkit.org/show_bug.cgi?id=58711 - // Also, to get the best appearance we should stroke a path between the - // two borders. + graphicsContext.strokePath(centerlinePath); +} + +void BoxBorderPainter::drawWideDottedBoxSideFromPath( + GraphicsContext& graphicsContext, + const Path& borderPath, + float thickness) const { + graphicsContext.setStrokeThickness(thickness); + graphicsContext.setStrokeStyle(DottedStroke); + + // TODO(schenney): This code for setting up the dash effect is largely + // duplicated from StrokeData::setupPaintDashPathEffect and both this code + // and the method above should be refactored to re-use that code. It would + // require GraphicsContext::strokePath to take a length parameter. + graphicsContext.setLineCap(RoundCap); + + // Adjust the width to get equal dot spacing as much as possible. + float perDotLength = thickness * 2; + static float epsilon = 1.0e-2f; + float pathLength = borderPath.length(); + + if (pathLength < perDotLength + thickness) { + // Exactly 2 dots with whatever space we can get + DashArray lineDash; + lineDash.push_back(0); + lineDash.push_back(pathLength - thickness - epsilon); + graphicsContext.setLineDash(lineDash, 0); + } else { + // Determine what number of dots gives the minimum deviation from + // idealGap between dots. Set the gap to that width. + float minNumDots = floorf((pathLength + thickness) / perDotLength); + float maxNumDots = minNumDots + 1; + float minGap = (pathLength - minNumDots * thickness) / (minNumDots - 1); + float maxGap = (pathLength - maxNumDots * thickness) / (maxNumDots - 1); + auto gap = + fabs(minGap - thickness) < fabs(maxGap - thickness) ? minGap : maxGap; + DashArray lineDash; + lineDash.push_back(0); + lineDash.push_back(gap + thickness - epsilon); + graphicsContext.setLineDash(lineDash, 0); + } + + // TODO(schenney): stroking the border path causes issues with tight corners: + // https://bugs.webkit.org/show_bug.cgi?id=58711 graphicsContext.strokePath(borderPath); }
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.h b/third_party/WebKit/Source/core/paint/BoxBorderPainter.h index 9ac25d0..56138af 100644 --- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.h +++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.h
@@ -77,11 +77,14 @@ Color, EBorderStyle) const; void drawDashedDottedBoxSideFromPath(GraphicsContext&, - const Path&, + const LayoutRect&, float thickness, float drawThickness, Color, EBorderStyle) const; + void drawWideDottedBoxSideFromPath(GraphicsContext&, + const Path&, + float thickness) const; void drawDoubleBoxSideFromPath(GraphicsContext&, const LayoutRect&, const Path&,
diff --git a/third_party/WebKit/Source/core/paint/ObjectPainter.cpp b/third_party/WebKit/Source/core/paint/ObjectPainter.cpp index 5e77682a..629a62a 100644 --- a/third_party/WebKit/Source/core/paint/ObjectPainter.cpp +++ b/third_party/WebKit/Source/core/paint/ObjectPainter.cpp
@@ -14,6 +14,7 @@ #include "core/style/BorderEdge.h" #include "core/style/ComputedStyle.h" #include "platform/geometry/LayoutPoint.h" +#include "platform/graphics/GraphicsContextStateSaver.h" namespace blink { @@ -415,8 +416,7 @@ bool antialias) { DCHECK_GT(thickness, 0); - bool wasAntialiased = graphicsContext.shouldAntialias(); - StrokeStyle oldStrokeStyle = graphicsContext.getStrokeStyle(); + GraphicsContextStateSaver stateSaver(graphicsContext); graphicsContext.setShouldAntialias(antialias); graphicsContext.setStrokeColor(color); graphicsContext.setStrokeThickness(thickness); @@ -437,8 +437,6 @@ break; } } - graphicsContext.setShouldAntialias(wasAntialiased); - graphicsContext.setStrokeStyle(oldStrokeStyle); } void ObjectPainter::drawDoubleBoxSide(GraphicsContext& graphicsContext,
diff --git a/third_party/WebKit/Source/devtools/front_end/Tests.js b/third_party/WebKit/Source/devtools/front_end/Tests.js index 8a2af93..32107ca 100644 --- a/third_party/WebKit/Source/devtools/front_end/Tests.js +++ b/third_party/WebKit/Source/devtools/front_end/Tests.js
@@ -808,9 +808,9 @@ setTimeout(reset, 0); function createSettings() { - var localSetting = Common.settings.createSetting('local', undefined, true); + var localSetting = Common.settings.createLocalSetting('local', undefined); localSetting.set({s: 'local', n: 1}); - var globalSetting = Common.settings.createSetting('global', undefined, false); + var globalSetting = Common.settings.createSetting('global', undefined); globalSetting.set({s: 'global', n: 2}); } @@ -822,11 +822,11 @@ function gotPreferences(prefs) { Main.Main._instanceForTest._createSettings(prefs); - var localSetting = Common.settings.createSetting('local', undefined, true); + var localSetting = Common.settings.createLocalSetting('local', undefined); test.assertEquals('object', typeof localSetting.get()); test.assertEquals('local', localSetting.get().s); test.assertEquals(1, localSetting.get().n); - var globalSetting = Common.settings.createSetting('global', undefined, false); + var globalSetting = Common.settings.createSetting('global', undefined); test.assertEquals('object', typeof globalSetting.get()); test.assertEquals('global', globalSetting.get().s); test.assertEquals(2, globalSetting.get().n);
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Settings.js b/third_party/WebKit/Source/devtools/front_end/common/Settings.js index 28a3087..280e1684 100644 --- a/third_party/WebKit/Source/devtools/front_end/common/Settings.js +++ b/third_party/WebKit/Source/devtools/front_end/common/Settings.js
@@ -37,8 +37,9 @@ * @param {!Common.SettingsStorage} localStorage */ constructor(globalStorage, localStorage) { - this._settingsStorage = globalStorage; + this._globalStorage = globalStorage; this._localStorage = localStorage; + this._sessionStorage = new Common.SettingsStorage({}); this._eventSupport = new Common.Object(); /** @type {!Map<string, !Common.Setting>} */ @@ -54,11 +55,24 @@ _registerModuleSetting(extension) { var descriptor = extension.descriptor(); var settingName = descriptor['settingName']; - var settingType = descriptor['settingType']; + var isRegex = descriptor['settingType'] === 'regex'; var defaultValue = descriptor['defaultValue']; - var isLocal = !!descriptor['local']; - var setting = settingType === 'regex' ? this.createRegExpSetting(settingName, defaultValue, undefined, isLocal) : - this.createSetting(settingName, defaultValue, isLocal); + var storageType; + switch (descriptor['storageType']) { + case ('local'): + storageType = Common.SettingStorageType.Local; + break; + case ('session'): + storageType = Common.SettingStorageType.Session; + break; + case ('global'): + storageType = Common.SettingStorageType.Global; + break; + default: + storageType = Common.SettingStorageType.Global; + } + var setting = isRegex ? this.createRegExpSetting(settingName, defaultValue, undefined, storageType) : + this.createSetting(settingName, defaultValue, storageType); if (descriptor['title']) setting.setTitle(descriptor['title']); this._moduleSettings.set(settingName, setting); @@ -89,15 +103,13 @@ /** * @param {string} key * @param {*} defaultValue - * @param {boolean=} isLocal + * @param {!Common.SettingStorageType=} storageType * @return {!Common.Setting} */ - createSetting(key, defaultValue, isLocal) { - if (!this._registry.get(key)) { - this._registry.set( - key, new Common.Setting( - this, key, defaultValue, this._eventSupport, isLocal ? this._localStorage : this._settingsStorage)); - } + createSetting(key, defaultValue, storageType) { + var storage = this._storageFromType(storageType); + if (!this._registry.get(key)) + this._registry.set(key, new Common.Setting(this, key, defaultValue, this._eventSupport, storage)); return /** @type {!Common.Setting} */ (this._registry.get(key)); } @@ -107,32 +119,48 @@ * @return {!Common.Setting} */ createLocalSetting(key, defaultValue) { - return this.createSetting(key, defaultValue, true); + return this.createSetting(key, defaultValue, Common.SettingStorageType.Local); } /** * @param {string} key * @param {string} defaultValue * @param {string=} regexFlags - * @param {boolean=} isLocal + * @param {!Common.SettingStorageType=} storageType * @return {!Common.RegExpSetting} */ - createRegExpSetting(key, defaultValue, regexFlags, isLocal) { + createRegExpSetting(key, defaultValue, regexFlags, storageType) { if (!this._registry.get(key)) { this._registry.set( - key, new Common.RegExpSetting( - this, key, defaultValue, this._eventSupport, isLocal ? this._localStorage : this._settingsStorage, - regexFlags)); + key, + new Common.RegExpSetting( + this, key, defaultValue, this._eventSupport, this._storageFromType(storageType), regexFlags)); } return /** @type {!Common.RegExpSetting} */ (this._registry.get(key)); } clearAll() { - this._settingsStorage.removeAll(); + this._globalStorage.removeAll(); this._localStorage.removeAll(); var versionSetting = Common.settings.createSetting(Common.VersionController._currentVersionName, 0); versionSetting.set(Common.VersionController.currentVersion); } + + /** + * @param {!Common.SettingStorageType=} storageType + * @return {!Common.SettingsStorage} + */ + _storageFromType(storageType) { + switch (storageType) { + case (Common.SettingStorageType.Local): + return this._localStorage; + case (Common.SettingStorageType.Session): + return this._sessionStorage; + case (Common.SettingStorageType.Global): + return this._globalStorage; + } + return this._globalStorage; + } }; /** @@ -753,7 +781,7 @@ continue; var value = window.localStorage[key]; window.localStorage.removeItem(key); - Common.settings._settingsStorage[key] = value; + Common.settings._globalStorage[key] = value; } } @@ -778,6 +806,15 @@ Common.settings; /** + * @enum {symbol} + */ +Common.SettingStorageType = { + Global: Symbol('Global'), + Local: Symbol('Local'), + Session: Symbol('Session') +}; + +/** * @param {string} settingName * @return {!Common.Setting} */
diff --git a/third_party/WebKit/Source/devtools/front_end/help/Help.js b/third_party/WebKit/Source/devtools/front_end/help/Help.js index 7d3b6cb..b2028f326 100644 --- a/third_party/WebKit/Source/devtools/front_end/help/Help.js +++ b/third_party/WebKit/Source/devtools/front_end/help/Help.js
@@ -35,7 +35,7 @@ Help.releaseNoteVersionSetting = function() { if (!Help._releaseNoteVersionSetting) { /** @type {!Common.Setting} */ - Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0, false); + Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0); } return Help._releaseNoteVersionSetting; };
diff --git a/third_party/WebKit/Source/devtools/front_end/main/module.json b/third_party/WebKit/Source/devtools/front_end/main/module.json index 1df7509..c1480768 100644 --- a/third_party/WebKit/Source/devtools/front_end/main/module.json +++ b/third_party/WebKit/Source/devtools/front_end/main/module.json
@@ -251,6 +251,7 @@ "title": "Disable JavaScript", "settingName": "javaScriptDisabled", "settingType": "boolean", + "storageType": "session", "order": 1, "defaultValue": false, "options": [
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkManager.js index 2a0ae0a..6392ba0 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/NetworkManager.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/NetworkManager.js
@@ -689,7 +689,6 @@ this._blockedURLs = new Set(); this._blockedSetting = Common.moduleSetting('networkBlockedURLs'); this._blockedSetting.addChangeListener(this._updateBlockedURLs, this); - this._blockedSetting.set([]); this._updateBlockedURLs(); this._userAgentOverride = '';
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/module.json b/third_party/WebKit/Source/devtools/front_end/sdk/module.json index 72143bb..f20f36a 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/module.json +++ b/third_party/WebKit/Source/devtools/front_end/sdk/module.json
@@ -10,6 +10,7 @@ "type": "setting", "settingName": "networkBlockedURLs", "settingType": "array", + "storageType": "session", "defaultValue": [] }, {
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceAccelerationInit.idl b/third_party/WebKit/Source/modules/device_orientation/DeviceAccelerationInit.idl new file mode 100644 index 0000000..7276e85 --- /dev/null +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceAccelerationInit.idl
@@ -0,0 +1,11 @@ +// 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. + +// https://www.w3.org/TR/2016/CR-orientation-event-20160818/#devicemotion + +dictionary DeviceAccelerationInit { + double? x = null; + double? y = null; + double? z = null; +};
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.cpp b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.cpp index c75a84ac..e0965a8d 100644 --- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.cpp +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.cpp
@@ -24,6 +24,10 @@ */ #include "modules/device_orientation/DeviceMotionData.h" + +#include "modules/device_orientation/DeviceAccelerationInit.h" +#include "modules/device_orientation/DeviceMotionEventInit.h" +#include "modules/device_orientation/DeviceRotationRateInit.h" #include "public/platform/modules/device_orientation/WebDeviceMotionData.h" namespace blink { @@ -39,6 +43,13 @@ canProvideZ, z); } +DeviceMotionData::Acceleration* DeviceMotionData::Acceleration::create( + const DeviceAccelerationInit& init) { + return new DeviceMotionData::Acceleration( + init.hasX(), init.hasX() ? init.x() : 0, init.hasY(), + init.hasY() ? init.y() : 0, init.hasZ(), init.hasZ() ? init.z() : 0); +} + DeviceMotionData::Acceleration::Acceleration(bool canProvideX, double x, bool canProvideY, @@ -65,6 +76,14 @@ canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma); } +DeviceMotionData::RotationRate* DeviceMotionData::RotationRate::create( + const DeviceRotationRateInit& init) { + return new DeviceMotionData::RotationRate( + init.hasAlpha(), init.hasAlpha() ? init.alpha() : 0, init.hasBeta(), + init.hasBeta() ? init.beta() : 0, init.hasGamma(), + init.hasGamma() ? init.gamma() : 0); +} + DeviceMotionData::RotationRate::RotationRate(bool canProvideAlpha, double alpha, bool canProvideBeta, @@ -92,6 +111,21 @@ rotationRate, canProvideInterval, interval); } +DeviceMotionData* DeviceMotionData::create(const DeviceMotionEventInit& init) { + return DeviceMotionData::create( + init.hasAcceleration() + ? DeviceMotionData::Acceleration::create(init.acceleration()) + : nullptr, + init.hasAccelerationIncludingGravity() + ? DeviceMotionData::Acceleration::create( + init.accelerationIncludingGravity()) + : nullptr, + init.hasRotationRate() + ? DeviceMotionData::RotationRate::create(init.rotationRate()) + : nullptr, + init.hasInterval(), init.hasInterval() ? init.interval() : 0); +} + DeviceMotionData* DeviceMotionData::create(const WebDeviceMotionData& data) { return DeviceMotionData::create( DeviceMotionData::Acceleration::create(
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.h b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.h index 286e137..986088a5 100644 --- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.h +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionData.h
@@ -30,6 +30,9 @@ namespace blink { +class DeviceAccelerationInit; +class DeviceMotionEventInit; +class DeviceRotationRateInit; class WebDeviceMotionData; class DeviceMotionData final : public GarbageCollected<DeviceMotionData> { @@ -43,6 +46,7 @@ double y, bool canProvideZ, double z); + static Acceleration* create(const DeviceAccelerationInit&); DEFINE_INLINE_TRACE() {} bool canProvideX() const { return m_canProvideX; } @@ -79,6 +83,7 @@ double beta, bool canProvideGamma, double gamma); + static RotationRate* create(const DeviceRotationRateInit&); DEFINE_INLINE_TRACE() {} bool canProvideAlpha() const { return m_canProvideAlpha; } @@ -112,6 +117,7 @@ RotationRate*, bool canProvideInterval, double interval); + static DeviceMotionData* create(const DeviceMotionEventInit&); static DeviceMotionData* create(const WebDeviceMotionData&); DECLARE_TRACE();
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.cpp b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.cpp index 0985837..0a5c88e 100644 --- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.cpp +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.cpp
@@ -27,6 +27,7 @@ #include "modules/device_orientation/DeviceAcceleration.h" #include "modules/device_orientation/DeviceMotionData.h" +#include "modules/device_orientation/DeviceMotionEventInit.h" #include "modules/device_orientation/DeviceRotationRate.h" namespace blink { @@ -37,6 +38,11 @@ : m_deviceMotionData(DeviceMotionData::create()) {} DeviceMotionEvent::DeviceMotionEvent(const AtomicString& eventType, + const DeviceMotionEventInit& initializer) + : Event(eventType, initializer), + m_deviceMotionData(DeviceMotionData::create(initializer)) {} + +DeviceMotionEvent::DeviceMotionEvent(const AtomicString& eventType, DeviceMotionData* deviceMotionData) : Event(eventType, false, false), // Can't bubble, not cancelable m_deviceMotionData(deviceMotionData) {}
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h index 47ba9603b..672ae11 100644 --- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.h
@@ -33,6 +33,7 @@ class DeviceAcceleration; class DeviceMotionData; +class DeviceMotionEventInit; class DeviceRotationRate; class DeviceMotionEvent final : public Event { @@ -42,6 +43,10 @@ ~DeviceMotionEvent() override; static DeviceMotionEvent* create() { return new DeviceMotionEvent; } static DeviceMotionEvent* create(const AtomicString& eventType, + const DeviceMotionEventInit& initializer) { + return new DeviceMotionEvent(eventType, initializer); + } + static DeviceMotionEvent* create(const AtomicString& eventType, DeviceMotionData* deviceMotionData) { return new DeviceMotionEvent(eventType, deviceMotionData); } @@ -66,6 +71,7 @@ private: DeviceMotionEvent(); + DeviceMotionEvent(const AtomicString&, const DeviceMotionEventInit&); DeviceMotionEvent(const AtomicString& eventType, DeviceMotionData*); Member<DeviceMotionData> m_deviceMotionData;
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.idl b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.idl index 4777863..079cc1dd 100644 --- a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.idl +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEvent.idl
@@ -23,9 +23,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -// https://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion +// https://www.w3.org/TR/2016/CR-orientation-event-20160818/#devicemotion -// TODO(foolip): DeviceMotionEvent should have a constructor. +[Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict)] interface DeviceMotionEvent : Event { readonly attribute DeviceAcceleration? acceleration; readonly attribute DeviceAcceleration? accelerationIncludingGravity;
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEventInit.idl b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEventInit.idl new file mode 100644 index 0000000..4f8663c --- /dev/null +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceMotionEventInit.idl
@@ -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. + +// https://www.w3.org/TR/2016/CR-orientation-event-20160818/#devicemotion + +dictionary DeviceMotionEventInit : EventInit { + DeviceAccelerationInit? acceleration; + DeviceAccelerationInit? accelerationIncludingGravity; + DeviceRotationRateInit? rotationRate; + double? interval = null; +};
diff --git a/third_party/WebKit/Source/modules/device_orientation/DeviceRotationRateInit.idl b/third_party/WebKit/Source/modules/device_orientation/DeviceRotationRateInit.idl new file mode 100644 index 0000000..00fc4a31 --- /dev/null +++ b/third_party/WebKit/Source/modules/device_orientation/DeviceRotationRateInit.idl
@@ -0,0 +1,11 @@ +// 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. + +// https://www.w3.org/TR/2016/CR-orientation-event-20160818/#devicemotion + +dictionary DeviceRotationRateInit { + double? alpha = null; + double? beta = null; + double? gamma = null; +};
diff --git a/third_party/WebKit/Source/modules/modules_idl_files.gni b/third_party/WebKit/Source/modules/modules_idl_files.gni index 94ed5f68..5ed3cbc70 100644 --- a/third_party/WebKit/Source/modules/modules_idl_files.gni +++ b/third_party/WebKit/Source/modules/modules_idl_files.gni
@@ -405,6 +405,9 @@ "credentialmanager/LocallyStoredCredentialData.idl", "credentialmanager/PasswordCredentialData.idl", "device_light/DeviceLightEventInit.idl", + "device_orientation/DeviceAccelerationInit.idl", + "device_orientation/DeviceMotionEventInit.idl", + "device_orientation/DeviceRotationRateInit.idl", "encoding/TextDecodeOptions.idl", "encoding/TextDecoderOptions.idl", "encryptedmedia/MediaEncryptedEventInit.idl", @@ -706,6 +709,12 @@ "$blink_modules_output_dir/credentialmanager/PasswordCredentialData.h", "$blink_modules_output_dir/device_light/DeviceLightEventInit.cpp", "$blink_modules_output_dir/device_light/DeviceLightEventInit.h", + "$blink_modules_output_dir/device_orientation/DeviceAccelerationInit.cpp", + "$blink_modules_output_dir/device_orientation/DeviceAccelerationInit.h", + "$blink_modules_output_dir/device_orientation/DeviceMotionEventInit.cpp", + "$blink_modules_output_dir/device_orientation/DeviceMotionEventInit.h", + "$blink_modules_output_dir/device_orientation/DeviceRotationRateInit.cpp", + "$blink_modules_output_dir/device_orientation/DeviceRotationRateInit.h", "$blink_modules_output_dir/encoding/TextDecodeOptions.cpp", "$blink_modules_output_dir/encoding/TextDecodeOptions.h", "$blink_modules_output_dir/encoding/TextDecoderOptions.cpp",
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp index 6b8397a..cb688e1 100644 --- a/third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp +++ b/third_party/WebKit/Source/platform/graphics/GraphicsContext.cpp
@@ -501,9 +501,9 @@ int length = SkScalarRoundToInt(disp.width() + disp.height()); PaintFlags flags(immutableState()->strokeFlags(length)); - if (getStrokeStyle() == DottedStroke || getStrokeStyle() == DashedStroke) { + if (StrokeData::strokeIsDashed(width, getStrokeStyle())) { // Do a rect fill of our endpoints. This ensures we always have the - // appearance of being a border. We then draw the actual dotted/dashed + // appearance of being a border. We then draw the actual dotted/dashed // line. SkRect r1, r2; r1.set(p1.x(), p1.y(), p1.x() + width, p1.y() + width); @@ -520,6 +520,17 @@ fillFlags.setColor(flags.getColor()); drawRect(r1, fillFlags); drawRect(r2, fillFlags); + } else if (getStrokeStyle() == DottedStroke) { + // We draw thick dotted lines with 0 length dash strokes and round endcaps, + // producing circles. The endcaps extend beyond the line's endpoints, + // so move the start and end in. + if (isVerticalLine) { + p1.setY(p1.y() + width / 2.f); + p2.setY(p2.y() - width / 2.f); + } else { + p1.setX(p1.x() + width / 2.f); + p2.setX(p2.x() - width / 2.f); + } } adjustLineToPixelBoundaries(p1, p2, width, penStyle); @@ -1298,7 +1309,7 @@ // pass us (y1+y2)/2, e.g., (50+53)/2 = 103/2 = 51 when we want 51.5. It is // always true that an even width gave us a perfect position, but an odd width // gave us a position that is off by exactly 0.5. - if (penStyle == DottedStroke || penStyle == DashedStroke) { + if (StrokeData::strokeIsDashed(strokeWidth, penStyle)) { if (p1.x() == p2.x()) { p1.setY(p1.y() + strokeWidth); p2.setY(p2.y() - strokeWidth);
diff --git a/third_party/WebKit/Source/platform/graphics/StrokeData.cpp b/third_party/WebKit/Source/platform/graphics/StrokeData.cpp index 2bd0a51..cbdb47b 100644 --- a/third_party/WebKit/Source/platform/graphics/StrokeData.cpp +++ b/third_party/WebKit/Source/platform/graphics/StrokeData.cpp
@@ -70,7 +70,7 @@ void StrokeData::setupPaintDashPathEffect(PaintFlags* flags, int length) const { if (m_dash) { flags->setPathEffect(m_dash); - } else if (m_style == DashedStroke || m_style == DottedStroke) { + } else if (strokeIsDashed(m_thickness, m_style)) { float width = m_style == DashedStroke ? dashRatio * m_thickness : m_thickness; @@ -96,10 +96,39 @@ SkScalar intervals[2] = {dashLengthSk, dashLengthSk}; flags->setPathEffect( SkDashPathEffect::Make(intervals, 2, SkIntToScalar(phase))); + } else if (m_style == DottedStroke) { + flags->setStrokeCap((PaintFlags::Cap)RoundCap); + // Adjust the width to get equal dot spacing as much as possible. + float perDotLength = m_thickness * 2; + static float epsilon = 1.0e-2f; + if (length < perDotLength + m_thickness) { + // Exactly 2 dots with whatever space we can get + SkScalar intervals[2] = {0, length - m_thickness - epsilon}; + flags->setPathEffect(SkDashPathEffect::Make(intervals, 2, 0)); + return; + } + + // Determine what number of dots gives the minimum deviation from + // idealGap between dots. Set the gap to that width. + float minNumDots = floorf((length + m_thickness) / perDotLength); + float maxNumDots = minNumDots + 1; + float minGap = (length - minNumDots * m_thickness) / (minNumDots - 1); + float maxGap = (length - maxNumDots * m_thickness) / (maxNumDots - 1); + if (fabs(minGap - m_thickness) < fabs(maxGap - m_thickness)) { + SkScalar intervals[2] = {0, minGap + m_thickness - epsilon}; + flags->setPathEffect(SkDashPathEffect::Make(intervals, 2, 0)); + } else { + SkScalar intervals[2] = {0, maxGap + m_thickness - epsilon}; + flags->setPathEffect(SkDashPathEffect::Make(intervals, 2, 0)); + } } else { - // TODO(schenney): WavyStroke: https://crbug.com/229574 + // TODO(schenney): WavyStroke https://crbug.com/229574 flags->setPathEffect(0); } } +bool StrokeData::strokeIsDashed(float width, StrokeStyle style) { + return style == DashedStroke || (style == DottedStroke && width <= 3); +} + } // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/StrokeData.h b/third_party/WebKit/Source/platform/graphics/StrokeData.h index 6bad59cad..f39dffc 100644 --- a/third_party/WebKit/Source/platform/graphics/StrokeData.h +++ b/third_party/WebKit/Source/platform/graphics/StrokeData.h
@@ -82,6 +82,11 @@ // line will be adjusted to start and end that length with a dash/dot. void setupPaintDashPathEffect(PaintFlags*, int) const; + // Determine whether a stroked line should be drawn using dashes. In practice, + // we draw dashes when a dashed stroke is specified or when a dotted stroke + // is specified but the line width is too small to draw circles. + static bool strokeIsDashed(float width, StrokeStyle); + private: StrokeStyle m_style; float m_thickness;
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 1a58b6f..da1f11b 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -93026,6 +93026,7 @@ <int value="1846" label="ScrollByKeyboardSpacebarKey"/> <int value="1847" label="ScrollByTouch"/> <int value="1848" label="ScrollByWheel"/> + <int value="1849" label="ScheduledActionIgnored"/> </enum> <enum name="FetchRequestMode" type="int">
diff --git a/tools/origin_trials/generate_token.py b/tools/origin_trials/generate_token.py index a79f169..35ca521 100755 --- a/tools/origin_trials/generate_token.py +++ b/tools/origin_trials/generate_token.py
@@ -179,6 +179,7 @@ print " Is Subdomain: %s" % args.is_subdomain print " Feature: %s" % args.trial_name print " Expiry: %d (%s UTC)" % (expiry, datetime.utcfromtimestamp(expiry)) + print " Signature: %s" % ", ".join('0x%02x' % ord(x) for x in signature) print # Output the properly-formatted token.
diff --git a/ui/aura/mus/window_tree_client.cc b/ui/aura/mus/window_tree_client.cc index 93426157..3328445f 100644 --- a/ui/aura/mus/window_tree_client.cc +++ b/ui/aura/mus/window_tree_client.cc
@@ -588,7 +588,9 @@ const gfx::Rect& new_bounds) { const uint32_t change_id = ScheduleInFlightChange( base::MakeUnique<InFlightBoundsChange>(this, window, old_bounds)); - tree_->SetWindowBounds(change_id, window->server_id(), new_bounds); + // TODO(fsamuel): Allocate a new LocalSurfaceId on size change. + tree_->SetWindowBounds(change_id, window->server_id(), new_bounds, + base::nullopt); } void WindowTreeClient::OnWindowMusCreated(WindowMus* window) { @@ -960,9 +962,11 @@ DCHECK_EQ(0u, data->parent_id); } -void WindowTreeClient::OnWindowBoundsChanged(Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) { +void WindowTreeClient::OnWindowBoundsChanged( + Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { WindowMus* window = GetWindowByServerId(window_id); if (!window) return;
diff --git a/ui/aura/mus/window_tree_client.h b/ui/aura/mus/window_tree_client.h index 3e42a2e..60abb544 100644 --- a/ui/aura/mus/window_tree_client.h +++ b/ui/aura/mus/window_tree_client.h
@@ -301,9 +301,11 @@ ui::mojom::WindowDataPtr data, int64_t display_id, bool drawn) override; - void OnWindowBoundsChanged(Id window_id, - const gfx::Rect& old_bounds, - const gfx::Rect& new_bounds) override; + void OnWindowBoundsChanged( + Id window_id, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) override; void OnClientAreaChanged( uint32_t window_id, const gfx::Insets& new_client_area,
diff --git a/ui/aura/mus/window_tree_client_unittest.cc b/ui/aura/mus/window_tree_client_unittest.cc index b4f7db24..86f6703 100644 --- a/ui/aura/mus/window_tree_client_unittest.cc +++ b/ui/aura/mus/window_tree_client_unittest.cc
@@ -276,7 +276,8 @@ // Simulate the server responding with a bounds change. const gfx::Rect server_changed_bounds(gfx::Rect(0, 0, 101, 102)); window_tree_client()->OnWindowBoundsChanged( - server_id(root_window()), original_bounds, server_changed_bounds); + server_id(root_window()), original_bounds, server_changed_bounds, + base::nullopt); // This shouldn't trigger the bounds changing yet. EXPECT_EQ(new_bounds, root_window()->bounds()); @@ -288,8 +289,9 @@ EXPECT_EQ(server_changed_bounds, root_window()->bounds()); // Simulate server changing back to original bounds. Should take immediately. - window_tree_client()->OnWindowBoundsChanged( - server_id(root_window()), server_changed_bounds, original_bounds); + window_tree_client()->OnWindowBoundsChanged(server_id(root_window()), + server_changed_bounds, + original_bounds, base::nullopt); EXPECT_EQ(original_bounds, root_window()->bounds()); } @@ -1858,7 +1860,8 @@ // in pixels. const gfx::Rect server_changed_bounds(gfx::Rect(0, 0, 200, 200)); window_tree_client()->OnWindowBoundsChanged( - server_id(root_window()), original_bounds, server_changed_bounds); + server_id(root_window()), original_bounds, server_changed_bounds, + base::nullopt); EXPECT_EQ(new_bounds, root_window()->bounds()); }
diff --git a/ui/aura/test/mus/test_window_tree.cc b/ui/aura/test/mus/test_window_tree.cc index e9be6351..3c7af1bd 100644 --- a/ui/aura/test/mus/test_window_tree.cc +++ b/ui/aura/test/mus/test_window_tree.cc
@@ -133,9 +133,11 @@ OnChangeReceived(change_id); } -void TestWindowTree::SetWindowBounds(uint32_t change_id, - uint32_t window_id, - const gfx::Rect& bounds) { +void TestWindowTree::SetWindowBounds( + uint32_t change_id, + uint32_t window_id, + const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) { OnChangeReceived(change_id, WindowTreeChangeType::BOUNDS); }
diff --git a/ui/aura/test/mus/test_window_tree.h b/ui/aura/test/mus/test_window_tree.h index 92d05bac..c5910a5 100644 --- a/ui/aura/test/mus/test_window_tree.h +++ b/ui/aura/test/mus/test_window_tree.h
@@ -116,9 +116,11 @@ const std::unordered_map<std::string, std::vector<uint8_t>>& properties) override; void DeleteWindow(uint32_t change_id, uint32_t window_id) override; - void SetWindowBounds(uint32_t change_id, - uint32_t window_id, - const gfx::Rect& bounds) override; + void SetWindowBounds( + uint32_t change_id, + uint32_t window_id, + const gfx::Rect& bounds, + const base::Optional<cc::LocalSurfaceId>& local_surface_id) override; void SetClientArea(uint32_t window_id, const gfx::Insets& insets, const base::Optional<std::vector<gfx::Rect>>&
diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc index 2d16942..0532230 100644 --- a/ui/views/controls/label.cc +++ b/ui/views/controls/label.cc
@@ -467,10 +467,9 @@ SkColorGetA(view->background()->get_color()) == SK_AlphaOPAQUE) break; - if (view->layer()) { - DCHECK(view->layer()->fills_bounds_opaquely()) - << " Ancestor view has a non-opaque layer: " << view->GetClassName() - << " with ID " << view->id(); + if (view->layer() && view->layer()->fills_bounds_opaquely()) { + DLOG(WARNING) << "Ancestor view has a non-opaque layer: " + << view->GetClassName() << " with ID " << view->id(); break; } }