diff --git a/DEPS b/DEPS index aa93e94..5d7bbd72 100644 --- a/DEPS +++ b/DEPS
@@ -96,7 +96,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '5cdfbfc974591fbaca53645b670c8191cb89f8aa', + 'catapult_revision': '4550ebce30c0593fb85be7890b84b942e8b7af57', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other.
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index bcdd6844..1dbd302 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1189,6 +1189,7 @@ "common/system/date/date_view_unittest.cc", "common/system/date/system_info_default_view_unittest.cc", "common/system/ime/tray_ime_chromeos_unittest.cc", + "common/system/status_area_widget_unittest.cc", "common/system/tiles/tray_tiles_unittest.cc", "common/system/tray/size_range_layout_unittest.cc", "common/system/tray/system_tray_unittest.cc",
diff --git a/ash/common/system/status_area_widget.h b/ash/common/system/status_area_widget.h index acea237..6cb1dfa1 100644 --- a/ash/common/system/status_area_widget.h +++ b/ash/common/system/status_area_widget.h
@@ -81,6 +81,14 @@ // ShelfBackgroundAnimatorObserver: void UpdateShelfItemBackground(SkColor color) override; + LogoutButtonTray* logout_button_tray_for_testing() { + return logout_button_tray_; + } + + VirtualKeyboardTray* virtual_keyboard_tray_for_testing() { + return virtual_keyboard_tray_; + } + private: void AddSystemTray(); void AddWebNotificationTray();
diff --git a/ash/common/system/status_area_widget_unittest.cc b/ash/common/system/status_area_widget_unittest.cc new file mode 100644 index 0000000..18dfe91 --- /dev/null +++ b/ash/common/system/status_area_widget_unittest.cc
@@ -0,0 +1,86 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/common/system/status_area_widget.h" + +#include "ash/common/ash_switches.h" +#include "ash/common/system/chromeos/ime_menu/ime_menu_tray.h" +#include "ash/common/system/chromeos/palette/palette_tray.h" +#include "ash/common/system/chromeos/session/logout_button_tray.h" +#include "ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h" +#include "ash/common/system/overview/overview_button_tray.h" +#include "ash/common/system/tray/system_tray.h" +#include "ash/common/system/web_notification/web_notification_tray.h" +#include "ash/test/ash_test_base.h" +#include "ash/test/status_area_widget_test_helper.h" +#include "base/command_line.h" + +namespace ash { + +using StatusAreaWidgetTest = test::AshTestBase; + +// Tests that status area trays are constructed. +TEST_F(StatusAreaWidgetTest, Basics) { + StatusAreaWidget* status = StatusAreaWidgetTestHelper::GetStatusAreaWidget(); + + // Status area is visible by default. + EXPECT_TRUE(status->IsVisible()); + + // No bubbles are open at startup. + EXPECT_FALSE(status->IsMessageBubbleShown()); + + // Auto-hidden shelf would not be forced to be visible. + EXPECT_FALSE(status->ShouldShowShelf()); + + // Default trays are constructed. + EXPECT_TRUE(status->overview_button_tray()); + EXPECT_TRUE(status->system_tray()); + EXPECT_TRUE(status->web_notification_tray()); + EXPECT_TRUE(status->logout_button_tray_for_testing()); + EXPECT_TRUE(status->ime_menu_tray()); + EXPECT_TRUE(status->virtual_keyboard_tray_for_testing()); + + // Stylus palette is only constructed if hardware supports it. + EXPECT_FALSE(status->palette_tray()); + + // Needed because WebNotificationTray updates its initial visibility + // asynchronously. + RunAllPendingInMessageLoop(); + + // Default trays are visible. + EXPECT_FALSE(status->overview_button_tray()->visible()); + EXPECT_TRUE(status->system_tray()->visible()); + EXPECT_TRUE(status->web_notification_tray()->visible()); + EXPECT_FALSE(status->logout_button_tray_for_testing()->visible()); + EXPECT_FALSE(status->ime_menu_tray()->visible()); + EXPECT_FALSE(status->virtual_keyboard_tray_for_testing()->visible()); +} + +class StatusAreaWidgetPaletteTest : public test::AshTestBase { + public: + StatusAreaWidgetPaletteTest() {} + ~StatusAreaWidgetPaletteTest() override {} + + // testing::Test: + void SetUp() override { + base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); + cmd->AppendSwitch(switches::kAshForceEnablePalette); + // It's difficult to write a test that marks the primary display as + // internal before the status area is constructed. Just force the palette + // for all displays. + cmd->AppendSwitch(switches::kAshEnablePaletteOnAllDisplays); + AshTestBase::SetUp(); + } +}; + +// Tests that the stylus palette tray is constructed. +TEST_F(StatusAreaWidgetPaletteTest, Basics) { + StatusAreaWidget* status = StatusAreaWidgetTestHelper::GetStatusAreaWidget(); + EXPECT_TRUE(status->palette_tray()); + + // Auto-hidden shelf would not be forced to be visible. + EXPECT_FALSE(status->ShouldShowShelf()); +} + +} // namespace ash
diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc index 31016f9..5a54a77 100644 --- a/base/trace_event/memory_dump_manager.cc +++ b/base/trace_event/memory_dump_manager.cc
@@ -514,6 +514,9 @@ // disabled. CHECK(!session_state_ || session_state_->IsDumpModeAllowed(args.level_of_detail)); + + if (dump_scheduler_) + dump_scheduler_->NotifyDumpTriggered(); } TRACE_EVENT_WITH_FLOW0(kTraceCategory, "MemoryDumpManager::CreateProcessDump",
diff --git a/base/trace_event/memory_dump_scheduler.cc b/base/trace_event/memory_dump_scheduler.cc index 4086ca8..eaa8d63 100644 --- a/base/trace_event/memory_dump_scheduler.cc +++ b/base/trace_event/memory_dump_scheduler.cc
@@ -33,16 +33,16 @@ uint32_t min_time_between_dumps_ms) { if (trigger_type == MemoryDumpType::PEAK_MEMORY_USAGE) { DCHECK(!periodic_state_.is_configured); - DCHECK(!polling_state_.is_configured); + DCHECK_EQ(PollingTriggerState::DISABLED, polling_state_.current_state); DCHECK_NE(0u, min_time_between_dumps_ms); polling_state_.level_of_detail = level_of_detail; polling_state_.min_polls_between_dumps = (min_time_between_dumps_ms + polling_state_.polling_interval_ms - 1) / polling_state_.polling_interval_ms; - polling_state_.is_configured = true; + polling_state_.current_state = PollingTriggerState::CONFIGURED; } else if (trigger_type == MemoryDumpType::PERIODIC_INTERVAL) { - DCHECK(!polling_state_.is_configured); + DCHECK_EQ(PollingTriggerState::DISABLED, polling_state_.current_state); periodic_state_.is_configured = true; DCHECK_NE(0u, min_time_between_dumps_ms); switch (level_of_detail) { @@ -83,32 +83,31 @@ } void MemoryDumpScheduler::NotifyPollingSupported() { - if (!polling_state_.is_configured || polling_state_.is_polling_enabled) + if (polling_state_.current_state != PollingTriggerState::CONFIGURED) return; - polling_state_.is_polling_enabled = true; - for (uint32_t i = 0; i < PollingTriggerState::kMaxNumMemorySamples; ++i) - polling_state_.last_memory_totals_kb[i] = 0; - polling_state_.last_memory_totals_kb_index = 0; - polling_state_.num_polls_from_last_dump = 0; - polling_state_.last_dump_memory_total = 0; - if (!polling_state_.memory_increase_threshold) { - polling_state_.memory_increase_threshold = kDefaultMemoryIncreaseThreshold; -#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ - defined(OS_ANDROID) - // Set threshold to 1% of total system memory. - SystemMemoryInfoKB meminfo; - bool res = GetSystemMemoryInfo(&meminfo); - if (res) - polling_state_.memory_increase_threshold = (meminfo.total / 100) * 1024; -#endif - } + polling_state_.current_state = PollingTriggerState::ENABLED; + polling_state_.ResetTotals(); polling_state_.polling_task_runner->PostTask( FROM_HERE, Bind(&MemoryDumpScheduler::PollMemoryOnPollingThread, Unretained(this))); } +void MemoryDumpScheduler::NotifyDumpTriggered() { + if (polling_state_.polling_task_runner && + polling_state_.polling_task_runner->RunsTasksOnCurrentThread()) { + polling_state_.polling_task_runner->PostTask( + FROM_HERE, + Bind(&MemoryDumpScheduler::NotifyDumpTriggered, Unretained(this))); + return; + } + if (polling_state_.current_state != PollingTriggerState::ENABLED) + return; + + polling_state_.ResetTotals(); +} + void MemoryDumpScheduler::DisableAllTriggers() { if (periodic_state_.timer.IsRunning()) periodic_state_.timer.Stop(); @@ -116,14 +115,13 @@ } void MemoryDumpScheduler::DisablePolling() { - if (ThreadTaskRunnerHandle::Get() != polling_state_.polling_task_runner) { + if (polling_state_.polling_task_runner->RunsTasksOnCurrentThread()) { if (polling_state_.polling_task_runner->PostTask( FROM_HERE, Bind(&MemoryDumpScheduler::DisablePolling, Unretained(this)))) return; } - polling_state_.is_polling_enabled = false; - polling_state_.is_configured = false; + polling_state_.current_state = PollingTriggerState::DISABLED; polling_state_.polling_task_runner = nullptr; } @@ -150,7 +148,7 @@ } void MemoryDumpScheduler::PollMemoryOnPollingThread() { - if (!polling_state_.is_configured) + if (polling_state_.current_state != PollingTriggerState::ENABLED) return; uint64_t polled_memory = 0; @@ -200,13 +198,8 @@ should_dump |= increase_from_last_dump > polling_state_.memory_increase_threshold; should_dump |= IsCurrentSamplePeak(current_memory_total); - if (should_dump) { - polling_state_.last_dump_memory_total = current_memory_total; - polling_state_.num_polls_from_last_dump = 0; - for (uint32_t i = 0; i < PollingTriggerState::kMaxNumMemorySamples; ++i) - polling_state_.last_memory_totals_kb[i] = 0; - polling_state_.last_memory_totals_kb_index = 0; - } + if (should_dump) + polling_state_.ResetTotals(); return should_dump; } @@ -265,15 +258,14 @@ MemoryDumpScheduler::PollingTriggerState::PollingTriggerState( scoped_refptr<SingleThreadTaskRunner> polling_task_runner) - : is_configured(false), - is_polling_enabled(false), + : current_state(DISABLED), level_of_detail(MemoryDumpLevelOfDetail::FIRST), polling_task_runner(polling_task_runner), polling_interval_ms(g_polling_interval_ms_for_testing ? g_polling_interval_ms_for_testing : kMemoryTotalsPollingInterval), min_polls_between_dumps(0), - num_polls_from_last_dump(0), + num_polls_from_last_dump(-1), last_dump_memory_total(0), memory_increase_threshold(0), last_memory_totals_kb_index(0) {} @@ -282,5 +274,31 @@ DCHECK(!polling_task_runner); } +void MemoryDumpScheduler::PollingTriggerState::ResetTotals() { + if (!memory_increase_threshold) { + memory_increase_threshold = kDefaultMemoryIncreaseThreshold; +#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ + defined(OS_ANDROID) + // Set threshold to 1% of total system memory. + SystemMemoryInfoKB meminfo; + bool res = GetSystemMemoryInfo(&meminfo); + if (res) + memory_increase_threshold = (meminfo.total / 100) * 1024; +#endif + } + + // Update the |last_dump_memory_total|'s value from the totals if it's not + // first poll. + if (num_polls_from_last_dump >= 0 && + last_memory_totals_kb[last_memory_totals_kb_index]) { + last_dump_memory_total = + last_memory_totals_kb[last_memory_totals_kb_index] * 1024; + } + num_polls_from_last_dump = 0; + for (uint32_t i = 0; i < kMaxNumMemorySamples; ++i) + last_memory_totals_kb[i] = 0; + last_memory_totals_kb_index = 0; +} + } // namespace trace_event } // namespace base
diff --git a/base/trace_event/memory_dump_scheduler.h b/base/trace_event/memory_dump_scheduler.h index be75306..fd21fce8 100644 --- a/base/trace_event/memory_dump_scheduler.h +++ b/base/trace_event/memory_dump_scheduler.h
@@ -41,6 +41,10 @@ // Starts polling memory total. void NotifyPollingSupported(); + // Resets time for triggering dump to account for minimum time between the + // dumps. + void NotifyDumpTriggered(); + // Disables all triggers. void DisableAllTriggers(); @@ -68,14 +72,22 @@ }; struct PollingTriggerState { + enum State { + CONFIGURED, // Polling trigger was added. + ENABLED, // Polling is running. + DISABLED // Polling is disabled. + }; + static const uint32_t kMaxNumMemorySamples = 50; explicit PollingTriggerState( scoped_refptr<SingleThreadTaskRunner> polling_task_runner); ~PollingTriggerState(); - bool is_configured; - bool is_polling_enabled; + // Helper to clear the tracked memory totals and poll count from last dump. + void ResetTotals(); + + State current_state; MemoryDumpLevelOfDetail level_of_detail; scoped_refptr<SingleThreadTaskRunner> polling_task_runner;
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py index d2b8197..d73d509 100755 --- a/build/vs_toolchain.py +++ b/build/vs_toolchain.py
@@ -21,9 +21,6 @@ json_data_file = os.path.join(script_dir, 'win_toolchain.json') -import gyp - - # Use MSVS2015 as the default toolchain. CURRENT_DEFAULT_TOOLCHAIN_VERSION = '2015' @@ -60,6 +57,12 @@ os.environ['GYP_MSVS_OVERRIDE_PATH'] = toolchain os.environ['GYP_MSVS_VERSION'] = version + + # Limit the scope of the gyp import to only where it is used. This + # potentially lets build configs that never execute this block to drop + # their GYP checkout. + import gyp + # We need to make sure windows_sdk_path is set to the automated # toolchain values in GYP_DEFINES, but don't want to override any # otheroptions.express @@ -68,6 +71,7 @@ gyp_defines_dict['windows_sdk_path'] = win_sdk os.environ['GYP_DEFINES'] = ' '.join('%s=%s' % (k, pipes.quote(str(v))) for k, v in gyp_defines_dict.iteritems()) + os.environ['WINDOWSSDKDIR'] = win_sdk os.environ['WDK_DIR'] = wdk # Include the VS runtime in the PATH in case it's not machine-installed. @@ -171,12 +175,11 @@ vs_version = GetVisualStudioVersion() if vs_version == '2013': return '120' - elif vs_version == '2015': + if vs_version == '2015': return '140' - elif vs_version == '2017': + if vs_version == '2017': return '150' - else: - raise ValueError('Unexpected GYP_MSVS_VERSION') + raise ValueError('Unexpected GYP_MSVS_VERSION') def _CopyRuntimeImpl(target, source, verbose=True): @@ -340,13 +343,13 @@ def _GetDesiredVsToolchainHashes(): """Load a list of SHA1s corresponding to the toolchains that we want installed to build with.""" - if GetVisualStudioVersion() == '2015': + env_version = GetVisualStudioVersion() + if env_version == '2013': + return ['03a4e939cd325d6bc5216af41b92d02dda1366a6'] + if env_version == '2015': # Update 3 final with patches with 10.0.14393.0 SDK. return ['d3cb0e37bdd120ad0ac4650b674b09e81be45616'] - elif GetVisualStudioVersion() == '2013': - return ['03a4e939cd325d6bc5216af41b92d02dda1366a6'] - else: - raise Exception('Unsupported VS version %s' % GetVisualStudioVersion()) + raise Exception('Unsupported VS version %s' % env_version) def ShouldUpdateToolchain():
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc index 50eef3c4..c200375 100644 --- a/cc/resources/resource_pool.cc +++ b/cc/resources/resource_pool.cc
@@ -24,35 +24,8 @@ using base::trace_event::MemoryDumpLevelOfDetail; namespace cc { -namespace { -bool ResourceMeetsSizeRequirements(const gfx::Size& requested_size, - const gfx::Size& actual_size) { - const float kReuseThreshold = 2.0f; - - // Allocating new resources is expensive, and we'd like to re-use our - // existing ones within reason. Allow a larger resource to be used for a - // smaller request. - if (actual_size.width() < requested_size.width() || - actual_size.height() < requested_size.height()) - return false; - - // GetArea will crash on overflow, however all sizes in use are tile sizes. - // These are capped at ResourceProvider::max_texture_size(), and will not - // overflow. - float actual_area = actual_size.GetArea(); - float requested_area = requested_size.GetArea(); - // Don't use a resource that is more than |kReuseThreshold| times the - // requested pixel area, as we want to free unnecessarily large resources. - if (actual_area / requested_area > kReuseThreshold) - return false; - - return true; -} - -} // namespace - base::TimeDelta ResourcePool::kDefaultExpirationDelay = - base::TimeDelta::FromSeconds(5); + base::TimeDelta::FromSeconds(1); void ResourcePool::PoolResource::OnMemoryDump( base::trace_event::ProcessMemoryDump* pmd, @@ -146,7 +119,7 @@ if (resource->format() != format) continue; - if (!ResourceMeetsSizeRequirements(size, resource->size())) + if (resource->size() != size) continue; if (resource->color_space() != color_space) continue;
diff --git a/cc/resources/resource_pool_unittest.cc b/cc/resources/resource_pool_unittest.cc index ec9bae41..aa8e853e 100644 --- a/cc/resources/resource_pool_unittest.cc +++ b/cc/resources/resource_pool_unittest.cc
@@ -33,12 +33,6 @@ } protected: - void CheckAndReturnResource(Resource* resource) { - EXPECT_NE(nullptr, resource); - resource_pool_->ReleaseResource(resource); - resource_pool_->CheckBusyResources(); - } - scoped_refptr<TestContextProvider> context_provider_; std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; std::unique_ptr<ResourceProvider> resource_provider_; @@ -111,28 +105,32 @@ gfx::ColorSpace color_space1; gfx::ColorSpace color_space2 = gfx::ColorSpace::CreateSRGB(); - CheckAndReturnResource( - resource_pool_->AcquireResource(size, format, color_space1)); + Resource* resource = + resource_pool_->AcquireResource(size, format, color_space1); + resource_pool_->ReleaseResource(resource); + resource_pool_->CheckBusyResources(); EXPECT_EQ(1u, resource_provider_->num_resources()); // Same size/format should re-use resource. - Resource* resource = - resource_pool_->AcquireResource(size, format, color_space1); + resource = resource_pool_->AcquireResource(size, format, color_space1); EXPECT_EQ(1u, resource_provider_->num_resources()); - CheckAndReturnResource(resource); + resource_pool_->ReleaseResource(resource); + resource_pool_->CheckBusyResources(); EXPECT_EQ(1u, resource_provider_->num_resources()); // Different size/format should allocate new resource. resource = resource_pool_->AcquireResource(gfx::Size(50, 50), LUMINANCE_8, color_space1); EXPECT_EQ(2u, resource_provider_->num_resources()); - CheckAndReturnResource(resource); + resource_pool_->ReleaseResource(resource); + resource_pool_->CheckBusyResources(); EXPECT_EQ(2u, resource_provider_->num_resources()); // Different color space should allocate new resource. resource = resource_pool_->AcquireResource(size, format, color_space2); EXPECT_EQ(3u, resource_provider_->num_resources()); - CheckAndReturnResource(resource); + resource_pool_->ReleaseResource(resource); + resource_pool_->CheckBusyResources(); EXPECT_EQ(3u, resource_provider_->num_resources()); } @@ -319,47 +317,25 @@ ResourceFormat format = RGBA_8888; gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB(); - // Create unused resource with size 100x100. - CheckAndReturnResource( - resource_pool_->CreateResource(gfx::Size(100, 100), format, color_space)); + // Create unused resources with sizes close to 100, 100. + resource_pool_->ReleaseResource( + resource_pool_->CreateResource(gfx::Size(99, 100), format, color_space)); + resource_pool_->ReleaseResource( + resource_pool_->CreateResource(gfx::Size(99, 99), format, color_space)); + resource_pool_->ReleaseResource( + resource_pool_->CreateResource(gfx::Size(100, 99), format, color_space)); + resource_pool_->ReleaseResource( + resource_pool_->CreateResource(gfx::Size(101, 101), format, color_space)); + resource_pool_->CheckBusyResources(); - // Try some cases that are too large, none should succeed. - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(101, 100), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 101), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(90, 120), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(120, 120), format, - color_space)); - - // Try some cases that are more than 2x smaller than 100x100 in area and - // won't be re-used. - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(49, 100), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 49), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(50, 50), format, - color_space)); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(70, 70), format, - color_space)); - - // Try some cases that are smaller than 100x100, but within 2x area. Reuse - // should succeed. - CheckAndReturnResource( - resource_pool_->ReuseResource(gfx::Size(50, 100), format, color_space)); - CheckAndReturnResource( - resource_pool_->ReuseResource(gfx::Size(100, 50), format, color_space)); - CheckAndReturnResource( - resource_pool_->ReuseResource(gfx::Size(71, 71), format, color_space)); - - // 100x100 is an exact match and should succeed. A subsequent request for - // the same size should fail (the resource is already in use). - Resource* resource = - resource_pool_->ReuseResource(gfx::Size(100, 100), format, color_space); - EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 100), format, - color_space)); - CheckAndReturnResource(resource); + gfx::Size size(100, 100); + Resource* resource = resource_pool_->ReuseResource(size, format, color_space); + EXPECT_EQ(nullptr, resource); + size = gfx::Size(100, 99); + resource = resource_pool_->ReuseResource(size, format, color_space); + EXPECT_NE(nullptr, resource); + ASSERT_EQ(nullptr, resource_pool_->ReuseResource(size, format, color_space)); + resource_pool_->ReleaseResource(resource); } TEST_F(ResourcePoolTest, MemoryStateSuspended) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java index 2b42dbe..e1dc768 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -343,7 +343,7 @@ // Set up the animation placeholder to be the SurfaceView. This disables the // SurfaceView's 'hole' clipping during animations that are notified to the window. - mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getCompositorView()); + mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getSurfaceView()); // Inform the WindowAndroid of the keyboard accessory view. mWindowAndroid.setKeyboardAccessoryView((ViewGroup) findViewById(R.id.keyboard_accessory));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java deleted file mode 100644 index 0fe5e71..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java +++ /dev/null
@@ -1,455 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.compositor; - -import android.content.Context; -import android.graphics.PixelFormat; -import android.graphics.drawable.Drawable; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; - -/** - * Manage multiple SurfaceViews for the compositor, so that transitions between - * surfaces with and without an alpha channel can be visually smooth. - * - * This class allows a client to request a 'translucent' or 'opaque' surface, and we will signal via - * SurfaceHolder.Callback when it's ready. We guarantee that the client will receive surfaceCreated - * / surfaceDestroyed only for a surface that represents the most recently requested PixelFormat. - * - * Internally, we maintain two SurfaceViews, since calling setFormat() to change the PixelFormat - * results in a visual glitch as the surface is torn down. crbug.com/679902 - * - * The client has the responsibility to call doneWithUnownedSurface() at some point between when we - * call back its surfaceCreated, when it is safe for us to hide the SurfaceView with the wrong - * format. It is okay if it requests multiple surfaces without calling doneWithUnownedSurface. - * - * If the client requests the same format more than once in a row, it will still receive destroyed / - * created / changed messages for it, even though we won't tear it down. - * - * The full design doc is at https://goo.gl/aAmQzR . - */ -class CompositorSurfaceManager implements SurfaceHolder.Callback { - private static class SurfaceState { - public SurfaceView surfaceView; - - // Do we expect a surfaceCreated? - public boolean createPending; - - // Have we started destroying |surfaceView|, but haven't received surfaceDestroyed yet? - public boolean destroyPending; - - // Last PixelFormat that we received, or UNKNOWN if we don't know / don't want to cache it. - public int format; - - // Last known width, height for thsi surface. - public int width; - public int height; - - // Parent ViewGroup, or null. - private ViewGroup mParent; - - public SurfaceState(Context context, int format, SurfaceHolder.Callback callback) { - surfaceView = new SurfaceView(context); - surfaceView.setZOrderMediaOverlay(true); - surfaceView.setVisibility(View.VISIBLE); - surfaceHolder().setFormat(format); - surfaceHolder().addCallback(callback); - - // Set this to UNKNOWN until we get a format back. - this.format = PixelFormat.UNKNOWN; - } - - public SurfaceHolder surfaceHolder() { - return surfaceView.getHolder(); - } - - public boolean isValid() { - return surfaceHolder().getSurface().isValid(); - } - - // Attach to |parent|, such that isAttached() will be correct immediately. Otherwise, - // attaching and detaching can cause surfaceCreated / surfaceDestroyed callbacks without - // View.hasParent being up to date. - public void attachTo(ViewGroup parent, FrameLayout.LayoutParams lp) { - mParent = parent; - mParent.addView(surfaceView, lp); - } - - public void detachFromParent() { - final ViewGroup parent = mParent; - // Since removeView can call surfaceDestroyed before returning, be sure that isAttached - // will return false. - mParent = null; - parent.removeView(surfaceView); - } - - public boolean isAttached() { - return mParent != null; - } - } - - // SurfaceView with a translucent PixelFormat. - private final SurfaceState mTranslucent; - - // SurfaceView with an opaque PixelFormat. - private final SurfaceState mOpaque; - - // Surface that we last gave to the client with surfaceCreated. Cleared when we call - // surfaceDestroyed on |mClient|. Note that it's not necessary that Android has notified us - // the surface has been destroyed; we deliberately keep it around until the client tells us that - // it's okay to get rid of it. - private SurfaceState mOwnedByClient; - - // Surface that was most recently requested by the client. - private SurfaceState mRequestedByClient; - - // Client that we notify about surface change events. - private SurfaceHolder.Callback mClient; - - // View to which we'll attach the SurfaceView. - private final ViewGroup mParentView; - - public CompositorSurfaceManager(ViewGroup parentView, SurfaceHolder.Callback client) { - mParentView = parentView; - mClient = client; - - mTranslucent = new SurfaceState(parentView.getContext(), PixelFormat.TRANSLUCENT, this); - mOpaque = new SurfaceState(mParentView.getContext(), PixelFormat.OPAQUE, this); - } - - /** - * Turn off everything. - */ - public void shutDown() { - mTranslucent.surfaceHolder().removeCallback(this); - mOpaque.surfaceHolder().removeCallback(this); - } - - /** - * Called by the client to request a surface. Once called, we guarantee that the next call to - * surfaceCreated will match the most recent value of |format|. If the surface is already - * available for use, then we'll send synthetic callbacks as though it were destroyed and - * recreated. Note that |format| must be either OPAQUE or TRANSLUCENT. - */ - public void requestSurface(int format) { - mRequestedByClient = (format == PixelFormat.TRANSLUCENT) ? mTranslucent : mOpaque; - - // If destruction is pending, then we must wait for it to complete. When we're notified - // that it is destroyed, we'll re-start construction if the client still wants this surface. - // Note that we could send a surfaceDestroyed for the owned surface, if there is one, but we - // defer it until later so that the client can still use it until the new one is ready. - if (mRequestedByClient.destroyPending) return; - - // The requested surface isn't being torn down. - - // If the surface isn't attached yet, then attach it. Otherwise, we're still waiting for - // the surface to be created, or we've already received surfaceCreated for it. - if (!mRequestedByClient.isAttached()) { - attachSurfaceNow(mRequestedByClient); - assert mRequestedByClient.isAttached(); - return; - } - - // Surface is not pending destroy, and is attached. See if we need to send any synthetic - // callbacks to the client. If we're expecting a callback from Android, then we'll handle - // it when it arrives instead. - if (mRequestedByClient.createPending) return; - - // Surface is attached and no create is pending. Send a synthetic create. Note that, if - // Android destroyed the surface itself, then we'd have set |createPending| at that point. - // We don't check |isValid| here, since, technically, there could be a destroy in flight - // from Android. It's okay; we'll just notify the client at that point. Either way, we - // must tell the client that it now owns the surface. - - // Send a notification about any owned surface. Note that this can be |mRequestedByClient| - // which is fine. We'll send destroy / create for it. Also note that we don't actually - // start tear-down of the owned surface; the client notifies us via doneWithUnownedSurface - // when it is safe to do that. - disownClientSurface(mOwnedByClient); - - // The client now owns |mRequestedByClient|. Notify it that it's ready. - mOwnedByClient = mRequestedByClient; - mClient.surfaceCreated(mOwnedByClient.surfaceHolder()); - - // See if we're expecting a surfaceChanged. If not, then send a synthetic one. - if (mOwnedByClient.format != PixelFormat.UNKNOWN) { - mClient.surfaceChanged(mOwnedByClient.surfaceHolder(), mOwnedByClient.width, - mOwnedByClient.height, mOwnedByClient.format); - } - } - - /** - * Called to notify us that the client no longer needs the surface that it doesn't own. This - * tells us that we may destroy it. Note that it's okay if it never had an unowned surface. - */ - public void doneWithUnownedSurface() { - if (mOwnedByClient == null) return; - - SurfaceState unowned = (mOwnedByClient == mTranslucent) ? mOpaque : mTranslucent; - - if (mRequestedByClient == unowned) { - // Client is giving us back a surface that it's since requested but hasn't gotten yet. - // Do nothing. It will be notified when the new surface is ready, and it can call us - // again for the other surface, if it wants. - return; - } - - // Start destruction of this surface. To prevent recursive call-backs to the client, we - // post this for later. - detachSurfaceLater(unowned); - } - - /** - * Return the currently owned SurfaceHolder, if any. - */ - public SurfaceHolder getHolder() { - return mOwnedByClient != null ? mOwnedByClient.surfaceHolder() : null; - } - - /** - * Destroy and re-create the surface. Useful for a JB workaround needed by CompositorView. - */ - public void recreateSurfaceForJellyBean() { - // If they don't have a surface, then they'll get a new one anyway. - if (mOwnedByClient == null) return; - - // Notify the client that it no longer owns this surface, then destroy it. When destruction - // completes, we will recreate it automatically, since it will look like the client since - // re-requested it. That's why we send surfaceDestroyed here rather than letting our - // surfaceDestroyed do it when destruction completes. If we just started destruction while - // the client still owns the surface, then our surfaceDestroyed would assume that Android - // initiated the destruction, and wait for Android to recreate it. - - mParentView.post(new Runnable() { - @Override - public void run() { - if (mOwnedByClient == null) return; - SurfaceState owned = mOwnedByClient; - mClient.surfaceDestroyed(mOwnedByClient.surfaceHolder()); - mOwnedByClient = null; - detachSurfaceNow(owned); - } - }); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - SurfaceState state = getStateForHolder(holder); - assert state != null; - - // If this is the surface that the client currently cares about, then notify the client. - // Note that surfaceChanged is guaranteed to come only after surfaceCreated. Also, if the - // client has requested a different surface but hasn't gotten it yet, then skip this. - if (state == mOwnedByClient && state == mRequestedByClient) { - state.width = width; - state.height = height; - state.format = format; - mClient.surfaceChanged(holder, format, width, height); - } - } - - @Override - public void surfaceCreated(SurfaceHolder holder) { - SurfaceState state = getStateForHolder(holder); - assert state != null; - // Note that |createPending| might not be set, if Android destroyed and recreated this - // surface on its own. - - if (state != mRequestedByClient) { - // Surface is created, but it's not the one that's been requested most recently. Just - // destroy it again. - detachSurfaceLater(state); - return; - } - - // No create is pending. - state.createPending = false; - - // A surfaceChanged should arrive. - state.format = PixelFormat.UNKNOWN; - - // The client requested a surface, and it's now available. If the client owns a surface, - // then notify it that it doesn't. Note that the client can't own |state| at this point, - // since we would have removed ownership when we got surfaceDestroyed. It's okay if the - // client doesn't own either surface. - assert mOwnedByClient != state; - disownClientSurface(mOwnedByClient); - - // The client now owns this surface, so notify it. - mOwnedByClient = mRequestedByClient; - mClient.surfaceCreated(mOwnedByClient.surfaceHolder()); - } - - @Override - public void surfaceDestroyed(SurfaceHolder holder) { - SurfaceState state = getStateForHolder(holder); - assert state != null; - - // If no destroy is pending, then Android chose to destroy this surface and will, hopefully, - // re-create it at some point. Otherwise, a destroy is either posted or has already - // detached this SurfaceView. If it's already detached, then the destruction is complete - // and we can clear |destroyPending|. Otherwise, Android has destroyed this surface while - // our destroy was posted, and might even return it before it runs. When the post runs, it - // can sort that out based on whether the surface is valid or not. - if (!state.destroyPending) { - state.createPending = true; - } else if (!state.isAttached()) { - state.destroyPending = false; - } - - state.format = PixelFormat.UNKNOWN; - - // If the client owns this surface, then notify it synchronously that it no longer does. - // This can happen if Android destroys the surface on its own. It's also possible that - // we've detached it, if a destroy was pending. Either way, notify the client. - if (state == mOwnedByClient) { - disownClientSurface(mOwnedByClient); - - // Do not re-request the surface here. If android gives the surface back, then we'll - // re-signal the client about construction. - return; - } - - // The client doesn't own this surface, but might want it. - // If the client has requested this surface, then start construction on it. The client will - // be notified when it completes. This can happen if the client re-requests a surface after - // we start destruction on it from a previous request, for example. We post this for later, - // since we might be called while removing |state| from the view tree. In general, posting - // from here is good. - if (state == mRequestedByClient && !state.isAttached()) { - attachSurfaceLater(state); - } else if (state != mRequestedByClient && state.isAttached()) { - // This isn't the requested surface. If android destroyed it, then also unhook it so - // that it isn't recreated later. - detachSurfaceLater(state); - } - } - - /** - * Update the background drawable on all surfaces. - */ - public void setBackgroundDrawable(Drawable background) { - mTranslucent.surfaceView.setBackgroundDrawable(background); - mOpaque.surfaceView.setBackgroundDrawable(background); - } - - /** - * Set |willNotDraw| on all surfaces. - */ - public void setWillNotDraw(boolean willNotDraw) { - mTranslucent.surfaceView.setWillNotDraw(willNotDraw); - mOpaque.surfaceView.setWillNotDraw(willNotDraw); - } - - /** - * Return the SurfaceState for |holder|, or null if it isn't either. - */ - private SurfaceState getStateForHolder(SurfaceHolder holder) { - if (mTranslucent.surfaceHolder() == holder) return mTranslucent; - - if (mOpaque.surfaceHolder() == holder) return mOpaque; - - return null; - } - - /** - * Attach |state| to |mParentView| immedaitely. - */ - private void attachSurfaceNow(SurfaceState state) { - if (state.isAttached()) return; - - // If there is a destroy in-flight for this surface, then do nothing. - if (state.destroyPending) return; - - state.createPending = true; - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); - state.attachTo(mParentView, lp); - mParentView.bringChildToFront(state.surfaceView); - mParentView.postInvalidateOnAnimation(); - } - - /** - * Post a Runnable to attach |state|. This is helpful, since one cannot directly interact with - * the View heirarchy during Surface callbacks. - */ - private void attachSurfaceLater(final SurfaceState state) { - // We shouldn't try to post construction if there's an in-flight destroy. - assert !state.destroyPending; - state.createPending = true; - - mParentView.post(new Runnable() { - @Override - public void run() { - attachSurfaceNow(state); - } - }); - } - - /** - * Cause the client to disown |state| if it currently owns it. This involves notifying it that - * the surface has been destroyed (recall that ownership involves getting created). It's okay - * if |state| is null or isn't owned by the client. - */ - private void disownClientSurface(SurfaceState state) { - if (mOwnedByClient != state || state == null) return; - - mClient.surfaceDestroyed(mOwnedByClient.surfaceHolder()); - mOwnedByClient = null; - } - - /** - * Detach |state| from |mParentView| immediately. - */ - private void detachSurfaceNow(SurfaceState state) { - // If we're called while we're not attached, then do nothing. This makes it easier for the - // client, since it doesn't have to keep track of whether the outgoing surface has been - // destroyed or not. The client will be notified (or has already) when the surface is - // destroyed, if it currently owns it. - if (state.isAttached()) { - // We are attached. If the surface is not valid, then Android has destroyed it for some - // other reason, and we should clean up. Otherwise, just wait for Android to finish. - final boolean valid = state.isValid(); - - // If the surface is valid, then we expect a callback to surfaceDestroyed eventually. - state.destroyPending = valid; - - // Note that this might call back surfaceDestroyed before returning! - state.detachFromParent(); - - // If the surface was valid before, then we expect a surfaceDestroyed callback, which - // might have arrived during removeView. Either way, that callback will finish cleanup - // of |state|. - if (valid) return; - } - - // The surface isn't attached, or was attached but wasn't currently valid. Either way, - // we're not going to get a destroy, so notify the client now if needed. - disownClientSurface(state); - - // If the client has since re-requested the surface, then start construction. - if (state == mRequestedByClient) attachSurfaceNow(mRequestedByClient); - } - - /** - * Post detachment of |state|. This is safe during Surface callbacks. - */ - private void detachSurfaceLater(final SurfaceState state) { - // If |state| is not attached, then do nothing. There might be a destroy pending from - // Android, but in any case leave it be. - if (!state.isAttached()) return; - - state.destroyPending = true; - mParentView.post(new Runnable() { - @Override - public void run() { - detachSurfaceNow(state); - } - }); - } -}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java index 1d520a3..8fb53663 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -1,4 +1,4 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. +// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -9,7 +9,6 @@ import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.Rect; -import android.graphics.drawable.Drawable; import android.os.Build; import android.view.Display; import android.view.MotionEvent; @@ -18,9 +17,9 @@ import android.view.SurfaceView; import android.view.View; import android.view.WindowManager; -import android.widget.FrameLayout; import org.chromium.base.CommandLine; +import org.chromium.base.Log; import org.chromium.base.TraceEvent; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; @@ -48,7 +47,7 @@ * The is the {@link View} displaying the ui compositor results; including webpages and tabswitcher. */ @JNINamespace("android") -public class CompositorView extends FrameLayout implements SurfaceHolder.Callback2 { +public class CompositorView extends SurfaceView implements SurfaceHolder.Callback2 { private static final String TAG = "CompositorView"; private static final long NANOSECONDS_PER_MILLISECOND = 1000000; @@ -56,14 +55,6 @@ private final Rect mCacheAppRect = new Rect(); private final int[] mCacheViewPosition = new int[2]; - private CompositorSurfaceManager mCompositorSurfaceManager; - private boolean mOverlayVideoEnabled; - private boolean mAlwaysTranslucent; - - // Are we waiting to hide the outgoing surface until the foreground has something to display? - // If == 0, then no. If > 0, then yes. We'll hide when it transitions from one to zero. - private int mFramesUntilHideBackground; - private long mNativeCompositorView; private final LayoutRenderHost mRenderHost; private boolean mEnableTabletTabStack; @@ -82,9 +73,14 @@ private TabContentManager mTabContentManager; private View mRootView; + private int mSurfaceWidth; + private int mSurfaceHeight; private boolean mPreloadedResources; private List<Runnable> mDrawingFinishedCallbacks; + // The current SurfaceView pixel format. Defaults to OPAQUE. + private int mCurrentPixelFormat = PixelFormat.OPAQUE; + /** * Creates a {@link CompositorView}. This can be called only after the native library is * properly loaded. @@ -95,8 +91,8 @@ super(c); mRenderHost = host; resetFlags(); - setVisibility(View.INVISIBLE); + setZOrderMediaOverlay(true); } /** @@ -165,7 +161,7 @@ * Should be called for cleanup when the CompositorView instance is no longer used. */ public void shutDown() { - mCompositorSurfaceManager.shutDown(); + getHolder().removeCallback(this); if (mNativeCompositorView != 0) nativeDestroy(mNativeCompositorView); mNativeCompositorView = 0; } @@ -186,23 +182,9 @@ mNativeCompositorView = nativeInit(lowMemDevice, windowAndroid.getNativePointer(), layerTitleCache, tabContentManager); - // compositor_impl_android.cc will use 565 EGL surfaces if and only if we're using a low - // memory device, and no alpha channel is desired. Otherwise, it will use 8888. Since - // SurfaceFlinger doesn't need the eOpaque flag to optimize out alpha blending during - // composition if the buffer has no alpha channel, we can avoid using the extra background - // surface (and the memory it requires) in the low memory case. The output buffer will - // either have an alpha channel or not, depending on whether the compositor needs it. We - // can keep the surface translucent all the times without worrying about the impact on power - // usage during SurfaceFlinger composition. We might also want to set |mAlwaysTranslucent| - // on non-low memory devices, if we are running on hardware that implements efficient alpha - // blending. - mAlwaysTranslucent = lowMemDevice; - - mCompositorSurfaceManager = new CompositorSurfaceManager(this, this); - // In case the background drawable was set before now, update it. - mCompositorSurfaceManager.setBackgroundDrawable(getBackground()); - mCompositorSurfaceManager.setWillNotDraw(willNotDraw()); - mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat()); + assert !getHolder().getSurface().isValid() + : "Surface created before native library loaded."; + getHolder().addCallback(this); // Cover the black surface before it has valid content. setBackgroundColor(Color.WHITE); @@ -233,30 +215,13 @@ } /** - * @see SurfaceView#getHolder - */ - SurfaceHolder getHolder() { - return mCompositorSurfaceManager.getHolder(); - } - - /** * Enables/disables overlay video mode. Affects alpha blending on this view. * @param enabled Whether to enter or leave overlay video mode. */ public void setOverlayVideoMode(boolean enabled) { + mCurrentPixelFormat = enabled ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE; + getHolder().setFormat(mCurrentPixelFormat); nativeSetOverlayVideoMode(mNativeCompositorView, enabled); - - mOverlayVideoEnabled = enabled; - // Request the new surface, even if it's the same as the old one. We'll get a synthetic - // destroy / create / changed callback in that case, possibly before this returns. - mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat()); - // Note that we don't know if we'll get a surfaceCreated / surfaceDestoyed for this surface. - // We do know that if we do get one, then it will be for the surface that we just requested. - } - - private int getSurfacePixelFormat() { - return (mOverlayVideoEnabled || mAlwaysTranslucent) ? PixelFormat.TRANSLUCENT - : PixelFormat.OPAQUE; } @Override @@ -275,24 +240,22 @@ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { if (mNativeCompositorView == 0) return; - nativeSurfaceChanged(mNativeCompositorView, format, width, height, holder.getSurface()); mRenderHost.onPhysicalBackingSizeChanged(width, height); + mSurfaceWidth = width; + mSurfaceHeight = height; } @Override public void surfaceCreated(SurfaceHolder holder) { if (mNativeCompositorView == 0) return; - nativeSurfaceCreated(mNativeCompositorView); - mFramesUntilHideBackground = 2; mRenderHost.onSurfaceCreated(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { if (mNativeCompositorView == 0) return; - nativeSurfaceDestroyed(mNativeCompositorView); } @@ -321,7 +284,29 @@ */ @CalledByNative private void onJellyBeanSurfaceDisconnectWorkaround(boolean inOverlayMode) { - mCompositorSurfaceManager.recreateSurfaceForJellyBean(); + // There is a bug in JellyBean because of which we will not be able to + // reconnect to the existing Surface after we launch a new GPU process. + // We simply trick the JB Android code to allocate a new Surface. + // It does a strict comparison between the current format and the requested + // one, even if they are the same in practice. Furthermore, the format + // does not matter here since the producer-side EGL config overwrites it + // (but transparency might matter). + switch (mCurrentPixelFormat) { + case PixelFormat.OPAQUE: + mCurrentPixelFormat = PixelFormat.RGBA_8888; + break; + case PixelFormat.RGBA_8888: + mCurrentPixelFormat = inOverlayMode + ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE; + break; + case PixelFormat.TRANSLUCENT: + mCurrentPixelFormat = PixelFormat.RGBA_8888; + break; + default: + assert false; + Log.e(TAG, "Unknown current pixel format."); + } + getHolder().setFormat(mCurrentPixelFormat); } /** @@ -348,20 +333,6 @@ @CalledByNative private void didSwapBuffers() { - // If we're in the middle of a surface swap, then see if we've received a new frame yet for - // the new surface before hiding the outgoing surface. - if (mFramesUntilHideBackground > 1) { - // We need at least one more frame before we hide the outgoing surface. Make sure that - // there will be a frame. - mFramesUntilHideBackground--; - requestRender(); - } else if (mFramesUntilHideBackground == 1) { - // We can hide the outgoing surface, since the incoming one has a frame. It's okay if - // we've don't have an unowned surface. - mFramesUntilHideBackground = 0; - mCompositorSurfaceManager.doneWithUnownedSurface(); - } - List<Runnable> runnables = mDrawingFinishedCallbacks; mDrawingFinishedCallbacks = null; if (runnables == null) return; @@ -410,24 +381,6 @@ TraceEvent.end("CompositorView:finalizeLayers"); } - @Override - public void setWillNotDraw(boolean willNotDraw) { - if (mCompositorSurfaceManager != null) { - mCompositorSurfaceManager.setWillNotDraw(willNotDraw); - } - } - - @Override - public void setBackgroundDrawable(Drawable background) { - // We override setBackgroundDrawable since that's the common entry point from all the - // setBackground* calls in View. We still call to setBackground on the SurfaceView because - // SetBackgroundDrawable is deprecated, and the semantics are the same I think. - super.setBackgroundDrawable(background); - if (mCompositorSurfaceManager != null) { - mCompositorSurfaceManager.setBackgroundDrawable(background); - } - } - // Implemented in native private native long nativeInit(boolean lowMemDevice, long nativeWindowAndroid, LayerTitleCache layerTitleCache, TabContentManager tabContentManager);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java index 61e195c2..9499106 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -20,6 +20,7 @@ import android.util.Pair; import android.view.DragEvent; import android.view.MotionEvent; +import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; @@ -417,9 +418,9 @@ } /** - * @return The SurfaceView proxy used by the Compositor. + * @return The SurfaceView used by the Compositor. */ - public View getCompositorView() { + public SurfaceView getSurfaceView() { return mCompositorView; } @@ -975,7 +976,7 @@ mTabModelSelector = null; mLayerTitleCache.setTabModelSelector(null); setTab(null); - getCompositorView().setVisibility(View.INVISIBLE); + getSurfaceView().setVisibility(View.INVISIBLE); return selector; } @@ -985,7 +986,7 @@ * @param tabModelSelector */ public void onExitVR(TabModelSelector tabModelSelector) { - getCompositorView().setVisibility(View.VISIBLE); + getSurfaceView().setVisibility(View.VISIBLE); attachToTabModelSelector(tabModelSelector); }
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index 1f3e667..0f5e903 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -126,7 +126,6 @@ "java/src/org/chromium/chrome/browser/childaccounts/ChildAccountFeedbackReporter.java", "java/src/org/chromium/chrome/browser/childaccounts/ChildAccountService.java", "java/src/org/chromium/chrome/browser/childaccounts/ExternalFeedbackReporter.java", - "java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java", "java/src/org/chromium/chrome/browser/compositor/CompositorView.java", "java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java", "java/src/org/chromium/chrome/browser/compositor/Invalidator.java", @@ -1462,6 +1461,7 @@ "javatests/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferencesTest.java", "javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java", "javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java", + "javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java", "javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java", "javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java", "javatests/src/org/chromium/chrome/browser/preferences/website/WebsiteAddressTest.java", @@ -1560,7 +1560,6 @@ "junit/src/org/chromium/chrome/browser/ShortcutHelperTest.java", "junit/src/org/chromium/chrome/browser/SSLClientCertificateRequestTest.java", "junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java", - "junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java", "junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionControllerTest.java", "junit/src/org/chromium/chrome/browser/cookies/CanonicalCookieTest.java", "junit/src/org/chromium/chrome/browser/crash/LogcatExtractionRunnableUnitTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java index 1f62534c..4010656 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java
@@ -12,6 +12,7 @@ import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; import org.chromium.base.test.util.AdvancedMockContext; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.content.browser.test.NativeLibraryTestBase; @@ -29,7 +30,7 @@ @SmallTest @Feature({"Android-AppBase"}) @UiThreadTest - public void testSyncUsageAndCrashReporting { + public void testSyncUsageAndCrashReporting() { CommandLine.init(null); PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext()); PrefServiceBridge prefBridge = PrefServiceBridge.getInstance(); @@ -47,6 +48,7 @@ @SmallTest @Feature({"Android-AppBase"}) @UiThreadTest + @DisabledTest(message = "crbug.com/700500") public void testSetUsageAndCrashReporting() { CommandLine.init(null); PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext());
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java deleted file mode 100644 index 4ed9c7c..0000000 --- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java +++ /dev/null
@@ -1,440 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.compositor; - -import android.app.Activity; -import android.graphics.PixelFormat; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.widget.FrameLayout; - -import static org.hamcrest.Matchers.lessThan; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentMatchers; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.Robolectric; -import org.robolectric.Shadows; -import org.robolectric.annotation.Config; -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; -import org.robolectric.shadows.ShadowLooper; -import org.robolectric.shadows.ShadowSurfaceView; - -import org.chromium.base.test.util.Feature; -import org.chromium.testing.local.LocalRobolectricTestRunner; - -import java.util.Set; - -/** - * Unit tests for the CompositorSurfaceManager. - */ -@RunWith(LocalRobolectricTestRunner.class) -@Config(manifest = Config.NONE) -public class CompositorSurfaceManagerTest { - @Mock - private SurfaceHolder.Callback mCallback; - - private CompositorSurfaceManager mManager; - - private FrameLayout mLayout; - - /** - * Implementation of a SurfaceView shadow that provides additional functionality for controlling - * the state of the underlying (fake) Surface. - */ - @Implements(SurfaceView.class) - public static class MyShadowSurfaceView extends ShadowSurfaceView { - private final MyFakeSurfaceHolder mHolder = new MyFakeSurfaceHolder(); - - /** - * Robolectric's FakeSurfaceHolder doesn't keep track of the format, etc. - */ - public static class MyFakeSurfaceHolder extends ShadowSurfaceView.FakeSurfaceHolder { - /** - * Fake surface that lets us control whether it's valid or not. - */ - public static class MyFakeSurface extends Surface { - public boolean valid = false; - - @Override - public boolean isValid() { - return valid; - } - } - - private int mFormat = PixelFormat.UNKNOWN; - private final MyFakeSurface mSurface = new MyFakeSurface(); - - @Implementation - public void setFormat(int format) { - mFormat = format; - } - - public int getFormat() { - return mFormat; - } - - // Return a surface that we can control if it's valid or not. - @Override - public Surface getSurface() { - return getFakeSurface(); - } - - public MyFakeSurface getFakeSurface() { - return mSurface; - } - } - - public MyShadowSurfaceView() {} - - @Implementation - public SurfaceHolder getHolder() { - return getMyFakeSurfaceHolder(); - } - - @Override - public FakeSurfaceHolder getFakeSurfaceHolder() { - return getMyFakeSurfaceHolder(); - } - - public MyFakeSurfaceHolder getMyFakeSurfaceHolder() { - return mHolder; - } - } - - @Before - public void beforeTest() { - MockitoAnnotations.initMocks(this); - Activity activity = Robolectric.buildActivity(Activity.class).setup().get(); - mLayout = new FrameLayout(activity); - mManager = new CompositorSurfaceManager(mLayout, mCallback); - } - - private void runDelayedTasks() { - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - } - - /** - * Return the callback for |view|, or null. Will get mad if there's more than one. - */ - private SurfaceHolder.Callback callbackFor(SurfaceView view) { - MyShadowSurfaceView viewShadow = (MyShadowSurfaceView) Shadows.shadowOf(view); - ShadowSurfaceView.FakeSurfaceHolder viewHolder = viewShadow.getFakeSurfaceHolder(); - Set<SurfaceHolder.Callback> callbacks = viewHolder.getCallbacks(); - // Zero or one is okay. - assertThat(callbacks.size(), lessThan(2)); - - if (callbacks.size() == 1) return callbacks.iterator().next(); - - return null; - } - - private MyShadowSurfaceView.MyFakeSurfaceHolder fakeHolderFor(SurfaceView view) { - MyShadowSurfaceView viewShadow = (MyShadowSurfaceView) Shadows.shadowOf(view); - return viewShadow.getMyFakeSurfaceHolder(); - } - - private void setSurfaceValid(SurfaceView view, boolean valid) { - fakeHolderFor(view).getFakeSurface().valid = valid; - } - - /** - * Find and return the SurfaceView with format |format|. - */ - private SurfaceView findSurface(int format) { - final int childCount = mLayout.getChildCount(); - for (int i = 0; i < childCount; i++) { - final SurfaceView child = (SurfaceView) mLayout.getChildAt(i); - if (fakeHolderFor(child).getFormat() == format) return child; - } - - return null; - } - - /** - * Request the pixel format |format|, and return the SurfaceView for it if it's attached. You - * are responsible for sending surfaceCreated / Changed to |mManager| if you want it to think - * that Android has provided the Surface. - */ - private SurfaceView requestSurface(int format) { - mManager.requestSurface(format); - runDelayedTasks(); - - return findSurface(format); - } - - /** - * Request format |format|, and send created / changed callbacks to |mManager| as if Android - * had provided the underlying Surface. - */ - private SurfaceView requestThenCreateSurface(int format) { - SurfaceView view = requestSurface(format); - setSurfaceValid(view, true); - callbackFor(view).surfaceCreated(view.getHolder()); - final int actualFormat = - (format == PixelFormat.OPAQUE) ? PixelFormat.RGB_565 : PixelFormat.RGBA_8888; - final int width = 320; - final int height = 240; - callbackFor(view).surfaceChanged(view.getHolder(), actualFormat, width, height); - - return view; - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestOpaqueSurface() { - // Request a SurfaceView, and test in detail that it worked. - SurfaceView opaque = requestSurface(PixelFormat.OPAQUE); - verify(mCallback, times(0)).surfaceCreated(ArgumentMatchers.<SurfaceHolder>any()); - verify(mCallback, times(0)) - .surfaceChanged( - ArgumentMatchers.<SurfaceHolder>any(), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any()); - - // Check that there's an opaque SurfaceView . - assertEquals(1, mLayout.getChildCount()); - assertTrue(fakeHolderFor(opaque).getFormat() == PixelFormat.OPAQUE); - - // Verify that we are notified when the surface is created. - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any()); - - // Verify that we are notified when the surface is changed. - final int format = PixelFormat.RGB_565; - final int width = 320; - final int height = 240; - callbackFor(opaque).surfaceChanged(opaque.getHolder(), format, width, height); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceChanged(opaque.getHolder(), format, width, height); - verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any()); - - // Verify that we are notified when the surface is destroyed. - callbackFor(opaque).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceChanged(opaque.getHolder(), format, width, height); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestOpaqueThenTranslucentSurface() { - // Request opaque then translucent. - SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE); - SurfaceView translucent = requestThenCreateSurface(PixelFormat.TRANSLUCENT); - - // Verify that we received a destroy for |opaque| and created / changed for |translucent|. - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(translucent.getHolder()); - verify(mCallback, times(1)) - .surfaceChanged(eq(translucent.getHolder()), anyInt(), anyInt(), anyInt()); - - // Both views should be present. - assertEquals(2, mLayout.getChildCount()); - - // Only the translucent surface should be left. Note that the old view is still valid. - mManager.doneWithUnownedSurface(); - runDelayedTasks(); - assertEquals(1, mLayout.getChildCount()); - assertNotNull(findSurface(PixelFormat.TRANSLUCENT)); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestSameSurface() { - // Request an opaque surface, get it, then request it again. Verify that we get synthetic - // create / destroy callbacks. - SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - - // Surface is curerntly valid. Request again. We should get back a destroy and create. - assertEquals(opaque, requestSurface(PixelFormat.OPAQUE)); - verify(mCallback, times(2)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(2)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - assertEquals(1, mLayout.getChildCount()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestSameSurfaceBeforeReady() { - // Request an opaque surface, then request it again before the first one shows up. - SurfaceView opaque = requestSurface(PixelFormat.OPAQUE); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - - // Request again. We shouldn't get any callbacks, since the surface is still pending. - assertEquals(opaque, requestSurface(PixelFormat.OPAQUE)); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - - // Only the opaque view should be attached. - assertEquals(1, mLayout.getChildCount()); - - // When the surface is created, we should get notified created / changed, but not destroyed. - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - - callbackFor(opaque).surfaceChanged(opaque.getHolder(), PixelFormat.RGB_565, 320, 240); - verify(mCallback, times(1)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestDifferentSurfacesBeforeReady() { - // Request an opaque surface, then request the translucent one before the it one shows up. - SurfaceView opaque = requestSurface(PixelFormat.OPAQUE); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - - // Request translucent. We should get no callbacks, but both views should be attached. - SurfaceView translucent = requestSurface(PixelFormat.TRANSLUCENT); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)).surfaceCreated(translucent.getHolder()); - assertEquals(2, mLayout.getChildCount()); - - // If the opaque surface arrives, we shouldn't hear about it. It should be detached, since - // we've requested the other one. - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - runDelayedTasks(); - assertEquals(1, mLayout.getChildCount()); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)).surfaceCreated(translucent.getHolder()); - verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder()); - - // When we create the translucent surface, we should be notified. - callbackFor(translucent).surfaceCreated(translucent.getHolder()); - verify(mCallback, times(0)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(translucent.getHolder()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testPendingSurfaceChangedCallback() { - // Request an opaque surface, and request it again between 'created' and 'changed'. We - // should get a synthetic 'created', but a real 'changed' callback. - SurfaceView opaque = requestSurface(PixelFormat.OPAQUE); - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - runDelayedTasks(); - - // Sanity check. - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(0)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - - // Re-request while 'changed' is still pending. We should get a synthetic 'destroyed' and - // synthetic 'created'. - assertEquals(opaque, requestSurface(PixelFormat.OPAQUE)); - verify(mCallback, times(2)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(0)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - - // Send 'changed', and expect that we'll receive it. - callbackFor(opaque).surfaceChanged(opaque.getHolder(), PixelFormat.RGB_565, 320, 240); - verify(mCallback, times(1)) - .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testJellyBeanWorkaround() { - // See if recreateSurfaceForJellyBean destroys / re-creates the surface. - // should get a synthetic 'created', but a real 'changed' callback. - SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - assertEquals(1, mLayout.getChildCount()); - - // We should be notified that the surface was destroyed via synthetic callback, and the - // surface should be detached. - mManager.recreateSurfaceForJellyBean(); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - assertEquals(0, mLayout.getChildCount()); - - // When the surface really is destroyed, it should be re-attached. We should not be - // notified again, though. - callbackFor(opaque).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - assertEquals(1, mLayout.getChildCount()); - - // When the surface is re-created, we should be notified. - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(2)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - assertEquals(1, mLayout.getChildCount()); - } - - @Test - @Feature("Compositor") - @Config(shadows = {MyShadowSurfaceView.class}) - public void testRequestSurfaceDuringDestruction() { - // If we re-request a surface while we're tearing it down, it should be re-attached and - // given back to us once the destruction completes. - SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE); - SurfaceView translucent = requestThenCreateSurface(PixelFormat.TRANSLUCENT); - mManager.doneWithUnownedSurface(); - - // The transparent surface should be attached, and the opaque one detached. - assertEquals(1, mLayout.getChildCount()); - assertNotNull(findSurface(PixelFormat.TRANSLUCENT)); - - // Re-request the opaque surface. Nothing should happen until it's destroyed. It should - // not be re-attached, since that is also deferred until destruction. - assertEquals(null, requestSurface(PixelFormat.OPAQUE)); - assertEquals(1, mLayout.getChildCount()); - assertNotNull(findSurface(PixelFormat.TRANSLUCENT)); - - // When the opaque surface is destroyed, then it should be re-attached. No callbacks shoud - // have arrived yet, except for initial creation and (synthetic) destroyed when we got the - // translucent surface. - callbackFor(opaque).surfaceDestroyed(opaque.getHolder()); - assertEquals(2, mLayout.getChildCount()); - verify(mCallback, times(1)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(0)).surfaceDestroyed(translucent.getHolder()); - - // When the opaque surface becomes available, we'll get the synthetic destroy for the - // translucent one that we lost ownership of, and the real create for the opaque one. - callbackFor(opaque).surfaceCreated(opaque.getHolder()); - assertEquals(2, mLayout.getChildCount()); - verify(mCallback, times(2)).surfaceCreated(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder()); - verify(mCallback, times(1)).surfaceDestroyed(translucent.getHolder()); - } -}
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index a49eecf..b25cfb1 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1803,6 +1803,9 @@ <message name="IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES" desc="Label for the USB devices in site settings."> USB devices </message> + <message name="IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL" desc="Title tooltip and accessibility text for the button to remove zoom levels in site settings"> + Remove zoom level + </message> <message name="IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS" desc="Label for the Zoom levels category in site settings."> Zoom levels </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 9cdec6b..17fcc30 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -3346,8 +3346,6 @@ "obsolete_system/obsolete_system_win.cc", "pdf/pdf_extension_util.cc", "pdf/pdf_extension_util.h", - "power_usage_monitor/power_usage_monitor.cc", - "power_usage_monitor/power_usage_monitor.h", "process_singleton_modal_dialog_lock.cc", "process_singleton_modal_dialog_lock.h", "process_singleton_posix.cc",
diff --git a/chrome/browser/android/vr_shell/BUILD.gn b/chrome/browser/android/vr_shell/BUILD.gn index fd7b38e..3cda088 100644 --- a/chrome/browser/android/vr_shell/BUILD.gn +++ b/chrome/browser/android/vr_shell/BUILD.gn
@@ -19,6 +19,8 @@ "animation.h", "easing.cc", "easing.h", + "mailbox_to_surface_bridge.cc", + "mailbox_to_surface_bridge.h", "non_presenting_gvr_delegate.cc", "non_presenting_gvr_delegate.h", "ui_elements.cc", @@ -72,6 +74,7 @@ "//content/public/common", "//device/gamepad", "//device/vr", + "//services/ui/public/cpp/gpu", "//ui/android", "//ui/base", "//ui/display",
diff --git a/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc new file mode 100644 index 0000000..0972c3e --- /dev/null +++ b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc
@@ -0,0 +1,345 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h" + +#include <string> + +#include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "base/sys_info.h" +#include "cc/output/context_provider.h" +#include "content/public/browser/android/compositor.h" +#include "gpu/GLES2/gl2extchromium.h" +#include "gpu/command_buffer/client/gles2_interface.h" +#include "gpu/command_buffer/common/mailbox.h" +#include "gpu/command_buffer/common/mailbox_holder.h" +#include "gpu/command_buffer/common/sync_token.h" +#include "gpu/ipc/client/gpu_channel_host.h" +#include "gpu/ipc/common/gpu_surface_tracker.h" +#include "services/ui/public/cpp/gpu/context_provider_command_buffer.h" +#include "ui/gl/android/surface_texture.h" + +#include <android/native_window_jni.h> + +#define VOID_OFFSET(x) reinterpret_cast<void*>(x) +#define SHADER(Src) #Src + +namespace { + +const char kQuadCopyVertex[] = SHADER( + /* clang-format off */ + attribute vec4 a_Position; + attribute vec2 a_TexCoordinate; + varying vec2 v_TexCoordinate; + void main() { + v_TexCoordinate = a_TexCoordinate; + gl_Position = a_Position; + } +); /* clang-format on */ + +const char kQuadCopyFragment[] = SHADER( + /* clang-format off */ + precision highp float; + uniform sampler2D u_Texture; + varying vec2 v_TexCoordinate; + void main() { + gl_FragColor = texture2D(u_Texture, v_TexCoordinate); + } +); /* clang-format on */ + +const float kQuadVertices[] = { + // clang-format off + // x y u, v + -1.f, 1.f, 0.f, 1.f, + -1.f, -1.f, 0.f, 0.f, + 1.f, -1.f, 1.f, 0.f, + 1.f, 1.f, 1.f, 1.f}; +static constexpr int kQuadVerticesSize = sizeof(kQuadVertices); + +GLuint CompileShader(gpu::gles2::GLES2Interface* gl, + GLenum shader_type, + const GLchar* shader_source) { + GLuint shader_handle = gl->CreateShader(shader_type); + if (shader_handle != 0) { + // Pass in the shader source. + GLint len = strlen(shader_source); + gl->ShaderSource(shader_handle, 1, &shader_source, &len); + // Compile the shader. + gl->CompileShader(shader_handle); + // Get the compilation status. + GLint status = 0; + gl->GetShaderiv(shader_handle, GL_COMPILE_STATUS, &status); + if (status == GL_FALSE) { + GLint info_log_length = 0; + gl->GetShaderiv(shader_handle, GL_INFO_LOG_LENGTH, &info_log_length); + auto str_info_log = base::MakeUnique<GLchar[]>(info_log_length + 1); + gl->GetShaderInfoLog(shader_handle, info_log_length, nullptr, + str_info_log.get()); + DLOG(ERROR) << "Error compiling shader: " << str_info_log.get(); + gl->DeleteShader(shader_handle); + shader_handle = 0; + } + } + + return shader_handle; +} + +GLuint CreateAndLinkProgram(gpu::gles2::GLES2Interface* gl, + GLuint vertex_shader_handle, + GLuint fragment_shader_handle) { + GLuint program_handle = gl->CreateProgram(); + + if (program_handle != 0) { + // Bind the vertex shader to the program. + gl->AttachShader(program_handle, vertex_shader_handle); + + // Bind the fragment shader to the program. + gl->AttachShader(program_handle, fragment_shader_handle); + + // Link the two shaders together into a program. + gl->LinkProgram(program_handle); + + // Get the link status. + GLint link_status = 0; + gl->GetProgramiv(program_handle, GL_LINK_STATUS, &link_status); + + // If the link failed, delete the program. + if (link_status == GL_FALSE) { + GLint info_log_length; + gl->GetProgramiv(program_handle, GL_INFO_LOG_LENGTH, &info_log_length); + + auto str_info_log = base::MakeUnique<GLchar[]>(info_log_length + 1); + gl->GetProgramInfoLog(program_handle, info_log_length, nullptr, + str_info_log.get()); + DLOG(ERROR) << "Error compiling program: " << str_info_log.get(); + gl->DeleteProgram(program_handle); + program_handle = 0; + } + } + + return program_handle; +} + +GLuint ConsumeTexture(gpu::gles2::GLES2Interface* gl, + const gpu::MailboxHolder& mailbox) { + TRACE_EVENT0("gpu", "MailboxToSurfaceBridge::ConsumeTexture"); + gl->WaitSyncTokenCHROMIUM(mailbox.sync_token.GetConstData()); + + return gl->CreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, + mailbox.mailbox.name); +} + +} // namespace + +namespace vr_shell { + +MailboxToSurfaceBridge::MailboxToSurfaceBridge() : weak_ptr_factory_(this) {} + +MailboxToSurfaceBridge::~MailboxToSurfaceBridge() { + if (surface_handle_) { + // Unregister from the surface tracker to avoid a resource leak. + gpu::GpuSurfaceTracker* tracker = gpu::GpuSurfaceTracker::Get(); + tracker->UnregisterViewSurface(surface_handle_); + } + DestroyContext(); +} + +void MailboxToSurfaceBridge::OnContextAvailable( + scoped_refptr<cc::ContextProvider> provider) { + // Must save a reference to the ContextProvider to keep it alive, + // otherwise the GL context created from it becomes invalid. + context_provider_ = std::move(provider); + + if (!context_provider_->BindToCurrentThread()) { + DLOG(ERROR) << "Failed to init ContextProvider"; + return; + } + + gl_ = context_provider_->ContextGL(); + + if (!gl_) { + DLOG(ERROR) << "Did not get a GL context"; + return; + } + InitializeRenderer(); +} + +void MailboxToSurfaceBridge::CreateSurface( + gl::SurfaceTexture* surface_texture) { + ANativeWindow* window = surface_texture->CreateSurface(); + gpu::GpuSurfaceTracker* tracker = gpu::GpuSurfaceTracker::Get(); + ANativeWindow_acquire(window); + // Skip ANativeWindow_setBuffersGeometry, the default size appears to work. + surface_handle_ = tracker->AddSurfaceForNativeWidget(window); + + auto surface = base::MakeUnique<gl::ScopedJavaSurface>(surface_texture); + tracker->RegisterViewSurface(surface_handle_, surface->j_surface().obj()); + // Unregistering happens in the destructor. + ANativeWindow_release(window); + + // Our attributes must be compatible with the shared offscreen + // surface used by virtualized contexts, otherwise mailbox + // synchronization doesn't work properly - it assumes a shared + // underlying GL context. See GetCompositorContextAttributes + // in content/browser/renderer_host/compositor_impl_android.cc + // and crbug.com/699330. + + gpu::gles2::ContextCreationAttribHelper attributes; + attributes.alpha_size = -1; + attributes.red_size = 8; + attributes.green_size = 8; + attributes.blue_size = 8; + attributes.stencil_size = 0; + attributes.depth_size = 0; + attributes.samples = 0; + attributes.sample_buffers = 0; + attributes.bind_generates_resource = false; + if (base::SysInfo::IsLowEndDevice()) { + attributes.alpha_size = 0; + attributes.red_size = 5; + attributes.green_size = 6; + attributes.blue_size = 5; + } + + content::Compositor::CreateContextProvider( + surface_handle_, attributes, gpu::SharedMemoryLimits::ForMailboxContext(), + base::Bind(&MailboxToSurfaceBridge::OnContextAvailable, + weak_ptr_factory_.GetWeakPtr())); +} + +void MailboxToSurfaceBridge::ResizeSurface(int width, int height) { + if (!gl_) { + // We're not initialized yet, save the requested size for later. + needs_resize_ = true; + resize_width_ = width; + resize_height_ = height; + return; + } + DVLOG(1) << __FUNCTION__ << ": resize Surface to " << + width << "x" << height; + gl_->ResizeCHROMIUM(width, height, 1.f, false); + gl_->Viewport(0, 0, width, height); +} + +bool MailboxToSurfaceBridge::CopyMailboxToSurfaceAndSwap( + const gpu::MailboxHolder& mailbox) { + if (!gl_) { + // We may not have a context yet, i.e. due to surface initialization + // being incomplete. This is not an error, but we obviously can't draw + // yet. + return false; + } + + if (needs_resize_) { + ResizeSurface(resize_width_, resize_height_); + needs_resize_ = false; + } + + GLuint sourceTexture = ConsumeTexture(gl_, mailbox); + DrawQuad(sourceTexture); + gl_->SwapBuffers(); + return true; +} + +void MailboxToSurfaceBridge::DestroyContext() { + gl_ = nullptr; + context_provider_ = nullptr; +} + +void MailboxToSurfaceBridge::InitializeRenderer() { + GLuint vertex_shader_handle = + CompileShader(gl_, GL_VERTEX_SHADER, kQuadCopyVertex); + if (!vertex_shader_handle) { + DestroyContext(); + return; + } + + GLuint fragment_shader_handle = + CompileShader(gl_, GL_FRAGMENT_SHADER, kQuadCopyFragment); + if (!fragment_shader_handle) { + DestroyContext(); + return; + } + + GLuint program_handle = + CreateAndLinkProgram(gl_, vertex_shader_handle, fragment_shader_handle); + if (!program_handle) { + DestroyContext(); + return; + } + + // Once the program is linked the shader objects are no longer needed + gl_->DeleteShader(vertex_shader_handle); + gl_->DeleteShader(fragment_shader_handle); + + GLuint position_handle = gl_->GetAttribLocation(program_handle, "a_Position"); + GLuint texCoord_handle = + gl_->GetAttribLocation(program_handle, "a_TexCoordinate"); + GLuint texUniform_handle = + gl_->GetUniformLocation(program_handle, "u_Texture"); + + GLuint vertexBuffer = 0; + gl_->GenBuffers(1, &vertexBuffer); + gl_->BindBuffer(GL_ARRAY_BUFFER, vertexBuffer); + gl_->BufferData(GL_ARRAY_BUFFER, kQuadVerticesSize, kQuadVertices, + GL_STATIC_DRAW); + + // Set state once only, we assume that nobody else modifies GL state in a way + // that would interfere with our operations. + gl_->Disable(GL_CULL_FACE); + gl_->DepthMask(GL_FALSE); + gl_->Disable(GL_DEPTH_TEST); + gl_->Disable(GL_SCISSOR_TEST); + gl_->Disable(GL_BLEND); + gl_->Disable(GL_POLYGON_OFFSET_FILL); + + // Not using gl_->Viewport, we assume that it defaults to the whole + // surface and gets updated by ResizeSurface externally as + // appropriate. + + gl_->UseProgram(program_handle); + + // Bind vertex attributes + gl_->BindBuffer(GL_ARRAY_BUFFER, vertexBuffer); + + gl_->EnableVertexAttribArray(position_handle); + gl_->EnableVertexAttribArray(texCoord_handle); + + static constexpr size_t VERTEX_STRIDE = sizeof(float) * 4; + static constexpr size_t POSITION_ELEMENTS = 2; + static constexpr size_t TEXCOORD_ELEMENTS = 2; + static constexpr size_t POSITION_OFFSET = 0; + static constexpr size_t TEXCOORD_OFFSET = sizeof(float) * 2; + + gl_->VertexAttribPointer(position_handle, POSITION_ELEMENTS, GL_FLOAT, false, + VERTEX_STRIDE, VOID_OFFSET(POSITION_OFFSET)); + gl_->VertexAttribPointer(texCoord_handle, TEXCOORD_ELEMENTS, GL_FLOAT, false, + VERTEX_STRIDE, VOID_OFFSET(TEXCOORD_OFFSET)); + + gl_->ActiveTexture(GL_TEXTURE0); + gl_->Uniform1i(texUniform_handle, 0); +} + +void MailboxToSurfaceBridge::DrawQuad(unsigned int texture_handle) { + // We're redrawing over the entire viewport, but it's generally more + // efficient on mobile tiling GPUs to clear anyway as a hint that + // we're done with the old content. TODO(klausw,crbug.com/700389): + // investigate using gl_->DiscardFramebufferEXT here since that's more + // efficient on desktop, but it would need a capability check since + // it's not supported on older devices such as Nexus 5X. + gl_->Clear(GL_COLOR_BUFFER_BIT); + + // Configure texture. This is a 1:1 pixel copy since the surface + // size is resized to match the source canvas, so we can use + // GL_NEAREST. + gl_->BindTexture(GL_TEXTURE_2D, texture_handle); + gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + gl_->DrawArrays(GL_TRIANGLE_FAN, 0, 4); +} + +} // namespace vr_shell
diff --git a/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h new file mode 100644 index 0000000..8ba1540 --- /dev/null +++ b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h
@@ -0,0 +1,63 @@ +// 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 CHROME_BROWSER_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_ +#define CHROME_BROWSER_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_ + +#include "base/memory/weak_ptr.h" + +namespace gl { +class SurfaceTexture; +} + +namespace gpu { +struct MailboxHolder; +namespace gles2 { +class GLES2Interface; +} +} + +namespace cc { +class ContextProvider; +} + +namespace vr_shell { + +class MailboxToSurfaceBridge { + public: + MailboxToSurfaceBridge(); + ~MailboxToSurfaceBridge(); + + void CreateSurface(gl::SurfaceTexture*); + + void ResizeSurface(int width, int height); + + // Returns true if swapped successfully. This can fail if the GL + // context isn't ready for use yet, in that case the caller + // won't get a new frame on the SurfaceTexture. + bool CopyMailboxToSurfaceAndSwap(const gpu::MailboxHolder& mailbox); + + private: + void OnContextAvailable(scoped_refptr<cc::ContextProvider>); + void InitializeRenderer(); + void DestroyContext(); + void DrawQuad(unsigned int textureHandle); + + scoped_refptr<cc::ContextProvider> context_provider_; + gpu::gles2::GLES2Interface* gl_ = nullptr; + int surface_handle_ = 0; + + // Saved state for a pending resize, the dimensions are only + // valid if needs_resize_ is true. + bool needs_resize_ = false; + int resize_width_; + int resize_height_; + + // Must be last. + base::WeakPtrFactory<MailboxToSurfaceBridge> weak_ptr_factory_; +}; + +} // namespace vr_shell + +#endif // CHROME_BROWSER_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_
diff --git a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc index c25da54..c2457ba 100644 --- a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc +++ b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc
@@ -20,7 +20,11 @@ : task_runner_(base::ThreadTaskRunnerHandle::Get()), binding_(this), weak_ptr_factory_(this) { - gvr_api_ = gvr::GvrApi::WrapNonOwned(context); + // Context may be null, see VrShellDelegate#createNonPresentingNativeContext + // for possible reasons a context could fail to be created. For example, + // the user might uninstall apps or clear data after VR support was detected. + if (context) + gvr_api_ = gvr::GvrApi::WrapNonOwned(context); } NonPresentingGvrDelegate::~NonPresentingGvrDelegate() { @@ -40,7 +44,8 @@ void NonPresentingGvrDelegate::Pause() { vsync_task_.Cancel(); vsync_paused_ = true; - gvr_api_->PauseTracking(); + if (gvr_api_) + gvr_api_->PauseTracking(); } void NonPresentingGvrDelegate::Resume() { @@ -60,12 +65,14 @@ void NonPresentingGvrDelegate::StopVSyncLoop() { vsync_task_.Cancel(); + binding_.Close(); if (!callback_.is_null()) { base::ResetAndReturn(&callback_) .Run(nullptr, base::TimeDelta(), -1, - device::mojom::VRVSyncProvider::Status::RETRY); + device::mojom::VRVSyncProvider::Status::CLOSING); } - gvr_api_->PauseTracking(); + if (gvr_api_) + gvr_api_->PauseTracking(); // If the loop is stopped, it's not considered to be paused. vsync_paused_ = false; } @@ -73,8 +80,10 @@ void NonPresentingGvrDelegate::StartVSyncLoop() { vsync_task_.Reset( base::Bind(&NonPresentingGvrDelegate::OnVSync, base::Unretained(this))); - gvr_api_->RefreshViewerProfile(); - gvr_api_->ResumeTracking(); + if (gvr_api_) { + gvr_api_->RefreshViewerProfile(); + gvr_api_->ResumeTracking(); + } OnVSync(); } @@ -136,6 +145,12 @@ gvr::ClockTimePoint target_time = gvr::GvrApi::GetTimePointNow(); target_time.monotonic_system_time_nanos += kPredictionTimeWithoutVsyncNanos; + if (!gvr_api_) { + callback.Run(device::mojom::VRPosePtr(nullptr), time, -1, + device::mojom::VRVSyncProvider::Status::SUCCESS); + return; + } + gvr::Mat4f head_mat = gvr_api_->ApplyNeckModel( gvr_api_->GetHeadSpaceFromStartSpaceRotation(target_time), 1.0f); callback.Run(VrShell::VRPosePtrFromGvrPose(head_mat), time, -1, @@ -156,8 +171,16 @@ void NonPresentingGvrDelegate::CreateVRDisplayInfo( const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback, uint32_t device_id) { - callback.Run(VrShell::CreateVRDisplayInfo( - gvr_api_.get(), device::kInvalidRenderTargetSize, device_id)); + if (!gvr_api_) { + callback.Run(device::mojom::VRDisplayInfoPtr(nullptr)); + return; + } + + gvr::Sizei webvr_size = VrShell::GetRecommendedWebVrSize(gvr_api_.get()); + DVLOG(1) << __FUNCTION__ << ": resize recommended to " << webvr_size.width + << "x" << webvr_size.height; + callback.Run( + VrShell::CreateVRDisplayInfo(gvr_api_.get(), webvr_size, device_id)); } } // namespace vr_shell
diff --git a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h index 0bf9104..741b5d515 100644 --- a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h +++ b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h
@@ -28,10 +28,12 @@ // GvrDelegate implementation void SetWebVRSecureOrigin(bool secure_origin) override {} - void SubmitWebVRFrame() override {} + void SubmitWebVRFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) override {} void UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds) override {} + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size) override {} void OnVRVsyncProviderRequest( device::mojom::VRVSyncProviderRequest request) override; void UpdateVSyncInterval(int64_t timebase_nanos,
diff --git a/chrome/browser/android/vr_shell/vr_shell.cc b/chrome/browser/android/vr_shell/vr_shell.cc index 21193ab..efce6d1 100644 --- a/chrome/browser/android/vr_shell/vr_shell.cc +++ b/chrome/browser/android/vr_shell/vr_shell.cc
@@ -36,6 +36,7 @@ #include "content/public/common/referrer.h" #include "device/vr/android/gvr/gvr_device.h" #include "device/vr/android/gvr/gvr_device_provider.h" +#include "gpu/command_buffer/common/mailbox.h" #include "jni/VrShellImpl_jni.h" #include "third_party/WebKit/public/platform/WebInputEvent.h" #include "ui/android/view_android.h" @@ -56,6 +57,13 @@ static const char kVrShellUIURL[] = "chrome://vr-shell-ui"; +// Default downscale factor for computing the recommended WebVR +// renderWidth/Height from the 1:1 pixel mapped size. Using a rather +// aggressive downscale due to the high overhead of copying pixels +// twice before handing off to GVR. For comparison, the polyfill +// uses approximately 0.55 on a Pixel XL. +static constexpr float kWebVrRecommendedResolutionScale = 0.5; + void SetIsInVR(content::WebContents* contents, bool is_in_vr) { if (contents && contents->GetRenderWidgetHostView()) contents->GetRenderWidgetHostView()->SetIsInVR(is_in_vr); @@ -170,6 +178,7 @@ } VrShell::~VrShell() { + delegate_provider_->RemoveDelegate(); { // The GvrLayout is, and must always be, used only on the UI thread, and the // GvrApi used for rendering should only be used from the GL thread as it's @@ -185,7 +194,6 @@ base::ThreadRestrictions::ScopedAllowIO allow_io; gl_thread_.reset(); } - delegate_provider_->RemoveDelegate(); g_instance = nullptr; } @@ -271,6 +279,7 @@ metrics_helper_->SetWebVREnabled(enabled); PostToGlThreadWhenReady(base::Bind(&VrShellGl::SetWebVrMode, gl_thread_->GetVrShellGl(), enabled)); + html_interface_->SetMode(enabled ? UiInterface::Mode::WEB_VR : UiInterface::Mode::STANDARD); } @@ -324,14 +333,22 @@ html_interface_->SetWebVRSecureOrigin(secure_origin); } -void VrShell::SubmitWebVRFrame() {} +void VrShell::SubmitWebVRFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) { + TRACE_EVENT1("gpu", "SubmitWebVRFrame", "frame", frame_index); + + PostToGlThreadWhenReady(base::Bind(&VrShellGl::SubmitWebVRFrame, + gl_thread_->GetVrShellGl(), frame_index, + mailbox)); +} void VrShell::UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds) { + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size) { PostToGlThreadWhenReady(base::Bind(&VrShellGl::UpdateWebVRTextureBounds, gl_thread_->GetVrShellGl(), frame_index, - left_bounds, right_bounds)); + left_bounds, right_bounds, source_size)); } bool VrShell::SupportsPresentation() { @@ -385,6 +402,10 @@ } void VrShell::GvrDelegateReady() { + PostToGlThreadWhenReady(base::Bind( + &VrShellGl::SetSubmitClient, gl_thread_->GetVrShellGl(), + base::Passed( + delegate_provider_->TakeSubmitFrameClient().PassInterface()))); delegate_provider_->SetDelegate(this, gvr_api_); } @@ -599,6 +620,7 @@ } } +/* static */ device::mojom::VRPosePtr VrShell::VRPosePtrFromGvrPose(gvr::Mat4f head_mat) { device::mojom::VRPosePtr pose = device::mojom::VRPose::New(); @@ -629,9 +651,37 @@ return pose; } +/* static */ +gvr::Sizei VrShell::GetRecommendedWebVrSize(gvr::GvrApi* gvr_api) { + // Pick a reasonable default size for the WebVR transfer surface + // based on a downscaled 1:1 render resolution. This size will also + // be reported to the client via CreateVRDisplayInfo as the + // client-recommended renderWidth/renderHeight and for the GVR + // framebuffer. If the client chooses a different size or resizes it + // while presenting, we'll resize the transfer surface and GVR + // framebuffer to match. + gvr::Sizei render_target_size = + gvr_api->GetMaximumEffectiveRenderTargetSize(); + gvr::Sizei webvr_size = {static_cast<int>(render_target_size.width * + kWebVrRecommendedResolutionScale), + static_cast<int>(render_target_size.height * + kWebVrRecommendedResolutionScale)}; + // Ensure that the width is an even number so that the eyes each + // get the same size, the recommended renderWidth is per eye + // and the client will use the sum of the left and right width. + // + // TODO(klausw,crbug.com/699350): should we round the recommended + // size to a multiple of 2^N pixels to be friendlier to the GPU? The + // exact size doesn't matter, and it might be more efficient. + webvr_size.width &= ~1; + + return webvr_size; +} + +/* static */ device::mojom::VRDisplayInfoPtr VrShell::CreateVRDisplayInfo( gvr::GvrApi* gvr_api, - gvr::Sizei compositor_size, + gvr::Sizei recommended_size, uint32_t device_id) { TRACE_EVENT0("input", "GvrDevice::GetVRDevice"); @@ -660,8 +710,8 @@ (eye == GVR_LEFT_EYE) ? device->leftEye : device->rightEye; eye_params->fieldOfView = device::mojom::VRFieldOfView::New(); eye_params->offset.resize(3); - eye_params->renderWidth = compositor_size.width / 2; - eye_params->renderHeight = compositor_size.height; + eye_params->renderWidth = recommended_size.width / 2; + eye_params->renderHeight = recommended_size.height; gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport(); gvr_buffer_viewports.GetBufferViewport(eye, &eye_viewport);
diff --git a/chrome/browser/android/vr_shell/vr_shell.h b/chrome/browser/android/vr_shell/vr_shell.h index 2d6e529..8648aa6 100644 --- a/chrome/browser/android/vr_shell/vr_shell.h +++ b/chrome/browser/android/vr_shell/vr_shell.h
@@ -32,6 +32,10 @@ class WebContents; } +namespace gpu { +struct MailboxHolder; +} + namespace ui { class WindowAndroid; } @@ -171,9 +175,10 @@ // TODO(mthiesse): Find a better place for these functions to live. static device::mojom::VRPosePtr VRPosePtrFromGvrPose(gvr::Mat4f head_mat); + static gvr::Sizei GetRecommendedWebVrSize(gvr::GvrApi* gvr_api); static device::mojom::VRDisplayInfoPtr CreateVRDisplayInfo( gvr::GvrApi* gvr_api, - gvr::Sizei compositor_size, + gvr::Sizei recommended_size, uint32_t device_id); private: @@ -190,10 +195,12 @@ // device::GvrDelegate implementation void SetWebVRSecureOrigin(bool secure_origin) override; - void SubmitWebVRFrame() override; + void SubmitWebVRFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) override; void UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds) override; + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size) override; void OnVRVsyncProviderRequest( device::mojom::VRVSyncProviderRequest request) override; void UpdateVSyncInterval(int64_t timebase_nanos,
diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.cc b/chrome/browser/android/vr_shell/vr_shell_delegate.cc index 17a7ea3..4563d1a0 100644 --- a/chrome/browser/android/vr_shell/vr_shell_delegate.cc +++ b/chrome/browser/android/vr_shell/vr_shell_delegate.cc
@@ -46,14 +46,9 @@ void VrShellDelegate::SetDelegate(device::GvrDelegate* delegate, gvr_context* context) { - context_ = context; delegate_ = delegate; // Clean up the non-presenting delegate. - if (non_presenting_delegate_) { - device::mojom::VRVSyncProviderRequest request = - non_presenting_delegate_->OnSwitchToPresentingDelegate(); - if (request.is_pending()) - delegate->OnVRVsyncProviderRequest(std::move(request)); + if (delegate_ && non_presenting_delegate_) { non_presenting_delegate_ = nullptr; JNIEnv* env = AttachCurrentThread(); Java_VrShellDelegate_shutdownNonPresentingNativeContext( @@ -136,8 +131,16 @@ Java_VrShellDelegate_openNewTab(env, j_vr_shell_delegate_.obj(), incognito); } +device::mojom::VRSubmitFrameClientPtr VrShellDelegate::TakeSubmitFrameClient() { + return std::move(submit_client_); +} + void VrShellDelegate::SetDeviceProvider( device::GvrDeviceProvider* device_provider) { + if (device_provider_ == device_provider) + return; + if (device_provider_) + ClearDeviceProvider(); CHECK(!device_provider_); device_provider_ = device_provider; if (!delegate_) @@ -154,6 +157,7 @@ } void VrShellDelegate::RequestWebVRPresent( + device::mojom::VRSubmitFrameClientPtr submit_client, const base::Callback<void(bool)>& callback) { if (!present_callback_.is_null()) { // Can only handle one request at a time. This is also extremely unlikely to @@ -163,6 +167,7 @@ } present_callback_ = std::move(callback); + submit_client_ = std::move(submit_client); // If/When VRShell is ready for use it will call SetPresentResult. JNIEnv* env = AttachCurrentThread(); @@ -180,19 +185,11 @@ return weak_ptr_factory_.GetWeakPtr(); } -void VrShellDelegate::OnVRVsyncProviderRequest( - device::mojom::VRVSyncProviderRequest request) { - GetDelegate()->OnVRVsyncProviderRequest(std::move(request)); -} - void VrShellDelegate::CreateNonPresentingDelegate() { JNIEnv* env = AttachCurrentThread(); gvr_context* context = reinterpret_cast<gvr_context*>( Java_VrShellDelegate_createNonPresentingNativeContext( env, j_vr_shell_delegate_.obj())); - if (!context) - return; - context_ = context; non_presenting_delegate_ = base::MakeUnique<NonPresentingGvrDelegate>(context); non_presenting_delegate_->UpdateVSyncInterval(timebase_nanos_,
diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.h b/chrome/browser/android/vr_shell/vr_shell_delegate.h index 3b5161d..539c3cd 100644 --- a/chrome/browser/android/vr_shell/vr_shell_delegate.h +++ b/chrome/browser/android/vr_shell/vr_shell_delegate.h
@@ -49,16 +49,17 @@ void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); void ShowTab(int id); void OpenNewTab(bool incognito); + device::mojom::VRSubmitFrameClientPtr TakeSubmitFrameClient(); device::GvrDeviceProvider* device_provider() { return device_provider_; } - void OnVRVsyncProviderRequest(device::mojom::VRVSyncProviderRequest request); base::WeakPtr<VrShellDelegate> GetWeakPtr(); private: // device::GvrDelegateProvider implementation void SetDeviceProvider(device::GvrDeviceProvider* device_provider) override; void ClearDeviceProvider() override; - void RequestWebVRPresent(const base::Callback<void(bool)>& callback) override; + void RequestWebVRPresent(device::mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) override; void ExitWebVRPresent() override; device::GvrDelegate* GetDelegate() override; void SetListeningForActivate(bool listening) override; @@ -72,10 +73,7 @@ base::Callback<void(bool)> present_callback_; int64_t timebase_nanos_ = 0; double interval_seconds_ = 0; - - // TODO(mthiesse): Remove the need for this to be stored here. - // crbug.com/674594 - gvr_context* context_ = nullptr; + device::mojom::VRSubmitFrameClientPtr submit_client_; base::WeakPtrFactory<VrShellDelegate> weak_ptr_factory_;
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc index d466f32..cccea83 100644 --- a/chrome/browser/android/vr_shell/vr_shell_gl.cc +++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc
@@ -12,6 +12,7 @@ #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" #include "base/threading/thread_task_runner_handle.h" +#include "chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h" #include "chrome/browser/android/vr_shell/ui_elements.h" #include "chrome/browser/android/vr_shell/ui_scene.h" #include "chrome/browser/android/vr_shell/vr_controller.h" @@ -80,10 +81,6 @@ // 2-3 frames. static constexpr unsigned kPoseRingBufferSize = 8; -// Magic numbers used to mark valid pose index values encoded in frame -// data. Must match the magic numbers used in blink's VRDisplay.cpp. -static constexpr std::array<uint8_t, 2> kWebVrPosePixelMagicNumbers{{42, 142}}; - float Distance(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2) { float xdiff = (vec1.x - vec2.x); float ydiff = (vec1.y - vec2.y); @@ -172,6 +169,12 @@ VrShellGl::~VrShellGl() { vsync_task_.Cancel(); + // TODO(mthiesse): Can we omit the Close() here? Concern is that if + // both ends of the connection ever live in the same process for + // some reason, we could receive another VSync request in response + // to the closing message in the destructor but fail to respond to + // the callback. + binding_.Close(); if (!callback_.is_null()) { // When this VSync provider is going away we have to respond to pending // callbacks, so instead of providing a VSync, tell the requester to try @@ -179,13 +182,7 @@ // to this message will go through some other VSyncProvider. base::ResetAndReturn(&callback_) .Run(nullptr, base::TimeDelta(), -1, - device::mojom::VRVSyncProvider::Status::RETRY); - } - if (binding_.is_bound()) { - main_thread_task_runner_->PostTask( - FROM_HERE, - base::Bind(&VrShellDelegate::OnVRVsyncProviderRequest, - delegate_provider_, base::Passed(binding_.Unbind()))); + device::mojom::VRVSyncProvider::Status::CLOSING); } } @@ -232,24 +229,34 @@ return; } - unsigned int textures[2]; - glGenTextures(2, textures); + unsigned int textures[3]; + glGenTextures(3, textures); ui_texture_id_ = textures[0]; content_texture_id_ = textures[1]; + webvr_texture_id_ = textures[2]; ui_surface_texture_ = gl::SurfaceTexture::Create(ui_texture_id_); content_surface_texture_ = gl::SurfaceTexture::Create(content_texture_id_); + webvr_surface_texture_ = gl::SurfaceTexture::Create(webvr_texture_id_); CreateUiSurface(); CreateContentSurface(); ui_surface_texture_->SetFrameAvailableCallback(base::Bind( &VrShellGl::OnUIFrameAvailable, weak_ptr_factory_.GetWeakPtr())); content_surface_texture_->SetFrameAvailableCallback(base::Bind( &VrShellGl::OnContentFrameAvailable, weak_ptr_factory_.GetWeakPtr())); - content_surface_texture_->SetDefaultBufferSize( - content_tex_physical_size_.width, content_tex_physical_size_.height); + webvr_surface_texture_->SetFrameAvailableCallback(base::Bind( + &VrShellGl::OnWebVRFrameAvailable, weak_ptr_factory_.GetWeakPtr())); ui_surface_texture_->SetDefaultBufferSize(ui_tex_physical_size_.width, ui_tex_physical_size_.height); + content_surface_texture_->SetDefaultBufferSize( + content_tex_physical_size_.width, content_tex_physical_size_.height); InitializeRenderer(); + gvr::Sizei webvr_size = VrShell::GetRecommendedWebVrSize(gvr_api_.get()); + DVLOG(1) << __FUNCTION__ << ": resize initial to " << webvr_size.width << "x" + << webvr_size.height; + + CreateOrResizeWebVRSurface(webvr_size); + vsync_task_.Reset(base::Bind(&VrShellGl::OnVSync, base::Unretained(this))); OnVSync(); @@ -272,6 +279,73 @@ ui_surface_->j_surface().obj())); } +void VrShellGl::CreateOrResizeWebVRSurface(const gvr::Sizei& size) { + if (!webvr_surface_texture_) { + DLOG(ERROR) << "No WebVR surface texture available"; + return; + } + + // ContentPhysicalBoundsChanged is getting called twice with + // identical sizes? Avoid thrashing the existing context. + if (size == webvr_surface_size_) { + return; + } + + if (!size.width || !size.height) { + // Invalid size, defer until a new size arrives on a future bounds update. + return; + } + + webvr_surface_texture_->SetDefaultBufferSize(size.width, size.height); + webvr_surface_size_ = size; + + if (mailbox_bridge_) { + mailbox_bridge_->ResizeSurface(size.width, size.height); + } else { + mailbox_bridge_ = base::MakeUnique<MailboxToSurfaceBridge>(); + mailbox_bridge_->CreateSurface(webvr_surface_texture_.get()); + } +} + +void VrShellGl::SubmitWebVRFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) { + TRACE_EVENT0("gpu", "VrShellGl::SubmitWebVRFrame"); + + // Swapping twice on a Surface without calling updateTexImage in + // between can lose frames, so don't draw+swap if we already have + // a pending frame we haven't consumed yet. + bool swapped = false; + if (pending_frames_.empty()) { + swapped = mailbox_bridge_->CopyMailboxToSurfaceAndSwap(mailbox); + if (swapped) { + // Tell OnWebVRFrameAvailable to expect a new frame to arrive on + // the SurfaceTexture, and save the associated frame index. + pending_frames_.emplace(frame_index); + } + } + // Always notify the client that we're done with the mailbox even + // if we haven't drawn it, so that it's eligible for destruction. + submit_client_->OnSubmitFrameTransferred(); + if (!swapped) { + // We dropped without drawing, report this as completed rendering + // now to unblock the client. We're not going to receive it in + // OnWebVRFrameAvailable where we'd normally report that. + submit_client_->OnSubmitFrameRendered(); + } + + TRACE_EVENT0("gpu", "VrShellGl::glFinish"); + // This is a load-bearing glFinish, please don't remove it without + // before/after timing comparisons. Goal is to clear the GPU queue + // of the native GL context to avoid stalls later in GVR frame + // acquire/submit. + glFinish(); +} + +void VrShellGl::SetSubmitClient( + device::mojom::VRSubmitFrameClientPtrInfo submit_client_info) { + submit_client_.Bind(std::move(submit_client_info)); +} + void VrShellGl::OnUIFrameAvailable() { ui_surface_texture_->UpdateTexImage(); } @@ -281,42 +355,30 @@ received_frame_ = true; } -bool VrShellGl::GetPixelEncodedFrameIndex(uint16_t* frame_index) { - TRACE_EVENT0("gpu", "VrShellGl::GetPixelEncodedFrameIndex"); - if (!received_frame_) { - if (last_frame_index_ == (uint16_t)-1) - return false; - *frame_index = last_frame_index_; - return true; +void VrShellGl::OnWebVRFrameAvailable() { + // A "while" loop here is a bad idea. It's legal to call + // UpdateTexImage repeatedly even if no frames are available, but + // that does *not* wait for a new frame, it just reuses the most + // recent one. That would mess up the count. + if (pending_frames_.empty()) { + // We're expecting a frame, but it's not here yet. Retry in OnVsync. + ++premature_received_frames_; + return; } - received_frame_ = false; - // Read the pose index encoded in a bottom left pixel as color values. - // See also third_party/WebKit/Source/modules/vr/VRDisplay.cpp which - // encodes the pose index, and device/vr/android/gvr/gvr_device.cc - // which tracks poses. Returns the low byte (0..255) if valid, or -1 - // if not valid due to bad magic number. - uint8_t pixels[4]; - // Assume we're reading from the framebuffer we just wrote to. - // That's true currently, we may need to use glReadBuffer(GL_BACK) - // or equivalent if the rendering setup changes in the future. - glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels); + webvr_surface_texture_->UpdateTexImage(); + int frame_index = pending_frames_.front(); + TRACE_EVENT1("gpu", "VrShellGl::OnWebVRFrameAvailable", "frame", frame_index); + pending_frames_.pop(); - // Check for the magic number written by VRDevice.cpp on submit. - // This helps avoid glitches from garbage data in the render - // buffer that can appear during initialization or resizing. These - // often appear as flashes of all-black or all-white pixels. - if (pixels[1] == kWebVrPosePixelMagicNumbers[0] && - pixels[2] == kWebVrPosePixelMagicNumbers[1]) { - // Pose is good. - *frame_index = pixels[0]; - last_frame_index_ = pixels[0]; - return true; - } - VLOG(1) << "WebVR: reject decoded pose index " << static_cast<int>(pixels[0]) - << ", bad magic number " << static_cast<int>(pixels[1]) << ", " - << static_cast<int>(pixels[2]); - return false; + // It is legal for the WebVR client to submit a new frame now, since + // we've consumed the image. TODO(klausw): would timing be better if + // we move the "rendered" notification after draw, or suppress + // the next vsync until that's done? + + submit_client_->OnSubmitFrameRendered(); + + DrawFrame(frame_index); } void VrShellGl::GvrInit(gvr_context* gvr_api) { @@ -341,12 +403,6 @@ } void VrShellGl::InitializeRenderer() { - // While WebVR is going through the compositor path, it shares - // the same texture ID. This will change once it gets its own - // surface, but store it separately to avoid future confusion. - // TODO(klausw,crbug.com/655722): remove this. - webvr_texture_id_ = content_texture_id_; - gvr_api_->InitializeGl(); webvr_head_pose_.assign(kPoseRingBufferSize, gvr_api_->GetHeadSpaceFromStartSpaceRotation( @@ -356,6 +412,7 @@ // For kFramePrimaryBuffer (primary VrShell and WebVR content) specs.push_back(gvr_api_->CreateBufferSpec()); render_size_primary_ = specs[kFramePrimaryBuffer].GetSize(); + render_size_vrshell_ = render_size_primary_; // For kFrameHeadlockedBuffer (for WebVR insecure content warning). // Set this up at fixed resolution, the (smaller) FOV gets set below. @@ -632,40 +689,19 @@ base::Bind(target, weak_vr_shell_, base::Passed(std::move(event)))); } -void VrShellGl::DrawFrame() { - TRACE_EVENT0("gpu", "VrShellGl::DrawFrame"); +void VrShellGl::DrawFrame(int16_t frame_index) { + TRACE_EVENT1("gpu", "VrShellGl::DrawFrame", "frame", frame_index); // Reset the viewport list to just the pair of viewports for the // primary buffer each frame. Head-locked viewports get added by // DrawVrShell if needed. buffer_viewport_list_->SetToRecommendedBufferViewports(); - gvr::Frame frame = swap_chain_->AcquireFrame(); - if (!frame.is_valid()) { - return; - } - frame.BindBuffer(kFramePrimaryBuffer); + // If needed, resize the primary buffer for use with WebVR. Resizing + // needs to happen before acquiring a frame. if (web_vr_mode_) { - DrawWebVr(); - } - - uint16_t frame_index; - gvr::Mat4f head_pose; - - // When using async reprojection, we need to know which pose was used in - // the WebVR app for drawing this frame. Due to unknown amounts of - // buffering in the compositor and SurfaceTexture, we read the pose number - // from a corner pixel. There's no point in doing this for legacy - // distortion rendering since that doesn't need a pose, and reading back - // pixels is an expensive operation. TODO(klausw,crbug.com/655722): stop - // doing this once we have working no-compositor rendering for WebVR. - if (web_vr_mode_ && gvr_api_->GetAsyncReprojectionEnabled() && - GetPixelEncodedFrameIndex(&frame_index)) { - static_assert(!((kPoseRingBufferSize - 1) & kPoseRingBufferSize), - "kPoseRingBufferSize must be a power of 2"); - head_pose = webvr_head_pose_[frame_index % kPoseRingBufferSize]; - // Process all pending_bounds_ changes targeted for before this frame, being - // careful of wrapping frame indices. + // Process all pending_bounds_ changes targeted for before this + // frame, being careful of wrapping frame indices. static constexpr unsigned max = std::numeric_limits<decltype(frame_index_)>::max(); static_assert(max > kPoseRingBufferSize * 2, @@ -673,26 +709,73 @@ "than half of frame_index_ range."); while (!pending_bounds_.empty()) { uint16_t index = pending_bounds_.front().first; - // If index is less than the frame_index it's possible we've wrapped, so - // we extend the range and 'un-wrap' to account for this. + // If index is less than the frame_index it's possible we've + // wrapped, so we extend the range and 'un-wrap' to account + // for this. if (index < frame_index) index += max; - // If the pending bounds change is for an upcoming frame within our buffer - // size, wait to apply it. Otherwise, apply it immediately. This - // guarantees that even if we miss many frames, the queue can't fill up - // with stale bounds. + // If the pending bounds change is for an upcoming frame + // within our buffer size, wait to apply it. Otherwise, apply + // it immediately. This guarantees that even if we miss many + // frames, the queue can't fill up with stale bounds. if (index > frame_index && index <= frame_index + kPoseRingBufferSize) break; - const BoundsPair& bounds = pending_bounds_.front().second; - webvr_left_viewport_->SetSourceUv(bounds.first); - webvr_right_viewport_->SetSourceUv(bounds.second); + const WebVrBounds& bounds = pending_bounds_.front().second; + webvr_left_viewport_->SetSourceUv(bounds.left_bounds); + webvr_right_viewport_->SetSourceUv(bounds.right_bounds); + DVLOG(1) << __FUNCTION__ << ": resize from pending_bounds to " + << bounds.source_size.width << "x" << bounds.source_size.height; + CreateOrResizeWebVRSurface(bounds.source_size); pending_bounds_.pop(); } buffer_viewport_list_->SetBufferViewport(GVR_LEFT_EYE, *webvr_left_viewport_); buffer_viewport_list_->SetBufferViewport(GVR_RIGHT_EYE, *webvr_right_viewport_); + if (render_size_primary_ != webvr_surface_size_) { + if (!webvr_surface_size_.width) { + // Don't try to resize to 0x0 pixels, drop frames until we get a + // valid size. + return; + } + + render_size_primary_ = webvr_surface_size_; + DVLOG(1) << __FUNCTION__ << ": resize GVR to " + << render_size_primary_.width << "x" + << render_size_primary_.height; + swap_chain_->ResizeBuffer(kFramePrimaryBuffer, render_size_primary_); + } + } else { + if (render_size_primary_ != render_size_vrshell_) { + render_size_primary_ = render_size_vrshell_; + swap_chain_->ResizeBuffer(kFramePrimaryBuffer, render_size_primary_); + } + } + + TRACE_EVENT_BEGIN0("gpu", "VrShellGl::AcquireFrame"); + gvr::Frame frame = swap_chain_->AcquireFrame(); + TRACE_EVENT_END0("gpu", "VrShellGl::AcquireFrame"); + if (!frame.is_valid()) { + return; + } + frame.BindBuffer(kFramePrimaryBuffer); + + if (web_vr_mode_) { + DrawWebVr(); + } + + gvr::Mat4f head_pose; + + // When using async reprojection, we need to know which pose was + // used in the WebVR app for drawing this frame and supply it when + // submitting. Technically we don't need a pose if not reprojecting, + // but keeping it uninitialized seems likely to cause problems down + // the road. Copying it is cheaper than fetching a new one. + if (web_vr_mode_) { + static_assert(!((kPoseRingBufferSize - 1) & kPoseRingBufferSize), + "kPoseRingBufferSize must be a power of 2"); + head_pose = webvr_head_pose_[frame_index % kPoseRingBufferSize]; } else { gvr::ClockTimePoint target_time = gvr::GvrApi::GetTimePointNow(); target_time.monotonic_system_time_nanos += kPredictionTimeWithoutVsyncNanos; @@ -712,21 +795,31 @@ // Update the render position of all UI elements (including desktop). scene_->UpdateTransforms(TimeInMicroseconds()); - UpdateController(GetForwardVector(head_pose)); + { + TRACE_EVENT0("gpu", "VrShellGl::UpdateController"); + UpdateController(GetForwardVector(head_pose)); + } - DrawVrShell(head_pose, frame); + // Finish drawing in the primary buffer, and draw the headlocked buffer + // if needed. This must be the last drawing call, this method will + // return with no frame being bound. + DrawVrShellAndUnbind(head_pose, frame); - frame.Unbind(); - frame.Submit(*buffer_viewport_list_, head_pose); + { + TRACE_EVENT0("gpu", "VrShellGl::Submit"); + frame.Submit(*buffer_viewport_list_, head_pose); + } // No need to swap buffers for surfaceless rendering. if (!surfaceless_rendering_) { // TODO(mthiesse): Support asynchronous SwapBuffers. + TRACE_EVENT0("gpu", "VrShellGl::SwapBuffers"); surface_->SwapBuffers(); } } -void VrShellGl::DrawVrShell(const gvr::Mat4f& head_pose, gvr::Frame& frame) { +void VrShellGl::DrawVrShellAndUnbind(const gvr::Mat4f& head_pose, + gvr::Frame& frame) { TRACE_EVENT0("gpu", "VrShellGl::DrawVrShell"); std::vector<const ContentRectangle*> head_locked_elements; std::vector<const ContentRectangle*> world_elements; @@ -763,6 +856,7 @@ DrawUiView(&head_pose, world_elements, render_size_primary_, kViewportListPrimaryOffset); } + frame.Unbind(); // Done with the primary buffer. if (!head_locked_elements.empty()) { // Add head-locked viewports. The list gets reset to just @@ -775,23 +869,15 @@ *headlocked_right_viewport_); // Bind the headlocked framebuffer. - // TODO(mthiesse): We don't unbind this? Maybe some cleanup is in order - // here. frame.BindBuffer(kFrameHeadlockedBuffer); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); DrawUiView(nullptr, head_locked_elements, render_size_headlocked_, kViewportListHeadlockedOffset); + frame.Unbind(); // Done with the headlocked buffer. } } -gvr::Sizei VrShellGl::GetWebVRCompositorSurfaceSize() { - // This is a stopgap while we're using the WebVR compositor rendering path. - // TODO(klausw,crbug.com/655722): Remove this method and member once we're - // using a separate WebVR render surface. - return content_tex_physical_size_; -} - void VrShellGl::DrawUiView(const gvr::Mat4f* head_pose, const std::vector<const ContentRectangle*>& elements, const gvr::Sizei& render_size, @@ -998,7 +1084,15 @@ glDisable(GL_BLEND); glDisable(GL_POLYGON_OFFSET_FILL); - glViewport(0, 0, render_size_primary_.width, render_size_primary_.height); + // We're redrawing over the entire viewport, but it's generally more + // efficient on mobile tiling GPUs to clear anyway as a hint that + // we're done with the old content. TODO(klausw,crbug.com/700389): + // investigate using glDiscardFramebufferEXT here since that's more + // efficient on desktop, but it would need a capability check since + // it's not supported on older devices such as Nexus 5X. + glClear(GL_COLOR_BUFFER_BIT); + + glViewport(0, 0, webvr_surface_size_.width, webvr_surface_size_.height); vr_shell_renderer_->GetWebVrRenderer()->Draw(webvr_texture_id_); } @@ -1029,13 +1123,15 @@ void VrShellGl::UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds) { + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size) { if (frame_index < 0) { webvr_left_viewport_->SetSourceUv(left_bounds); webvr_right_viewport_->SetSourceUv(right_bounds); + CreateOrResizeWebVRSurface(source_size); } else { pending_bounds_.emplace( - std::make_pair(frame_index, std::make_pair(left_bounds, right_bounds))); + frame_index, WebVrBounds(left_bounds, right_bounds, source_size)); } } @@ -1069,6 +1165,12 @@ } void VrShellGl::OnVSync() { + while (premature_received_frames_ > 0) { + TRACE_EVENT0("gpu", "VrShellGl::OnWebVRFrameAvailableRetry"); + --premature_received_frames_; + OnWebVRFrameAvailable(); + } + base::TimeTicks now = base::TimeTicks::Now(); base::TimeTicks target; @@ -1088,7 +1190,9 @@ pending_vsync_ = true; pending_time_ = time; } - DrawFrame(); + if (!web_vr_mode_) { + DrawFrame(-1); + } } void VrShellGl::OnRequest(device::mojom::VRVSyncProviderRequest request) { @@ -1158,8 +1262,11 @@ void VrShellGl::CreateVRDisplayInfo( const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback, uint32_t device_id) { + // This assumes that the initial webvr_surface_size_ was set to the + // appropriate recommended render resolution as the default size during + // InitializeGl. Revisit if the initialization order changes. device::mojom::VRDisplayInfoPtr info = VrShell::CreateVRDisplayInfo( - gvr_api_.get(), content_tex_physical_size_, device_id); + gvr_api_.get(), webvr_surface_size_, device_id); main_thread_task_runner_->PostTask( FROM_HERE, base::Bind(&RunVRDisplayInfoCallback, callback, base::Passed(&info)));
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.h b/chrome/browser/android/vr_shell/vr_shell_gl.h index b04cb8a07..54bc7d3 100644 --- a/chrome/browser/android/vr_shell/vr_shell_gl.h +++ b/chrome/browser/android/vr_shell/vr_shell_gl.h
@@ -37,8 +37,13 @@ class SurfaceTexture; } +namespace gpu { +struct MailboxHolder; +} + namespace vr_shell { +class MailboxToSurfaceBridge; class UiScene; class VrController; class VrShell; @@ -46,6 +51,14 @@ class VrShellRenderer; struct ContentRectangle; +struct WebVrBounds { + WebVrBounds(gvr::Rectf left, gvr::Rectf right, gvr::Sizei size) + : left_bounds(left), right_bounds(right), source_size(size) {} + gvr::Rectf left_bounds; + gvr::Rectf right_bounds; + gvr::Sizei source_size; +}; + // This class manages all GLThread owned objects and GL rendering for VrShell. // It is not threadsafe and must only be used on the GL thread. class VrShellGl : public device::mojom::VRVSyncProvider { @@ -72,6 +85,7 @@ void OnResume(); void SetWebVrMode(bool enabled); + void CreateOrResizeWebVRSurface(const gvr::Sizei& size); void CreateContentSurface(); void ContentBoundsChanged(int width, int height); void ContentPhysicalBoundsChanged(int width, int height); @@ -81,8 +95,8 @@ void UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds); - gvr::Sizei GetWebVRCompositorSurfaceSize(); + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size); void UpdateScene(std::unique_ptr<base::ListValue> commands); @@ -93,12 +107,15 @@ void CreateVRDisplayInfo( const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback, uint32_t device_id); + void SubmitWebVRFrame(int16_t frame_index, const gpu::MailboxHolder& mailbox); + void SetSubmitClient( + device::mojom::VRSubmitFrameClientPtrInfo submit_client_info); private: void GvrInit(gvr_context* gvr_api); void InitializeRenderer(); - void DrawFrame(); - void DrawVrShell(const gvr::Mat4f& head_pose, gvr::Frame& frame); + void DrawFrame(int16_t frame_index); + void DrawVrShellAndUnbind(const gvr::Mat4f& head_pose, gvr::Frame& frame); void DrawUiView(const gvr::Mat4f* head_pose, const std::vector<const ContentRectangle*>& elements, const gvr::Sizei& render_size, @@ -120,6 +137,7 @@ void CreateUiSurface(); void OnUIFrameAvailable(); void OnContentFrameAvailable(); + void OnWebVRFrameAvailable(); bool GetPixelEncodedFrameIndex(uint16_t* frame_index); void OnVSync(); @@ -135,6 +153,8 @@ int ui_texture_id_ = 0; // samplerExternalOES texture data for main content image. int content_texture_id_ = 0; + // samplerExternalOES texture data for WebVR content image. + int webvr_texture_id_ = 0; std::unique_ptr<UiScene> scene_; @@ -142,6 +162,7 @@ scoped_refptr<gl::GLContext> context_; scoped_refptr<gl::SurfaceTexture> ui_surface_texture_; scoped_refptr<gl::SurfaceTexture> content_surface_texture_; + scoped_refptr<gl::SurfaceTexture> webvr_surface_texture_; std::unique_ptr<gl::ScopedJavaSurface> ui_surface_; std::unique_ptr<gl::ScopedJavaSurface> content_surface_; @@ -154,13 +175,19 @@ std::unique_ptr<gvr::BufferViewport> webvr_left_viewport_; std::unique_ptr<gvr::BufferViewport> webvr_right_viewport_; std::unique_ptr<gvr::SwapChain> swap_chain_; - using BoundsPair = std::pair<gvr::Rectf, gvr::Rectf>; - std::queue<std::pair<uint8_t, BoundsPair>> pending_bounds_; + std::queue<std::pair<uint8_t, WebVrBounds>> pending_bounds_; + int premature_received_frames_ = 0; + std::queue<uint16_t> pending_frames_; + std::unique_ptr<MailboxToSurfaceBridge> mailbox_bridge_; // Current sizes for the render buffers. gvr::Sizei render_size_primary_; gvr::Sizei render_size_headlocked_; + // Intended render_size_primary_ for use by VrShell, so that it + // can be restored after exiting WebVR mode. + gvr::Sizei render_size_vrshell_; + std::unique_ptr<VrShellRenderer> vr_shell_renderer_; bool touch_pending_ = false; @@ -175,10 +202,10 @@ int content_tex_css_width_ = 0; int content_tex_css_height_ = 0; gvr::Sizei content_tex_physical_size_ = {0, 0}; + gvr::Sizei webvr_surface_size_ = {0, 0}; gvr::Sizei ui_tex_physical_size_ = {0, 0}; std::vector<gvr::Mat4f> webvr_head_pose_; - int webvr_texture_id_ = 0; bool web_vr_mode_; bool ready_to_draw_ = false; bool surfaceless_rendering_; @@ -195,6 +222,7 @@ GetVSyncCallback callback_; bool received_frame_ = false; mojo::Binding<device::mojom::VRVSyncProvider> binding_; + device::mojom::VRSubmitFrameClientPtr submit_client_; base::WeakPtr<VrShell> weak_vr_shell_; base::WeakPtr<VrShellDelegate> delegate_provider_;
diff --git a/chrome/browser/android/vr_shell/vr_shell_renderer.cc b/chrome/browser/android/vr_shell/vr_shell_renderer.cc index 55ce9510..0ce95a9 100644 --- a/chrome/browser/android/vr_shell/vr_shell_renderer.cc +++ b/chrome/browser/android/vr_shell/vr_shell_renderer.cc
@@ -406,11 +406,9 @@ VOID_OFFSET(kTextureCoordinateDataOffset)); glEnableVertexAttribArray(tex_coord_handle_); - // Bind texture. Ideally this should be a 1:1 pixel copy. (Or even more - // ideally, a zero copy reuse of the texture.) For now, we're using an - // undersized render target for WebVR, so GL_LINEAR makes it look slightly - // less chunky. TODO(klausw): change this to GL_NEAREST once we're doing - // a 1:1 copy since that should be more efficient. + // Bind texture. This is a 1:1 pixel copy since the source surface + // and renderbuffer destination size are resized to match, so use + // GL_NEAREST. glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_handle); glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 8ee0da30..247a008 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc
@@ -1914,14 +1914,6 @@ } run_message_loop_ = started; browser_creator_.reset(); - -#if !defined(OS_LINUX) || defined(OS_CHROMEOS) - // Collects power-related UMA stats for Windows, Mac, and ChromeOS. - // Linux is not supported (crbug.com/426393). - power_usage_monitor_.reset(new PowerUsageMonitor()); - power_usage_monitor_->Start(); -#endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) - #endif // !defined(OS_ANDROID) PostBrowserStart();
diff --git a/chrome/browser/chrome_browser_main.h b/chrome/browser/chrome_browser_main.h index ebff7a3..f4cfa59c 100644 --- a/chrome/browser/chrome_browser_main.h +++ b/chrome/browser/chrome_browser_main.h
@@ -16,7 +16,6 @@ #include "chrome/browser/chrome_browser_field_trials.h" #include "chrome/browser/chrome_process_singleton.h" #include "chrome/browser/first_run/first_run.h" -#include "chrome/browser/power_usage_monitor/power_usage_monitor.h" #include "chrome/browser/process_singleton.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" #include "chrome/common/stack_sampling_configuration.h" @@ -171,10 +170,6 @@ // ProcessSingleton. std::unique_ptr<ChromeProcessSingleton> process_singleton_; -#if !defined(OS_LINUX) || defined(OS_CHROMEOS) // http://crbug.com/426393 - std::unique_ptr<PowerUsageMonitor> power_usage_monitor_; -#endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) - // Android's first run is done in Java instead of native. std::unique_ptr<first_run::MasterPrefs> master_prefs_;
diff --git a/chrome/browser/chrome_content_utility_manifest_overlay.json b/chrome/browser/chrome_content_utility_manifest_overlay.json index 3684bcc..3056727c 100644 --- a/chrome/browser/chrome_content_utility_manifest_overlay.json +++ b/chrome/browser/chrome_content_utility_manifest_overlay.json
@@ -7,6 +7,7 @@ "chrome::mojom::FilePatcher", "chrome::mojom::ProfileImport", "chrome::mojom::ResourceUsageReporter", + "chrome::mojom::SafeArchiveAnalyzer", "chrome::mojom::ShellHandler", "chrome::mojom::ZipFileCreator", "extensions::mojom::MediaParser",
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc index 4d97fa30..fd5cf78 100644 --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
@@ -80,7 +80,8 @@ // to the UI service. // It is created on the UI thread, but used and deleted on the IO thread. class UINetworkQualityEstimatorService::IONetworkQualityObserver - : public net::NetworkQualityEstimator::EffectiveConnectionTypeObserver { + : public net::NetworkQualityEstimator::EffectiveConnectionTypeObserver, + public net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver { public: explicit IONetworkQualityObserver( base::WeakPtr<UINetworkQualityEstimatorService> service) @@ -90,8 +91,10 @@ ~IONetworkQualityObserver() override { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - if (network_quality_estimator_) + if (network_quality_estimator_) { network_quality_estimator_->RemoveEffectiveConnectionTypeObserver(this); + network_quality_estimator_->RemoveRTTAndThroughputEstimatesObserver(this); + } } void InitializeOnIOThread(IOThread* io_thread) { @@ -103,6 +106,7 @@ if (!network_quality_estimator_) return; network_quality_estimator_->AddEffectiveConnectionTypeObserver(this); + network_quality_estimator_->AddRTTAndThroughputEstimatesObserver(this); } // net::NetworkQualityEstimator::EffectiveConnectionTypeObserver @@ -117,6 +121,20 @@ service_, type)); } + // net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver + // implementation: + void OnRTTOrThroughputEstimatesComputed( + base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps) override { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + content::BrowserThread::PostTask( + content::BrowserThread::UI, FROM_HERE, + base::Bind(&UINetworkQualityEstimatorService::RTTOrThroughputComputed, + service_, http_rtt, transport_rtt, + downstream_throughput_kbps)); + } + private: base::WeakPtr<UINetworkQualityEstimatorService> service_; net::NetworkQualityEstimator* network_quality_estimator_; @@ -126,7 +144,11 @@ UINetworkQualityEstimatorService::UINetworkQualityEstimatorService( Profile* profile) - : type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN), weak_factory_(this) { + : type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN), + http_rtt_(base::TimeDelta::FromMilliseconds(-1)), + transport_rtt_(base::TimeDelta::FromMilliseconds(-1)), + downstream_throughput_kbps_(-1), + weak_factory_(this) { DCHECK(profile); // If this is running in a context without an IOThread, don't try to create // the IO object. @@ -182,6 +204,21 @@ observer.OnEffectiveConnectionTypeChanged(type); } +void UINetworkQualityEstimatorService::RTTOrThroughputComputed( + base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + http_rtt_ = http_rtt; + transport_rtt_ = transport_rtt; + downstream_throughput_kbps_ = downstream_throughput_kbps; + + for (auto& observer : rtt_throughput_observer_list_) { + observer.OnRTTOrThroughputEstimatesComputed(http_rtt, transport_rtt, + downstream_throughput_kbps); + } +} + void UINetworkQualityEstimatorService::AddEffectiveConnectionTypeObserver( net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -202,6 +239,28 @@ effective_connection_type_observer_list_.RemoveObserver(observer); } +void UINetworkQualityEstimatorService::AddRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + rtt_throughput_observer_list_.AddObserver(observer); + + // Notify the |observer| on the next message pump since |observer| may not + // be completely set up for receiving the callbacks. + content::BrowserThread::PostTask( + content::BrowserThread::UI, FROM_HERE, + base::Bind(&UINetworkQualityEstimatorService:: + NotifyRTTAndThroughputObserverIfPresent, + weak_factory_.GetWeakPtr(), observer)); +} + +// Removes |observer| from the list of RTT and throughput estimate observers. +// Must be called on the IO thread. +void UINetworkQualityEstimatorService::RemoveRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + rtt_throughput_observer_list_.RemoveObserver(observer); +} + void UINetworkQualityEstimatorService::SetEffectiveConnectionTypeForTesting( net::EffectiveConnectionType type) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -234,6 +293,17 @@ observer->OnEffectiveConnectionTypeChanged(type_); } +void UINetworkQualityEstimatorService::NotifyRTTAndThroughputObserverIfPresent( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + const { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + if (!rtt_throughput_observer_list_.HasObserver(observer)) + return; + observer->OnRTTOrThroughputEstimatesComputed(http_rtt_, transport_rtt_, + downstream_throughput_kbps_); +} + // static void UINetworkQualityEstimatorService::RegisterProfilePrefs( PrefRegistrySimple* registry) {
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h index cf205e5e..af77188b 100644 --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h
@@ -47,6 +47,20 @@ net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) override; + // Must be called on the UI thread. |observer| will be notified on the UI + // thread. |observer| would be notified of the changes in the HTTP RTT, + // transport RTT or throughput. |observer| would be notified of the current + // values in the next message pump. + void AddRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + override; + + // Removes |observer| from the list of RTT and throughput estimate observers. + // Must be called on the UI thread. + void RemoveRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + override; + // Registers the profile-specific network quality estimator prefs. static void RegisterProfilePrefs(PrefRegistrySimple* registry); @@ -72,6 +86,12 @@ net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) const; + // Notifies |observer| of the current effective connection type if |observer| + // is still registered as an observer. + void NotifyRTTAndThroughputObserverIfPresent( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + const; + // KeyedService implementation: void Shutdown() override; @@ -81,9 +101,20 @@ // reported by NetworkchangeNotifier::GetConnectionType. void EffectiveConnectionTypeChanged(net::EffectiveConnectionType type); + // Called when the estimated HTTP RTT, estimated transport RTT or estimated + // downstream throughput is computed. + void RTTOrThroughputComputed(base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps); + // The current EffectiveConnectionType. net::EffectiveConnectionType type_; + // Current network quality metrics. + base::TimeDelta http_rtt_; + base::TimeDelta transport_rtt_; + int32_t downstream_throughput_kbps_; + // IO thread based observer that is owned by this service. Created on the UI // thread, but used and deleted on the IO thread. std::unique_ptr<IONetworkQualityObserver> io_observer_; @@ -93,6 +124,11 @@ net::NetworkQualityEstimator::EffectiveConnectionTypeObserver> effective_connection_type_observer_list_; + // Observer list for changes in RTT or throughput values. + base::ObserverList< + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver> + rtt_throughput_observer_list_; + // Prefs manager that is owned by this service. Created on the UI thread, but // used and deleted on the IO thread. std::unique_ptr<net::NetworkQualitiesPrefsManager> prefs_manager_;
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc index d33beb0a..e4119d5 100644 --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
@@ -6,6 +6,7 @@ #include <string> #include "base/bind.h" +#include "base/macros.h" #include "base/metrics/field_trial.h" #include "base/run_loop.h" #include "base/test/histogram_tester.h" @@ -51,6 +52,42 @@ private: net::EffectiveConnectionType effective_connection_type_; + + DISALLOW_COPY_AND_ASSIGN(TestEffectiveConnectionTypeObserver); +}; + +class TestRTTAndThroughputEstimatesObserver + : public net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver { + public: + TestRTTAndThroughputEstimatesObserver() + : http_rtt_(base::TimeDelta::FromMilliseconds(-1)), + transport_rtt_(base::TimeDelta::FromMilliseconds(-1)), + downstream_throughput_kbps_(-1) {} + ~TestRTTAndThroughputEstimatesObserver() override {} + + // net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver + // implementation: + void OnRTTOrThroughputEstimatesComputed( + base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps) override { + http_rtt_ = http_rtt; + transport_rtt_ = transport_rtt; + downstream_throughput_kbps_ = downstream_throughput_kbps; + } + + base::TimeDelta http_rtt() const { return http_rtt_; } + base::TimeDelta transport_rtt() const { return transport_rtt_; } + int32_t downstream_throughput_kbps() const { + return downstream_throughput_kbps_; + } + + private: + base::TimeDelta http_rtt_; + base::TimeDelta transport_rtt_; + int32_t downstream_throughput_kbps_; + + DISALLOW_COPY_AND_ASSIGN(TestRTTAndThroughputEstimatesObserver); }; class UINetworkQualityEstimatorServiceBrowserTest @@ -205,6 +242,50 @@ nqe_observer_3.effective_connection_type()); } +IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest, + VerifyRTTs) { + // Verifies that NQE notifying RTTAndThroughputEstimatesObserver causes the + // UINetworkQualityEstimatorService to receive an update. + Profile* profile = ProfileManager::GetActiveUserProfile(); + UINetworkQualityEstimatorService* nqe_service = + UINetworkQualityEstimatorServiceFactory::GetForProfile(profile); + TestRTTAndThroughputEstimatesObserver nqe_observer; + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer); + + base::TimeDelta rtt_1 = base::TimeDelta::FromMilliseconds(100); + + nqe_test_util::OverrideRTTsAndWait(rtt_1); + EXPECT_EQ(rtt_1, nqe_observer.http_rtt()); + + base::TimeDelta rtt_2 = base::TimeDelta::FromMilliseconds(200); + + nqe_test_util::OverrideRTTsAndWait(rtt_2); + EXPECT_EQ(rtt_2, nqe_observer.http_rtt()); + + nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer); + + base::TimeDelta rtt_3 = base::TimeDelta::FromMilliseconds(300); + + nqe_test_util::OverrideRTTsAndWait(rtt_3); + EXPECT_EQ(rtt_2, nqe_observer.http_rtt()); + + // Observer should be notified on addition. + TestRTTAndThroughputEstimatesObserver nqe_observer_2; + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_2); + EXPECT_GT(0, nqe_observer_2.http_rtt().InMilliseconds()); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(rtt_3, nqe_observer_2.http_rtt()); + + // |nqe_observer_3| should be not notified since it unregisters before the + // message loop is run. + TestRTTAndThroughputEstimatesObserver nqe_observer_3; + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_3); + EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds()); + nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer_3); + base::RunLoop().RunUntilIdle(); + EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds()); +} + // Verify that prefs are writen and read correctly. IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest, WritingReadingToPrefsEnabled) {
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc index fe3e55c..d1eac6a 100644 --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
@@ -28,6 +28,16 @@ network_quality_estimator->ReportEffectiveConnectionTypeForTesting(type); } +void OverrideRTTsAndWaitOnIO(base::TimeDelta rtt, IOThread* io_thread) { + if (!io_thread->globals()->network_quality_estimator) + return; + net::NetworkQualityEstimator* network_quality_estimator = + io_thread->globals()->network_quality_estimator.get(); + if (!network_quality_estimator) + return; + network_quality_estimator->ReportRTTsAndThroughputForTesting(rtt, rtt, -1); +} + } // namespace void OverrideEffectiveConnectionTypeAndWait(net::EffectiveConnectionType type) { @@ -43,4 +53,16 @@ run_loop.Run(); } +void OverrideRTTsAndWait(base::TimeDelta rtt) { + // Block |run_loop| until OverrideRTTsAndWaitOnIO has completed. + // Any UI tasks posted by calling OverrideRTTsAndWaitOnIO will complete before + // the reply unblocks |run_loop|. + base::RunLoop run_loop; + content::BrowserThread::PostTaskAndReply( + content::BrowserThread::IO, FROM_HERE, + base::Bind(&OverrideRTTsAndWaitOnIO, rtt, g_browser_process->io_thread()), + run_loop.QuitClosure()); + run_loop.Run(); +} + } // namespace nqe_test_util
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h index d59914d..35943ce 100644 --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_ #define CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_ +#include "base/time/time.h" #include "net/nqe/effective_connection_type.h" namespace nqe_test_util { @@ -15,6 +16,12 @@ // replies. void OverrideEffectiveConnectionTypeAndWait(net::EffectiveConnectionType type); +// Forces NetworkQualityEstimator to report |rtt| to all its +// RTTAndThroughputEstimatesObservers. +// This blocks execution on the calling thread until the IO task runs and +// replies. +void OverrideRTTsAndWait(base::TimeDelta rtt); + } // namespace nqe_test_util #endif // CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc index fa4dc6c..fe9d7f5 100644 --- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
@@ -34,6 +34,12 @@ MOCK_METHOD1( RemoveEffectiveConnectionTypeObserver, void(net::NetworkQualityEstimator::EffectiveConnectionTypeObserver*)); + MOCK_METHOD1( + AddRTTAndThroughputEstimatesObserver, + void(net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver*)); + MOCK_METHOD1( + RemoveRTTAndThroughputEstimatesObserver, + void(net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver*)); }; } // namespace
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor.cc b/chrome/browser/power_usage_monitor/power_usage_monitor.cc deleted file mode 100644 index 4ce9c5c4..0000000 --- a/chrome/browser/power_usage_monitor/power_usage_monitor.cc +++ /dev/null
@@ -1,254 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/power_usage_monitor/power_usage_monitor.h" - -#include <stddef.h> -#include <utility> - -#include "base/bind.h" -#include "base/lazy_instance.h" -#include "base/logging.h" -#include "base/macros.h" -#include "base/metrics/histogram_macros.h" -#include "base/strings/stringprintf.h" -#include "base/sys_info.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/notification_service.h" -#include "content/public/browser/notification_source.h" -#include "content/public/browser/notification_types.h" -#include "content/public/browser/render_process_host.h" - -namespace { - -// Wait this long after power on before enabling power usage monitoring. -const int kMinUptimeMinutes = 30; - -// Minimum discharge time after which we collect the discharge rate. -const int kMinDischargeMinutes = 30; - -class PowerUsageMonitorSystemInterface - : public PowerUsageMonitor::SystemInterface { - public: - explicit PowerUsageMonitorSystemInterface(PowerUsageMonitor* owner) - : power_usage_monitor_(owner), weak_ptr_factory_(this) {} - ~PowerUsageMonitorSystemInterface() override {} - - void ScheduleHistogramReport(base::TimeDelta delay) override { - content::BrowserThread::PostDelayedTask( - content::BrowserThread::UI, FROM_HERE, - base::Bind( - &PowerUsageMonitorSystemInterface::ReportBatteryLevelHistogram, - weak_ptr_factory_.GetWeakPtr(), Now(), delay), - delay); - } - - void CancelPendingHistogramReports() override { - weak_ptr_factory_.InvalidateWeakPtrs(); - } - - void RecordDischargePercentPerHour(int percent_per_hour) override { - UMA_HISTOGRAM_PERCENTAGE("Power.BatteryDischargePercentPerHour", - percent_per_hour); - } - - base::Time Now() override { return base::Time::Now(); } - - protected: - void ReportBatteryLevelHistogram(base::Time start_time, - base::TimeDelta discharge_time) { - // It's conceivable that the code to cancel pending histogram reports on - // system suspend, will only get called after the system has woken up. - // To mitigage this, check whether more time has passed than expected and - // abort histogram recording in this case. - - // Delayed tasks are subject to timer coalescing and can fire anywhere from - // delay -> delay * 1.5) . In most cases, the OS should fire the task - // at the next wakeup and not as late as it can. - // A threshold of 2 minutes is used, since that should be large enough to - // take the slop factor due to coalescing into account. - base::TimeDelta threshold = - discharge_time + base::TimeDelta::FromMinutes(2); - if ((Now() - start_time) > threshold) { - return; - } - - const std::string histogram_name = base::StringPrintf( - "Power.BatteryDischarge_%d", discharge_time.InMinutes()); - base::HistogramBase* histogram = - base::Histogram::FactoryGet(histogram_name, 1, 100, 101, - base::Histogram::kUmaTargetedHistogramFlag); - double discharge_amount = power_usage_monitor_->discharge_amount(); - histogram->Add(discharge_amount * 100); - } - - private: - PowerUsageMonitor* power_usage_monitor_; // Not owned. - - // Used to cancel in progress delayed tasks. - base::WeakPtrFactory<PowerUsageMonitorSystemInterface> weak_ptr_factory_; -}; - -} // namespace - -PowerUsageMonitor::PowerUsageMonitor() - : callback_(base::Bind(&PowerUsageMonitor::OnBatteryStatusUpdate, - base::Unretained(this))), - system_interface_(new PowerUsageMonitorSystemInterface(this)), - started_(false), - tracking_discharge_(false), - on_battery_power_(false), - initial_battery_level_(0), - current_battery_level_(0) {} - -PowerUsageMonitor::~PowerUsageMonitor() { - if (started_) - base::PowerMonitor::Get()->RemoveObserver(this); -} - -void PowerUsageMonitor::Start() { - // Power monitoring may be delayed based on uptime, but renderer process - // lifetime tracking needs to start immediately so processes created before - // then are accounted for. - registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED, - content::NotificationService::AllBrowserContextsAndSources()); - registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, - content::NotificationService::AllBrowserContextsAndSources()); - subscription_ = - device::BatteryStatusService::GetInstance()->AddCallback(callback_); - - // Delay initialization until the system has been up for a while. - // This is to mitigate the effect of increased power draw during system start. - base::TimeDelta uptime = base::SysInfo::Uptime(); - base::TimeDelta min_uptime = base::TimeDelta::FromMinutes(kMinUptimeMinutes); - if (uptime < min_uptime) { - base::TimeDelta delay = min_uptime - uptime; - content::BrowserThread::PostDelayedTask( - content::BrowserThread::UI, FROM_HERE, - base::Bind(&PowerUsageMonitor::StartInternal, base::Unretained(this)), - delay); - } else { - StartInternal(); - } -} - -void PowerUsageMonitor::StartInternal() { - DCHECK(!started_); - started_ = true; - - // PowerMonitor is used to get suspend/resume notifications. - base::PowerMonitor::Get()->AddObserver(this); -} - -void PowerUsageMonitor::DischargeStarted(double battery_level) { - on_battery_power_ = true; - - // If all browser windows are closed, don't report power metrics since - // Chrome's power draw is likely not significant. - if (live_renderer_ids_.empty()) - return; - - // Cancel any in-progress ReportBatteryLevelHistogram() calls. - system_interface_->CancelPendingHistogramReports(); - - tracking_discharge_ = true; - start_discharge_time_ = system_interface_->Now(); - - initial_battery_level_ = battery_level; - current_battery_level_ = battery_level; - - const int kBatteryReportingIntervalMinutes[] = {5, 15, 30}; - for (auto reporting_interval : kBatteryReportingIntervalMinutes) { - base::TimeDelta delay = base::TimeDelta::FromMinutes(reporting_interval); - system_interface_->ScheduleHistogramReport(delay); - } -} - -void PowerUsageMonitor::WallPowerConnected(double battery_level) { - on_battery_power_ = false; - - if (tracking_discharge_) { - DCHECK(!start_discharge_time_.is_null()); - base::TimeDelta discharge_time = - system_interface_->Now() - start_discharge_time_; - - if (discharge_time.InMinutes() > kMinDischargeMinutes) { - // Record the rate at which the battery discharged over the entire period - // the system was on battery power. - double discharge_hours = discharge_time.InSecondsF() / 3600.0; - int percent_per_hour = - floor(((discharge_amount() / discharge_hours) * 100.0) + 0.5); - system_interface_->RecordDischargePercentPerHour(percent_per_hour); - } - } - - // Cancel any in-progress ReportBatteryLevelHistogram() calls. - system_interface_->CancelPendingHistogramReports(); - - initial_battery_level_ = 0; - current_battery_level_ = 0; - start_discharge_time_ = base::Time(); - tracking_discharge_ = false; -} - -void PowerUsageMonitor::OnBatteryStatusUpdate( - const device::BatteryStatus& status) { - bool now_on_battery_power = (status.charging == 0); - bool was_on_battery_power = on_battery_power_; - double battery_level = status.level; - - if (now_on_battery_power == was_on_battery_power) { - if (now_on_battery_power) - current_battery_level_ = battery_level; - return; - } else if (now_on_battery_power) { // Wall power disconnected. - DischargeStarted(battery_level); - } else { // Wall power connected. - WallPowerConnected(battery_level); - } -} - -void PowerUsageMonitor::OnRenderProcessNotification(int type, int rph_id) { - size_t previous_num_live_renderers = live_renderer_ids_.size(); - - if (type == content::NOTIFICATION_RENDERER_PROCESS_CREATED) { - live_renderer_ids_.insert(rph_id); - } else if (type == content::NOTIFICATION_RENDERER_PROCESS_CLOSED) { - live_renderer_ids_.erase(rph_id); - } else { - NOTREACHED() << "Unexpected notification type: " << type; - } - - if (live_renderer_ids_.empty() && previous_num_live_renderers != 0) { - // All render processes have died. - CancelPendingHistogramReporting(); - tracking_discharge_ = false; - } -} - -void PowerUsageMonitor::SetSystemInterfaceForTest( - std::unique_ptr<SystemInterface> system_interface) { - system_interface_ = std::move(system_interface); -} - -void PowerUsageMonitor::OnPowerStateChange(bool on_battery_power) {} - -void PowerUsageMonitor::OnResume() {} - -void PowerUsageMonitor::OnSuspend() { - CancelPendingHistogramReporting(); -} - -void PowerUsageMonitor::Observe(int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) { - content::RenderProcessHost* rph = - content::Source<content::RenderProcessHost>(source).ptr(); - OnRenderProcessNotification(type, rph->GetID()); -} - -void PowerUsageMonitor::CancelPendingHistogramReporting() { - // Cancel any in-progress histogram reports and reporting of discharge UMA. - system_interface_->CancelPendingHistogramReports(); -}
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor.h b/chrome/browser/power_usage_monitor/power_usage_monitor.h deleted file mode 100644 index c30b57c..0000000 --- a/chrome/browser/power_usage_monitor/power_usage_monitor.h +++ /dev/null
@@ -1,130 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_ -#define CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_ - -#include "base/containers/hash_tables.h" -#include "base/gtest_prod_util.h" -#include "base/macros.h" -#include "base/memory/singleton.h" -#include "base/power_monitor/power_monitor.h" -#include "base/time/time.h" -#include "content/public/browser/browser_message_filter.h" -#include "content/public/browser/notification_observer.h" -#include "content/public/browser/notification_registrar.h" -#include "device/battery/battery_status_service.h" - -// Record statistics on power usage. -// -// Two main statics are recorded by this class: -// * Power.BatteryDischarge_{5,15,30} - delta between battery level when -// unplugged from wallpower, over the specified period - in minutes. -// * Power.BatteryDischargeRateWhenUnplugged - the rate of battery discharge -// from the device being unplugged until it's plugged back in, if said period -// was longer than 30 minutes. -// -// Heuristics: -// * Data collection starts after system uptime exceeds 30 minutes. -// * If the machine goes to sleep or all renderers are closed then the current -// measurement is cancelled. - -class PowerUsageMonitor : public base::PowerObserver, - public content::NotificationObserver { - public: - class SystemInterface { - public: - virtual ~SystemInterface() {} - - virtual void ScheduleHistogramReport(base::TimeDelta delay) = 0; - virtual void CancelPendingHistogramReports() = 0; - - // Record the battery discharge percent per hour over the time the system - // is on battery power, legal values [0,100]. - virtual void RecordDischargePercentPerHour(int percent_per_hour) = 0; - - // Allow tests to override clock. - virtual base::Time Now() = 0; - }; - - public: - PowerUsageMonitor(); - ~PowerUsageMonitor() override; - - double discharge_amount() const { - return initial_battery_level_ - current_battery_level_; - } - - // Start monitoring power usage. - // Note that the actual monitoring will be delayed until 30 minutes after - // system boot. - void Start(); - - void SetSystemInterfaceForTest( - std::unique_ptr<SystemInterface> system_interface); - - // Overridden from base::PowerObserver: - void OnPowerStateChange(bool on_battery_power) override; - void OnResume() override; - void OnSuspend() override; - - // Overridden from NotificationObserver: - void Observe(int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) override; - - private: - friend class PowerUsageMonitorTest; - FRIEND_TEST_ALL_PREFIXES(PowerUsageMonitorTest, OnBatteryStatusUpdate); - FRIEND_TEST_ALL_PREFIXES(PowerUsageMonitorTest, OnRenderProcessNotification); - - // Start monitoring system power usage. - // This function may be called after a delay, see Start() for details. - void StartInternal(); - - void OnBatteryStatusUpdate(const device::BatteryStatus& status); - void OnRenderProcessNotification(int type, int rph_id); - - void DischargeStarted(double battery_level); - void WallPowerConnected(double battery_level); - - void CancelPendingHistogramReporting(); - - device::BatteryStatusService::BatteryUpdateCallback callback_; - std::unique_ptr<device::BatteryStatusService::BatteryUpdateSubscription> - subscription_; - - content::NotificationRegistrar registrar_; - - std::unique_ptr<SystemInterface> system_interface_; - - // True if monitoring was started (Start() called). - bool started_; - - // True if collecting metrics for the current discharge cycle e.g. if no - // renderers are open we don't keep track of discharge. - bool tracking_discharge_; - - // True if the system is running on battery power, false if on wall power. - bool on_battery_power_; - - // Battery level when wall power disconnected. [0.0, 1.0] - 0 if on wall - // power, 1 means fully charged. - double initial_battery_level_; - - // Current battery level. [0.0, 1.0] - 0 if on wall power, 1 means fully - // charged. - double current_battery_level_; - - // Timestamp when wall power was disconnected, null Time object otherwise. - base::Time start_discharge_time_; - - // IDs of live renderer processes. - base::hash_set<int> live_renderer_ids_; - - private: - DISALLOW_COPY_AND_ASSIGN(PowerUsageMonitor); -}; - -#endif // CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc b/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc deleted file mode 100644 index 1c94a3f5..0000000 --- a/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc +++ /dev/null
@@ -1,165 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/power_usage_monitor/power_usage_monitor.h" - -#include <utility> - -#include "content/public/browser/notification_types.h" -#include "content/public/test/test_browser_thread_bundle.h" -#include "device/battery/battery_monitor.mojom.h" -#include "testing/gtest/include/gtest/gtest.h" - -// Dummy ID to identify a phantom RenderProcessHost in tests. -const int kDummyRenderProcessHostID = 1; - -class SystemInterfaceForTest : public PowerUsageMonitor::SystemInterface { - public: - SystemInterfaceForTest() - : num_pending_histogram_reports_(0), - discharge_percent_per_hour_(0), - now_(base::Time::FromInternalValue(1000)) {} - ~SystemInterfaceForTest() override {} - - int num_pending_histogram_reports() const { - return num_pending_histogram_reports_; - } - - int discharge_percent_per_hour() const { return discharge_percent_per_hour_; } - - void AdvanceClockSeconds(int seconds) { - now_ += base::TimeDelta::FromSeconds(seconds); - } - - void AdvanceClockMinutes(int minutes) { - now_ += base::TimeDelta::FromMinutes(minutes); - } - - void ScheduleHistogramReport(base::TimeDelta delay) override { - num_pending_histogram_reports_++; - } - - void CancelPendingHistogramReports() override { - num_pending_histogram_reports_ = 0; - } - - void RecordDischargePercentPerHour(int percent_per_hour) override { - discharge_percent_per_hour_ = percent_per_hour; - } - - base::Time Now() override { return now_; } - - private: - int num_pending_histogram_reports_; - int discharge_percent_per_hour_; - base::Time now_; -}; - -class PowerUsageMonitorTest : public testing::Test { - protected: - void SetUp() override { - monitor_.reset(new PowerUsageMonitor); - // PowerUsageMonitor assumes ownership. - std::unique_ptr<SystemInterfaceForTest> test_interface( - new SystemInterfaceForTest()); - system_interface_ = test_interface.get(); - monitor_->SetSystemInterfaceForTest(std::move(test_interface)); - - // Without live renderers, the monitor won't do anything. - monitor_->OnRenderProcessNotification( - content::NOTIFICATION_RENDERER_PROCESS_CREATED, - kDummyRenderProcessHostID); - } - - void UpdateBatteryStatus(bool charging, double battery_level) { - device::BatteryStatus battery_status; - battery_status.charging = charging; - battery_status.level = battery_level; - monitor_->OnBatteryStatusUpdate(battery_status); - } - - void KillTestRenderer() { - monitor_->OnRenderProcessNotification( - content::NOTIFICATION_RENDERER_PROCESS_CLOSED, - kDummyRenderProcessHostID); - } - - std::unique_ptr<PowerUsageMonitor> monitor_; - SystemInterfaceForTest* system_interface_; - content::TestBrowserThreadBundle thread_bundle_; -}; - -TEST_F(PowerUsageMonitorTest, StartStopQuickly) { - // Going on battery power. - UpdateBatteryStatus(false, 1.0); - int initial_num_histogram_reports = - system_interface_->num_pending_histogram_reports(); - ASSERT_GT(initial_num_histogram_reports, 0); - - // Battery level goes down a bit. - system_interface_->AdvanceClockSeconds(1); - UpdateBatteryStatus(false, 0.9); - ASSERT_EQ(initial_num_histogram_reports, - system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); - - // Wall power connected. - system_interface_->AdvanceClockSeconds(30); - UpdateBatteryStatus(true, 0); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); -} - -TEST_F(PowerUsageMonitorTest, DischargePercentReported) { - // Going on battery power. - UpdateBatteryStatus(false, 1.0); - int initial_num_histogram_reports = - system_interface_->num_pending_histogram_reports(); - ASSERT_GT(initial_num_histogram_reports, 0); - - // Battery level goes down a bit. - system_interface_->AdvanceClockSeconds(30); - UpdateBatteryStatus(false, 0.9); - ASSERT_EQ(initial_num_histogram_reports, - system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); - - // Wall power connected. - system_interface_->AdvanceClockMinutes(31); - UpdateBatteryStatus(true, 0); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - ASSERT_GT(system_interface_->discharge_percent_per_hour(), 0); -} - -TEST_F(PowerUsageMonitorTest, NoRenderersDisablesMonitoring) { - KillTestRenderer(); - - // Going on battery power. - UpdateBatteryStatus(false, 1.0); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); - - // Wall power connected. - system_interface_->AdvanceClockSeconds(30); - UpdateBatteryStatus(true, 0.5); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); -} - -TEST_F(PowerUsageMonitorTest, NoRenderersCancelsInProgressMonitoring) { - // Going on battery power. - UpdateBatteryStatus(false, 1.0); - ASSERT_GT(system_interface_->num_pending_histogram_reports(), 0); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); - - // All renderers killed. - KillTestRenderer(); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - - // Wall power connected. - system_interface_->AdvanceClockMinutes(31); - UpdateBatteryStatus(true, 0); - ASSERT_EQ(0, system_interface_->num_pending_histogram_reports()); - ASSERT_EQ(0, system_interface_->discharge_percent_per_hour()); -}
diff --git a/chrome/browser/resources/options/controlled_setting.js b/chrome/browser/resources/options/controlled_setting.js index fc5b960..7b38321 100644 --- a/chrome/browser/resources/options/controlled_setting.js +++ b/chrome/browser/resources/options/controlled_setting.js
@@ -174,9 +174,13 @@ '.controlled-setting-bubble-extension-manage-link'); var extensionId = this.extensionId; manageLink.onclick = function() { - uber.invokeMethodOnWindow( - window.top, 'showPage', - {pageId: 'extensions', path: '?id=' + extensionId}); + if (window != window.top) { + uber.invokeMethodOnWindow( + window.top, 'showPage', + {pageId: 'extensions', path: '?id=' + extensionId}); + } else { + window.open('chrome://extensions/?id=' + extensionId); + } }; var disableButton = extensionContainer.querySelector(
diff --git a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html index d2fef10..05388a29 100644 --- a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html +++ b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
@@ -152,7 +152,7 @@ <div>$i18n{largeMouseCursorSizeLabel}</div> <cr-slider disabled="[[!prefs.settings.a11y.large_cursor_enabled.value]]" - value="{{prefs.settings.a11y.large_cursor_dip_size.value}}" + pref="{{prefs.settings.a11y.large_cursor_dip_size}}" min="25" max="64"></cr-slider> </div> </template>
diff --git a/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html b/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html index 782feff8..53654b0 100644 --- a/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html +++ b/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html
@@ -14,7 +14,7 @@ <div class="settings-box first"> <div class="start">$i18n{fontSize}</div> <cr-slider id="sizeSlider" - value="{{prefs.webkit.webprefs.default_font_size.value}}" + pref="{{prefs.webkit.webprefs.default_font_size}}" tick-values="[[fontSizeRange_]]" label-min="$i18n{tiny}" label-max="$i18n{huge}"> </cr-slider> @@ -29,7 +29,7 @@ : $i18n{quickBrownFox} </div> <cr-slider id="minimumSizeSlider" - value="{{prefs.webkit.webprefs.minimum_font_size.value}}" + pref="{{prefs.webkit.webprefs.minimum_font_size}}" tick-values="[[minimumFontSizeRange_]]" label-min="$i18n{tiny}" label-max="$i18n{huge}"> </cr-slider>
diff --git a/chrome/browser/resources/settings/controls/settings_toggle_button.html b/chrome/browser/resources/settings/controls/settings_toggle_button.html index 160efc67..78bc22a 100644 --- a/chrome/browser/resources/settings/controls/settings_toggle_button.html +++ b/chrome/browser/resources/settings/controls/settings_toggle_button.html
@@ -39,7 +39,7 @@ actionable$="[[!controlDisabled_(disabled, pref.*)]]" hidden="[[!label]]"> <div id="label" class="label">[[label]]</div> - <div class="secondary label">[[subLabel]]</div> + <div id="subLabel" class="secondary label">[[subLabel]]</div> </div> <content select=".more-actions"></content> <template is="dom-if" if="[[hasPrefPolicyIndicator(pref.*)]]"> @@ -48,6 +48,7 @@ </template> <paper-toggle-button id="control" checked="{{checked}}" on-change="notifyChangedByUserInteraction" aria-labelledby="label" + aria-describedby="subLabel" disabled="[[controlDisabled_(disabled, pref)]]"> </paper-toggle-button> </div>
diff --git a/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp b/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp index 04756b7..0da9b33 100644 --- a/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp
@@ -9,6 +9,7 @@ '../controls/compiled_resources2.gyp:settings_dropdown_menu', '../prefs/compiled_resources2.gyp:prefs_behavior', '../prefs/compiled_resources2.gyp:prefs_types', + '<(DEPTH)/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp:cr_policy_indicator_behavior', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:load_time_data', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:web_ui_listener_behavior',
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.html b/chrome/browser/resources/settings/date_time_page/date_time_page.html index 604cebeef..e482dfc 100644 --- a/chrome/browser/resources/settings/date_time_page/date_time_page.html +++ b/chrome/browser/resources/settings/date_time_page/date_time_page.html
@@ -1,7 +1,7 @@ <link rel="import" href="chrome://resources/html/cr.html"> <link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> -<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html"> +<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-toggle-button/paper-toggle-button.html"> <link rel="import" href="../controls/settings_dropdown_menu.html"> @@ -23,7 +23,7 @@ } paper-toggle-button, - cr-policy-pref-indicator { + cr-policy-indicator { -webkit-margin-start: var(--settings-control-spacing); } </style> @@ -32,9 +32,9 @@ $i18n{timeZoneGeolocation} </div> <template is="dom-if" if="[[hasTimeZoneAutoDetectPolicy_]]" restamp> - <cr-policy-pref-indicator pref="[[fakeTimeZonePolicyPref_]]" + <cr-policy-indicator indicator-type="devicePolicy" icon-aria-label="$i18n{timeZoneGeolocation}"> - </cr-policy-pref-indicator> + </cr-policy-indicator> </template> <paper-toggle-button id="timeZoneAutoDetect"
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.js b/chrome/browser/resources/settings/date_time_page/date_time_page.js index 6e28f44..b2349200 100644 --- a/chrome/browser/resources/settings/date_time_page/date_time_page.js +++ b/chrome/browser/resources/settings/date_time_page/date_time_page.js
@@ -63,12 +63,6 @@ }, /** - * A fake preference to provide cr-policy-pref-indicator with policy info. - * @private {!chrome.settingsPrivate.PrefObject|undefined} - */ - fakeTimeZonePolicyPref_: Object, - - /** * Initialized with the current time zone so the menu displays the * correct value. The full option list is fetched lazily if necessary by * maybeGetTimeZoneList_. @@ -118,24 +112,12 @@ * @private */ onTimeZoneAutoDetectPolicyChanged_: function(managed, valueFromPolicy) { - if (!managed) { + if (managed) { + this.timeZoneAutoDetectPolicy_ = valueFromPolicy ? + settings.TimeZoneAutoDetectPolicy.FORCED_ON : + settings.TimeZoneAutoDetectPolicy.FORCED_OFF; + } else { this.timeZoneAutoDetectPolicy_ = settings.TimeZoneAutoDetectPolicy.NONE; - this.fakeTimeZonePolicyPref_ = undefined; - return; - } - - this.timeZoneAutoDetectPolicy_ = valueFromPolicy ? - settings.TimeZoneAutoDetectPolicy.FORCED_ON : - settings.TimeZoneAutoDetectPolicy.FORCED_OFF; - - if (!this.fakeTimeZonePolicyPref_) { - this.fakeTimeZonePolicyPref_ = { - key: 'fakeTimeZonePref', - type: chrome.settingsPrivate.PrefType.NUMBER, - value: 0, - controlledBy: chrome.settingsPrivate.ControlledBy.DEVICE_POLICY, - enforcement: chrome.settingsPrivate.Enforcement.ENFORCED, - }; } },
diff --git a/chrome/browser/resources/settings/device_page/compiled_resources2.gyp b/chrome/browser/resources/settings/device_page/compiled_resources2.gyp index d7fb5f2..1afc4e1f 100644 --- a/chrome/browser/resources/settings/device_page/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/device_page/compiled_resources2.gyp
@@ -55,6 +55,7 @@ 'dependencies': [ '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:i18n_behavior', + '<(EXTERNS_GYP):settings_private', '<(EXTERNS_GYP):system_display', '<(INTERFACES_GYP):system_display_interface', 'display_layout'
diff --git a/chrome/browser/resources/settings/device_page/display.html b/chrome/browser/resources/settings/device_page/display.html index d51a777f..37031c93 100644 --- a/chrome/browser/resources/settings/device_page/display.html +++ b/chrome/browser/resources/settings/device_page/display.html
@@ -114,7 +114,7 @@ </div> </div> <cr-slider disabled="[[!enableSetResolution_(selectedDisplay)]]" - tick-values="[[modeValues_]]" value="{{selectedModeIndex_}}" + tick-values="[[modeValues_]]" pref="{{selectedModePref_}}" on-change="onSelectedModeChange_"> </cr-slider> </div>
diff --git a/chrome/browser/resources/settings/device_page/display.js b/chrome/browser/resources/settings/device_page/display.js index dfea430..c4f5c21 100644 --- a/chrome/browser/resources/settings/device_page/display.js +++ b/chrome/browser/resources/settings/device_page/display.js
@@ -24,6 +24,21 @@ properties: { /** + * @type {!chrome.settingsPrivate.PrefObject} + * @private + */ + selectedModePref_: { + type: Object, + value: function() { + return { + key: 'fakeDisplaySliderPref', + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 0, + }; + }, + }, + + /** * Array of displays. * @type {!Array<!chrome.system.display.DisplayUnitInfo>} */ @@ -55,9 +70,6 @@ /** @private {!Array<number>} Mode index values for slider. */ modeValues_: Array, - - /** @private Selected mode index value for slider. */ - selectedModeIndex_: Number, }, /** @private {number} Selected mode index received from chrome. */ @@ -151,18 +163,20 @@ /** @private */ selectedDisplayChanged_: function() { - // Set |modeValues_| before |selectedModeIndex_| so that the slider updates - // correctly. + // Set |modeValues_| before |selectedModePref_.value| so that the slider + // updates correctly. var numModes = this.selectedDisplay.modes.length; if (numModes == 0) { this.modeValues_ = []; - this.selectedModeIndex_ = 0; + this.set('selectedModePref_.value', 0); this.currentSelectedModeIndex_ = 0; return; } this.modeValues_ = Array.from(Array(numModes).keys()); - this.selectedModeIndex_ = this.getSelectedModeIndex_(this.selectedDisplay); - this.currentSelectedModeIndex_ = this.selectedModeIndex_; + this.set('selectedModePref_.value', this.getSelectedModeIndex_( + this.selectedDisplay)); + this.currentSelectedModeIndex_ = + /** @type {number} */ (this.selectedModePref_.value); }, /** @@ -204,7 +218,7 @@ * primary or extended. * @param {!chrome.system.display.DisplayUnitInfo} selectedDisplay * @param {string} primaryDisplayId - * @return {number} Retruns 0 if the display is primary else returns 1. + * @return {number} Returns 0 if the display is primary else returns 1. * @private */ getDisplaySelectMenuIndex_: function(selectedDisplay, primaryDisplayId) { @@ -269,12 +283,13 @@ if (this.selectedDisplay.modes.length == 0 || this.currentSelectedModeIndex_ == -1) { // If currentSelectedModeIndex_ == -1, selectedDisplay and - // selectedModeIndex_ are not in sync. + // |selectedModePref_.value| are not in sync. return this.i18n( 'displayResolutionText', this.selectedDisplay.bounds.width.toString(), this.selectedDisplay.bounds.height.toString()); } - var mode = this.selectedDisplay.modes[this.selectedModeIndex_]; + var mode = this.selectedDisplay.modes[ + /** @type {number} */(this.selectedModePref_.value)]; var best = this.selectedDisplay.isInternal ? mode.uiScale == 1.0 : mode.isNative; var widthStr = mode.width.toString(); @@ -298,8 +313,8 @@ continue; if (this.selectedDisplay != display) { // Set currentSelectedModeIndex_ to -1 so that getResolutionText_ does - // not flicker. selectedDisplayChanged will update selectedModeIndex_ - // and currentSelectedModeIndex_ correctly. + // not flicker. selectedDisplayChanged will update + // |selectedModePref_.value| and currentSelectedModeIndex_ correctly. this.currentSelectedModeIndex_ = -1; this.selectedDisplay = display; } @@ -355,13 +370,14 @@ */ onSelectedModeChange_: function() { if (this.currentSelectedModeIndex_ == -1 || - this.currentSelectedModeIndex_ == this.selectedModeIndex_) { + this.currentSelectedModeIndex_ == this.selectedModePref_.value) { // Don't change the selected display mode until we have received an update // from Chrome and the mode differs from the current mode. return; } /** @type {!chrome.system.display.DisplayProperties} */ var properties = { - displayMode: this.selectedDisplay.modes[this.selectedModeIndex_] + displayMode: this.selectedDisplay.modes[ + /** @type {number} */(this.selectedModePref_.value)] }; settings.display.systemDisplayApi.setDisplayProperties( this.selectedDisplay.id, properties,
diff --git a/chrome/browser/resources/settings/device_page/keyboard.html b/chrome/browser/resources/settings/device_page/keyboard.html index b57ec09..01c4d17 100644 --- a/chrome/browser/resources/settings/device_page/keyboard.html +++ b/chrome/browser/resources/settings/device_page/keyboard.html
@@ -83,7 +83,7 @@ <div class="settings-box continuation settings-checkbox-spacer"> <div class="start" id="repeatDelayLabel">$i18n{keyRepeatDelay}</div> <cr-slider id="delaySlider" - value="{{prefs.settings.language.xkb_auto_repeat_delay_r2.value}}" + pref="{{prefs.settings.language.xkb_auto_repeat_delay_r2}}" tick-values="[[autoRepeatDelays_]]" disabled="[[ !prefs.settings.language.xkb_auto_repeat_enabled_r2.value]]" @@ -95,8 +95,8 @@ <div class="settings-box continuation settings-checkbox-spacer"> <div class="start" id="repeatRateLabel">$i18n{keyRepeatRate}</div> <cr-slider id="repeatRateSlider" - value="{{ - prefs.settings.language.xkb_auto_repeat_interval_r2.value}}" + pref="{{ + prefs.settings.language.xkb_auto_repeat_interval_r2}}" tick-values="[[autoRepeatIntervals_]]" disabled="[[ !prefs.settings.language.xkb_auto_repeat_enabled_r2.value]]"
diff --git a/chrome/browser/resources/settings/device_page/pointers.html b/chrome/browser/resources/settings/device_page/pointers.html index 82c3dcb..baa1d51 100644 --- a/chrome/browser/resources/settings/device_page/pointers.html +++ b/chrome/browser/resources/settings/device_page/pointers.html
@@ -36,7 +36,7 @@ </div> <div class="settings-box"> <div class="start" id="mouseSpeedLabel">$i18n{mouseSpeed}</div> - <cr-slider value="{{prefs.settings.mouse.sensitivity2.value}}" + <cr-slider pref="{{prefs.settings.mouse.sensitivity2}}" tick-values="[[sensitivityValues_]]" aria-labelledby="mouseSpeedLabel" label-min="$i18n{pointerSlow}" @@ -61,7 +61,7 @@ <div class="settings-box"> <div class="start" id="touchpadSpeedLabel">$i18n{touchpadSpeed}</div> <cr-slider id="touchpadSensitivity" - value="{{prefs.settings.touchpad.sensitivity2.value}}" + pref="{{prefs.settings.touchpad.sensitivity2}}" tick-values="[[sensitivityValues_]]" aria-labelledby="touchpadSpeedLabel" label-min="$i18n{pointerSlow}"
diff --git a/chrome/browser/resources/settings/internet_page/internet_detail_page.html b/chrome/browser/resources/settings/internet_page/internet_detail_page.html index 0647ba3..3e735d11 100644 --- a/chrome/browser/resources/settings/internet_page/internet_detail_page.html +++ b/chrome/browser/resources/settings/internet_page/internet_detail_page.html
@@ -2,9 +2,9 @@ <link rel="import" href="chrome://resources/cr_elements/icons.html"> <link rel="import" href="chrome://resources/cr_elements/network/cr_network_icon.html"> <link rel="import" href="chrome://resources/cr_elements/network/cr_onc_types.html"> +<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html"> <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_behavior.html"> <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_indicator.html"> -<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-collapse/iron-collapse.html"> @@ -43,7 +43,7 @@ paper-toggle-button, cr-policy-network-indicator, - cr-policy-pref-indicator { + cr-policy-indicator { -webkit-margin-start: var(--settings-control-spacing); } @@ -96,10 +96,10 @@ </div> <template is="dom-if" if="[[isPolicySource(networkProperties.Source))]]"> - <cr-policy-pref-indicator + <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource( networkProperties.Source)]]"> - </cr-policy-pref-indicator> + </cr-policy-indicator> </template> </div> <div id="buttonDiv" class="layout horizontal center">
diff --git a/chrome/browser/resources/settings/site_settings/zoom_levels.html b/chrome/browser/resources/settings/site_settings/zoom_levels.html index 2806ac8..2e2df3e0 100644 --- a/chrome/browser/resources/settings/site_settings/zoom_levels.html +++ b/chrome/browser/resources/settings/site_settings/zoom_levels.html
@@ -34,8 +34,8 @@ </div> <div class="zoom-label">[[item.zoom]]</div> <div> - <paper-icon-button icon="cr:clear" - on-tap="removeZoomLevel_"> + <paper-icon-button icon="cr:clear" on-tap="removeZoomLevel_" + title="$i18n{siteSettingsRemoveZoomLevel}"></paper-icon-button> </div> </div> </template>
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html index a2f49dd..113de7c1 100644 --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -121,7 +121,7 @@ <iron-icon icon="settings:input"></iron-icon> <div class="middle"> $i18n{siteSettingsJavascript} - <div class="secondary" is="javascriptSecondary"> + <div class="secondary" id="javascriptSecondary"> [[defaultSettingLabel_( default_.javascript, '$i18nPolymer{siteSettingsAllowed}', @@ -273,7 +273,8 @@ </div> </div> <button class="subpage-arrow" is="paper-icon-button-light" - aria-label="$i18n{siteSettingsMidiDevices}"></button> + aria-label="$i18n{siteSettingsMidiDevices}" + aria-describedby="midiDevicesSecondary"></button> </div> <div class="settings-box" category$="[[ContentSettingsTypes.ZOOM_LEVELS]]" data-route="SITE_SETTINGS_ZOOM_LEVELS"
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc index 23af395..5668db7b 100644 --- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc +++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc
@@ -8,96 +8,79 @@ #include "base/bind.h" #include "base/task_scheduler/post_task.h" -#include "chrome/common/chrome_utility_messages.h" #include "chrome/common/safe_browsing/zip_analyzer_results.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_thread.h" -#include "content/public/browser/child_process_data.h" -#include "content/public/browser/render_process_host.h" -#include "ipc/ipc_message_macros.h" -#include "ipc/ipc_platform_file.h" #include "ui/base/l10n/l10n_util.h" -using content::BrowserThread; - namespace safe_browsing { SandboxedDMGAnalyzer::SandboxedDMGAnalyzer(const base::FilePath& dmg_file, - const ResultsCallback& callback) - : file_path_(dmg_file), callback_(callback), callback_called_(false) { + const ResultCallback& callback) + : file_path_(dmg_file), callback_(callback) { + DCHECK(callback); } -SandboxedDMGAnalyzer::~SandboxedDMGAnalyzer() {} - void SandboxedDMGAnalyzer::Start() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + base::PostTaskWithTraits( - FROM_HERE, base::TaskTraits() - .MayBlock() - .WithPriority(base::TaskPriority::BACKGROUND) - .WithShutdownBehavior( - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), - base::Bind(&SandboxedDMGAnalyzer::OpenDMGFile, this)); + FROM_HERE, + base::TaskTraits() + .MayBlock() + .WithPriority(base::TaskPriority::BACKGROUND) + .WithShutdownBehavior( + base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), + base::Bind(&SandboxedDMGAnalyzer::PrepareFileToAnalyze, this)); } -void SandboxedDMGAnalyzer::OpenDMGFile() { - file_.Initialize(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ); - if (!file_.IsValid()) { - DLOG(ERROR) << "Could not open DMG file at path " << file_path_.value(); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&SandboxedDMGAnalyzer::OnAnalysisFinished, this, - zip_analyzer::Results())); +SandboxedDMGAnalyzer::~SandboxedDMGAnalyzer() = default; + +void SandboxedDMGAnalyzer::PrepareFileToAnalyze() { + base::File file(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ); + + if (!file.IsValid()) { + DLOG(ERROR) << "Could not open file: " << file_path_.value(); + ReportFileFailure(); return; } - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(&SandboxedDMGAnalyzer::StartAnalysis, - this)); + content::BrowserThread::PostTask( + content::BrowserThread::UI, FROM_HERE, + base::Bind(&SandboxedDMGAnalyzer::AnalyzeFile, this, + base::Passed(&file))); } -void SandboxedDMGAnalyzer::StartAnalysis() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); +void SandboxedDMGAnalyzer::ReportFileFailure() { + DCHECK(!utility_process_mojo_client_); - content::UtilityProcessHost* utility_process_host = - content::UtilityProcessHost::Create( - this, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); - - utility_process_host->SetName(l10n_util::GetStringUTF16( - IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME)); - utility_process_host->Send( - new ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection( - IPC::TakePlatformFileForTransit(std::move(file_)))); + content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, + base::Bind(callback_, Results())); } -void SandboxedDMGAnalyzer::OnProcessCrashed(int exit_code) { - OnAnalysisFinished(zip_analyzer::Results()); +void SandboxedDMGAnalyzer::AnalyzeFile(base::File file) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + DCHECK(!utility_process_mojo_client_); + + utility_process_mojo_client_ = base::MakeUnique< + content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>( + l10n_util::GetStringUTF16( + IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME)); + utility_process_mojo_client_->set_error_callback( + base::Bind(&SandboxedDMGAnalyzer::AnalyzeFileDone, this, Results())); + + utility_process_mojo_client_->Start(); + + utility_process_mojo_client_->service()->AnalyzeDmgFile( + std::move(file), + base::Bind(&SandboxedDMGAnalyzer::AnalyzeFileDone, this)); } -void SandboxedDMGAnalyzer::OnProcessLaunchFailed(int error_code) { - OnAnalysisFinished(zip_analyzer::Results()); -} +void SandboxedDMGAnalyzer::AnalyzeFileDone(const Results& results) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); -bool SandboxedDMGAnalyzer::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(SandboxedDMGAnalyzer, message) - IPC_MESSAGE_HANDLER( - ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished, - OnAnalysisFinished) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void SandboxedDMGAnalyzer::OnAnalysisFinished( - const zip_analyzer::Results& results) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (callback_called_) - return; - - callback_called_ = true; - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback_, results)); + utility_process_mojo_client_.reset(); + callback_.Run(results); } } // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h index f016699a..7eafd123 100644 --- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h +++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
@@ -9,54 +9,55 @@ #include "base/files/file.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "content/public/browser/utility_process_host.h" -#include "content/public/browser/utility_process_host_client.h" +#include "base/memory/ref_counted.h" +#include "chrome/common/safe_archive_analyzer.mojom.h" +#include "content/public/browser/utility_process_mojo_client.h" namespace safe_browsing { -namespace zip_analyzer { -struct Results; -} - -// This class is used to analyze DMG files in a sandboxed utility process for -// file download protection. This class must be created on the UI thread, and -// which is where the result callback will be invoked. -class SandboxedDMGAnalyzer : public content::UtilityProcessHostClient { +// This class is used to analyze DMG files in a sandboxed utility process +// for file download protection. This class lives on the UI thread, which +// is where the result callback will be invoked. +class SandboxedDMGAnalyzer + : public base::RefCountedThreadSafe<SandboxedDMGAnalyzer> { public: - // Callback that is invoked when the analysis results are ready. - using ResultsCallback = base::Callback<void(const zip_analyzer::Results&)>; + using Results = zip_analyzer::Results; + + using ResultCallback = base::Callback<void(const Results&)>; SandboxedDMGAnalyzer(const base::FilePath& dmg_file, - const ResultsCallback& callback); + const ResultCallback& callback); - // Begins the analysis. This must be called on the UI thread. + // Starts the analysis. Must be called on the UI thread. void Start(); private: - ~SandboxedDMGAnalyzer() override; + friend class base::RefCountedThreadSafe<SandboxedDMGAnalyzer>; - // Called on the blocking pool, this opens the DMG file, in preparation for - // sending the FD to the utility process. - void OpenDMGFile(); + ~SandboxedDMGAnalyzer(); - // Called on the IO thread, this starts the utility process. - void StartAnalysis(); + // Prepare the file for analysis. + void PrepareFileToAnalyze(); - // content::UtilityProcessHostClient: - void OnProcessCrashed(int exit_code) override; - void OnProcessLaunchFailed(int error_code) override; - bool OnMessageReceived(const IPC::Message& message) override; + // If file preparation failed, analysis has failed: report failure. + void ReportFileFailure(); - // Message handler to receive the results of the analysis. Invokes the - // |callback_|. - void OnAnalysisFinished(const zip_analyzer::Results& results); + // Starts the utility process and sends it a file analyze request. + void AnalyzeFile(base::File file); - const base::FilePath file_path_; // The path of the DMG file. - base::File file_; // The opened file handle for |file_path_|. + // The response containing the file analyze results. + void AnalyzeFileDone(const Results& results); - const ResultsCallback callback_; // Result callback. - bool callback_called_; // Whether |callback_| has already been invoked. + // The file path of the file to analyze. + const base::FilePath file_path_; + + // Utility client used to send analyze tasks to the utility process. + std::unique_ptr< + content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>> + utility_process_mojo_client_; + + // Callback invoked on the UI thread with the file analyze results. + const ResultCallback callback_; DISALLOW_COPY_AND_ASSIGN(SandboxedDMGAnalyzer); };
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc index 2d1689f..561fd236 100644 --- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc +++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc
@@ -47,15 +47,15 @@ } private: - // A helper class to store the results from the ResultsCallback and run - // another closure. + // A helper that provides a SandboxedDMGAnalyzer::ResultCallback that will + // store a copy of an analyzer's results and then run a closure. class ResultsGetter { public: ResultsGetter(const base::Closure& next_closure, zip_analyzer::Results* results) : next_closure_(next_closure), results_(results) {} - SandboxedDMGAnalyzer::ResultsCallback GetCallback() { + SandboxedDMGAnalyzer::ResultCallback GetCallback() { return base::Bind(&ResultsGetter::ResultsCallback, base::Unretained(this)); }
diff --git a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc index 6d3797e..91ecc54 100644 --- a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc +++ b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc
@@ -7,146 +7,96 @@ #include <utility> #include "base/bind.h" -#include "base/command_line.h" #include "base/files/file_util.h" -#include "base/location.h" -#include "base/logging.h" #include "base/task_scheduler/post_task.h" -#include "base/threading/sequenced_worker_pool.h" -#include "chrome/common/chrome_utility_messages.h" #include "chrome/common/safe_browsing/zip_analyzer_results.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_thread.h" -#include "content/public/browser/child_process_data.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/common/content_switches.h" -#include "ipc/ipc_message_macros.h" -#include "ipc/ipc_platform_file.h" #include "ui/base/l10n/l10n_util.h" -using content::BrowserThread; - namespace safe_browsing { -SandboxedZipAnalyzer::SandboxedZipAnalyzer( - const base::FilePath& zip_file, - const ResultCallback& result_callback) - : zip_file_name_(zip_file), - callback_(result_callback), - callback_called_(false) { +SandboxedZipAnalyzer::SandboxedZipAnalyzer(const base::FilePath& zip_file, + const ResultCallback& callback) + : file_path_(zip_file), callback_(callback) { + DCHECK(callback); } void SandboxedZipAnalyzer::Start() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - // Starting the analyzer will block on opening the zip file, so run this - // on a worker thread. The task does not need to block shutdown. + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + base::PostTaskWithTraits( - FROM_HERE, base::TaskTraits() - .MayBlock() - .WithPriority(base::TaskPriority::BACKGROUND) - .WithShutdownBehavior( - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), - base::Bind(&SandboxedZipAnalyzer::AnalyzeInSandbox, this)); + FROM_HERE, + base::TaskTraits() + .MayBlock() + .WithPriority(base::TaskPriority::BACKGROUND) + .WithShutdownBehavior( + base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), + base::Bind(&SandboxedZipAnalyzer::PrepareFileToAnalyze, this)); } -SandboxedZipAnalyzer::~SandboxedZipAnalyzer() { - // If we're using UtilityProcessHost, we may not be destroyed on - // the UI or IO thread. - CloseTemporaryFile(); -} +SandboxedZipAnalyzer::~SandboxedZipAnalyzer() = default; -void SandboxedZipAnalyzer::CloseTemporaryFile() { - if (!temp_file_.IsValid()) - return; - // Close the temporary file in the blocking pool since doing so will delete - // the file. - base::PostTaskWithTraits( - FROM_HERE, base::TaskTraits() - .MayBlock() - .WithPriority(base::TaskPriority::BACKGROUND) - .WithShutdownBehavior( - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), - base::Bind(&base::File::Close, - base::Owned(new base::File(std::move(temp_file_))))); -} +void SandboxedZipAnalyzer::PrepareFileToAnalyze() { + base::File file(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ); -void SandboxedZipAnalyzer::AnalyzeInSandbox() { - // This zip file will be closed on the IO thread once it has been handed - // off to the child process. - zip_file_.Initialize(zip_file_name_, - base::File::FLAG_OPEN | base::File::FLAG_READ); - if (!zip_file_.IsValid()) { - DVLOG(1) << "Could not open zip file: " << zip_file_name_.value(); - if (!BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&SandboxedZipAnalyzer::OnAnalyzeZipFileFinished, this, - zip_analyzer::Results()))) { - NOTREACHED(); - } + if (!file.IsValid()) { + DLOG(ERROR) << "Could not open file: " << file_path_.value(); + ReportFileFailure(); return; } - // This temp file will be closed in the blocking pool when results from the - // analyzer return. base::FilePath temp_path; + base::File temp_file; if (base::CreateTemporaryFile(&temp_path)) { - temp_file_.Initialize(temp_path, (base::File::FLAG_CREATE_ALWAYS | - base::File::FLAG_READ | - base::File::FLAG_WRITE | - base::File::FLAG_TEMPORARY | - base::File::FLAG_DELETE_ON_CLOSE)); + temp_file.Initialize( + temp_path, (base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_READ | + base::File::FLAG_WRITE | base::File::FLAG_TEMPORARY | + base::File::FLAG_DELETE_ON_CLOSE)); } - DVLOG_IF(1, !temp_file_.IsValid()) - << "Could not open temporary output file: " << temp_path.value(); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&SandboxedZipAnalyzer::StartProcessOnIOThread, this)); -} - -void SandboxedZipAnalyzer::OnProcessCrashed(int exit_code) { - OnAnalyzeZipFileFinished(zip_analyzer::Results()); -} - -void SandboxedZipAnalyzer::OnProcessLaunchFailed(int error_code) { - OnAnalyzeZipFileFinished(zip_analyzer::Results()); -} - -bool SandboxedZipAnalyzer::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(SandboxedZipAnalyzer, message) - IPC_MESSAGE_HANDLER( - ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished, - OnAnalyzeZipFileFinished) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void SandboxedZipAnalyzer::StartProcessOnIOThread() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - utility_process_host_ = - content::UtilityProcessHost::Create( - this, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO).get()) - ->AsWeakPtr(); - utility_process_host_->SetName(l10n_util::GetStringUTF16( - IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME)); - utility_process_host_->Send( - new ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection( - IPC::TakePlatformFileForTransit(std::move(zip_file_)), - IPC::GetPlatformFileForTransit(temp_file_.GetPlatformFile(), - false /* !close_source_handle */))); -} - -void SandboxedZipAnalyzer::OnAnalyzeZipFileFinished( - const zip_analyzer::Results& results) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (callback_called_) + if (!temp_file.IsValid()) { + DLOG(ERROR) << "Could not open temp file: " << temp_path.value(); + ReportFileFailure(); return; - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback_, results)); - callback_called_ = true; - CloseTemporaryFile(); + } + + content::BrowserThread::PostTask( + content::BrowserThread::UI, FROM_HERE, + base::Bind(&SandboxedZipAnalyzer::AnalyzeFile, this, base::Passed(&file), + base::Passed(&temp_file))); +} + +void SandboxedZipAnalyzer::ReportFileFailure() { + DCHECK(!utility_process_mojo_client_); + + content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, + base::Bind(callback_, Results())); +} + +void SandboxedZipAnalyzer::AnalyzeFile(base::File file, base::File temp_file) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + DCHECK(!utility_process_mojo_client_); + + utility_process_mojo_client_ = base::MakeUnique< + content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>( + l10n_util::GetStringUTF16( + IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME)); + utility_process_mojo_client_->set_error_callback( + base::Bind(&SandboxedZipAnalyzer::AnalyzeFileDone, this, Results())); + + utility_process_mojo_client_->Start(); + + utility_process_mojo_client_->service()->AnalyzeZipFile( + std::move(file), std::move(temp_file), + base::Bind(&SandboxedZipAnalyzer::AnalyzeFileDone, this)); +} + +void SandboxedZipAnalyzer::AnalyzeFileDone(const Results& results) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + utility_process_mojo_client_.reset(); + callback_.Run(results); } } // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h index b251e32..753f55d 100644 --- a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h +++ b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h
@@ -1,12 +1,6 @@ // Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Browser-side interface to analyze zip files for SafeBrowsing download -// protection. The actual zip decoding is performed in a sandboxed utility -// process. -// -// This class lives on the UI thread. #ifndef CHROME_BROWSER_SAFE_BROWSING_SANDBOXED_ZIP_ANALYZER_H_ #define CHROME_BROWSER_SAFE_BROWSING_SANDBOXED_ZIP_ANALYZER_H_ @@ -15,66 +9,55 @@ #include "base/files/file.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "content/public/browser/utility_process_host.h" -#include "content/public/browser/utility_process_host_client.h" - -namespace IPC { -class Message; -} +#include "base/memory/ref_counted.h" +#include "chrome/common/safe_archive_analyzer.mojom.h" +#include "content/public/browser/utility_process_mojo_client.h" namespace safe_browsing { -namespace zip_analyzer { -struct Results; -} -class SandboxedZipAnalyzer : public content::UtilityProcessHostClient { +// This class is used to analyze zip files in a sandboxed utility process +// for file download protection. This class lives on the UI thread, which +// is where the result callback will be invoked. +class SandboxedZipAnalyzer + : public base::RefCountedThreadSafe<SandboxedZipAnalyzer> { public: - // Callback that is invoked when the analysis results are ready. - typedef base::Callback<void(const zip_analyzer::Results&)> ResultCallback; + using Results = zip_analyzer::Results; + + using ResultCallback = base::Callback<void(const Results&)>; SandboxedZipAnalyzer(const base::FilePath& zip_file, - const ResultCallback& result_callback); + const ResultCallback& callback); - // Posts a task to start the zip analysis in the utility process. + // Starts the analysis. Must be called on the UI thread. void Start(); private: - ~SandboxedZipAnalyzer() override; + friend class base::RefCountedThreadSafe<SandboxedZipAnalyzer>; - // Posts a fire-and-forget task to close the temporary file in the blocking - // pool. - void CloseTemporaryFile(); + ~SandboxedZipAnalyzer(); - // Creates the sandboxed utility process and tells it to start analysis. - // Runs on a worker thread. - void AnalyzeInSandbox(); + // Prepare the file for analysis. + void PrepareFileToAnalyze(); - // content::UtilityProcessHostClient implementation. - // These notifications run on the IO thread. - void OnProcessCrashed(int exit_code) override; - void OnProcessLaunchFailed(int error_code) override; - bool OnMessageReceived(const IPC::Message& message) override; + // If file preparation failed, analysis has failed: report failure. + void ReportFileFailure(); - // Launches the utility process. Must run on the IO thread. - void StartProcessOnIOThread(); + // Starts the utility process and sends it a file analyze request. + void AnalyzeFile(base::File file, base::File temp); - // Notification from the utility process that the zip file has been analyzed, - // with the given results. Runs on the IO thread. - void OnAnalyzeZipFileFinished(const zip_analyzer::Results& results); + // The response containing the file analyze results. + void AnalyzeFileDone(const Results& results); - const base::FilePath zip_file_name_; - // Once we have opened the file, we store the handle so that we can use it - // once the utility process has launched. - base::File zip_file_; + // The file path of the file to analyze. + const base::FilePath file_path_; - // A temporary file to be used by the utility process for extracting files - // from the archive. - base::File temp_file_; - base::WeakPtr<content::UtilityProcessHost> utility_process_host_; + // Utility client used to send analyze tasks to the utility process. + std::unique_ptr< + content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>> + utility_process_mojo_client_; + + // Callback invoked on the UI thread with the file analyze results. const ResultCallback callback_; - // Initialized on the UI thread, but only accessed on the IO thread. - bool callback_called_; DISALLOW_COPY_AND_ASSIGN(SandboxedZipAnalyzer); };
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc index 42be30d..4bf81ee 100644 --- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -1651,6 +1651,8 @@ {"siteSettingsMidiDevicesBlock", IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES_BLOCK}, {"siteSettingsUsbDevices", IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES}, + {"siteSettingsRemoveZoomLevel", + IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL}, {"siteSettingsZoomLevels", IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS}, {"siteSettingsNoZoomedSites", IDS_SETTINGS_SITE_SETTINGS_NO_ZOOMED_SITES}, {"siteSettingsMaySaveCookies", IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES},
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn index c1f5fdcd..60f021b 100644 --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn
@@ -517,6 +517,10 @@ "safe_browsing/zip_analyzer_results.cc", "safe_browsing/zip_analyzer_results.h", ] + + # safe_archive_analyzer.mojom has a [Native] trait that depends on + # the protobuf headers in the sources list above. + allow_circular_includes_from = [ ":mojo_bindings" ] } } @@ -702,6 +706,10 @@ sources += [ "zip_file_creator.mojom" ] } + if (safe_browsing_mode == 1) { + sources += [ "safe_archive_analyzer.mojom" ] + } + public_deps = [ "//components/content_settings/core/common:mojo_bindings", "//mojo/common:common_custom_types",
diff --git a/chrome/common/chrome_utility_messages.h b/chrome/common/chrome_utility_messages.h index a267d4a0..c02fb84 100644 --- a/chrome/common/chrome_utility_messages.h +++ b/chrome/common/chrome_utility_messages.h
@@ -17,9 +17,6 @@ #include "base/values.h" #include "build/build_config.h" #include "ipc/ipc_message_macros.h" -#include "ipc/ipc_platform_file.h" -#include "ui/gfx/ipc/gfx_param_traits.h" -#include "ui/gfx/ipc/skia/gfx_skia_param_traits.h" #if defined(FULL_SAFE_BROWSING) #include "chrome/common/safe_browsing/ipc_protobuf_message_macros.h" @@ -140,22 +137,6 @@ // Utility process messages: // These are messages from the browser to the utility process. -#if defined(FULL_SAFE_BROWSING) -// Tells the utility process to analyze a zip file for malicious download -// protection, providing a file that can be used temporarily to analyze binaries -// contained therein. -IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection, - IPC::PlatformFileForTransit /* zip_file */, - IPC::PlatformFileForTransit /* temp_file */) - -#if defined(OS_MACOSX) -// Tells the utility process to analyze a DMG file for malicious download -// protection. -IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection, - IPC::PlatformFileForTransit /* dmg_file */) -#endif // defined(OS_MACOSX) -#endif // defined(FULL_SAFE_BROWSING) - #if defined(OS_WIN) // Instructs the utility process to invoke GetOpenFileName. |owner| is the // parent of the modal dialog, |flags| are OFN_* flags. |filter| constrains the @@ -185,20 +166,6 @@ IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackWebResource_Failed, std::string /* error_message, if any */) -#if defined(FULL_SAFE_BROWSING) -// Reply when a zip file has been analyzed for malicious download protection. -IPC_MESSAGE_CONTROL1( - ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished, - safe_browsing::zip_analyzer::Results) - -#if defined(OS_MACOSX) -// Reply when a DMG file has been analyzed for malicious download protection. -IPC_MESSAGE_CONTROL1( - ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished, - safe_browsing::zip_analyzer::Results) -#endif // defined(OS_MACOSX) -#endif // defined(FULL_SAFE_BROWSING) - #if defined(OS_WIN) IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_GetOpenFileName_Failed) IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetOpenFileName_Result,
diff --git a/chrome/common/safe_archive_analyzer.mojom b/chrome/common/safe_archive_analyzer.mojom new file mode 100644 index 0000000..4a08ec204 --- /dev/null +++ b/chrome/common/safe_archive_analyzer.mojom
@@ -0,0 +1,28 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Safe archive file analyzer provided by the utility process and exposed +// by mojo policy control to the chrome browser process when build flag +// FULL_SAFE_BROWSING is enabled. + +module chrome.mojom; + +import "mojo/common/file.mojom"; + +interface SafeArchiveAnalyzer { + // Build flag FULL_SAFE_BROWSING: Analyze the |zip_file| for malicious + // download protection, given a |temporary_file| used to extract files + // from the |zip_file| archive. + AnalyzeZipFile(mojo.common.mojom.File zip_file, + mojo.common.mojom.File temporary_file) + => (SafeArchiveAnalyzerResults results); + + // Build flag FULL_SAFE_BROWSING, on OS_MACOSX: Analyze the |dmg_file| + // for malicious download protection. + AnalyzeDmgFile(mojo.common.mojom.File dmg_file) + => (SafeArchiveAnalyzerResults results); +}; + +[Native] +struct SafeArchiveAnalyzerResults;
diff --git a/chrome/common/safe_archive_analyzer.typemap b/chrome/common/safe_archive_analyzer.typemap new file mode 100644 index 0000000..88d2bf4 --- /dev/null +++ b/chrome/common/safe_archive_analyzer.typemap
@@ -0,0 +1,16 @@ +# 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. + +mojom = "//chrome/common/safe_archive_analyzer.mojom" + +public_headers = [ "//chrome/common/safe_browsing/zip_analyzer.h" ] + +traits_headers = [ "//chrome/common/chrome_utility_messages.h" ] + +deps = [ + "//chrome/common/safe_browsing:proto", + "//components/safe_browsing:csd_proto", +] + +type_mappings = [ "chrome.mojom.SafeArchiveAnalyzerResults=safe_browsing::zip_analyzer::Results" ]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 99b55d3..8eab2de1 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3627,7 +3627,6 @@ "../browser/permissions/permission_request_manager_unittest.cc", "../browser/platform_util_unittest.cc", "../browser/policy/policy_path_parser_unittest.cc", - "../browser/power_usage_monitor/power_usage_monitor_unittest.cc", "../browser/process_singleton_posix_unittest.cc", "../browser/profile_resetter/profile_resetter_unittest.cc", "../browser/profile_resetter/triggered_profile_resetter_win_unittest.cc",
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js index 3956572..30d7bf8 100644 --- a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js +++ b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
@@ -127,6 +127,7 @@ /** @override */ extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([ + 'settings_private_test_constants.js', 'cr_slider_tests.js', ]), }; @@ -183,6 +184,30 @@ * @constructor * @extends {CrElementsBrowserTest} */ +function CrElementsPolicyIndicatorTest() {} + +CrElementsPolicyIndicatorTest.prototype = { + __proto__: CrElementsBrowserTest.prototype, + + /** @override */ + browsePreload: + 'chrome://resources/cr_elements/policy/cr_policy_indicator.html', + + /** @override */ + extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([ + 'cr_policy_strings.js', + 'cr_policy_indicator_tests.js', + ]), +}; + +TEST_F('CrElementsPolicyIndicatorTest', 'All', function() { + mocha.run(); +}); + +/** + * @constructor + * @extends {CrElementsBrowserTest} + */ function CrElementsPolicyIndicatorBehaviorTest() {} CrElementsPolicyIndicatorBehaviorTest.prototype = { @@ -218,6 +243,7 @@ /** @override */ extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([ + 'settings_private_test_constants.js', 'cr_policy_strings.js', 'cr_policy_pref_indicator_tests.js', ]),
diff --git a/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js b/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js new file mode 100644 index 0000000..fbac4f53 --- /dev/null +++ b/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js
@@ -0,0 +1,44 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** @fileoverview Suite of tests for cr-policy-indicator. */ +suite('CrPolicyIndicator', function() { + /** @type {!CrPolicyIndicatorElement|undefined} */ + var indicator; + + /** @type {!PaperTooltipElement|undefined} */ + var tooltip; + + setup(function() { + PolymerTest.clearBody(); + + indicator = document.createElement('cr-policy-indicator'); + document.body.appendChild(indicator); + tooltip = indicator.$$('paper-tooltip'); + }); + + teardown(function() { + PolymerTest.clearBody(); // crbug.com/680169 + }); + + test('none', function() { + assertTrue(indicator.$.indicator.hidden); + }); + + test('indicator', function() { + indicator.indicatorType = CrPolicyIndicatorType.USER_POLICY; + + assertFalse(indicator.$.indicator.hidden); + assertEquals('cr20:domain', indicator.$.indicator.icon); + assertEquals('policy', tooltip.textContent.trim()); + + if (cr.isChromeOS) { + indicator.indicatorType = CrPolicyIndicatorType.OWNER; + indicator.indicatorSourceName = 'foo@example.com'; + + assertEquals('cr:person', indicator.$.indicator.icon); + assertEquals('owner: foo@example.com', tooltip.textContent.trim()); + } + }); +});
diff --git a/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js index 3762b6ad..b6a9dbb 100644 --- a/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js +++ b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js
@@ -10,38 +10,6 @@ /** @type {!PaperTooltipElement|undefined} */ var tooltip; - suiteSetup(function() { - // Define chrome.settingsPrivate enums, normally provided by chrome WebUI. - // NOTE: These need to be kept in sync with settings_private.idl. - - chrome.settingsPrivate = chrome.settingsPrivate || {}; - - /** @enum {string} */ - chrome.settingsPrivate.ControlledBy = { - DEVICE_POLICY: 'DEVICE_POLICY', - USER_POLICY: 'USER_POLICY', - OWNER: 'OWNER', - PRIMARY_USER: 'PRIMARY_USER', - EXTENSION: 'EXTENSION', - }; - - /** @enum {string} */ - chrome.settingsPrivate.Enforcement = { - ENFORCED: 'ENFORCED', - RECOMMENDED: 'RECOMMENDED', - }; - - /** @enum {string} */ - chrome.settingsPrivate.PrefType = { - BOOLEAN: 'BOOLEAN', - NUMBER: 'NUMBER', - STRING: 'STRING', - URL: 'URL', - LIST: 'LIST', - DICTIONARY: 'DICTIONARY', - }; - }); - setup(function() { PolymerTest.clearBody();
diff --git a/chrome/test/data/webui/cr_elements/cr_slider_tests.js b/chrome/test/data/webui/cr_elements/cr_slider_tests.js index 1df3a18..66ae8ce 100644 --- a/chrome/test/data/webui/cr_elements/cr_slider_tests.js +++ b/chrome/test/data/webui/cr_elements/cr_slider_tests.js
@@ -20,55 +20,75 @@ setup(function() { PolymerTest.clearBody(); slider = document.createElement('cr-slider'); + slider.pref = { + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 16, + }; document.body.appendChild(slider); paperSlider = slider.$$('paper-slider'); }); + test('enforce value', function() { + // Test that the indicator is not present until after the pref is + // enforced. + indicator = slider.$$('cr-policy-pref-indicator'); + assertFalse(!!indicator); + slider.pref = { + controlledBy: chrome.settingsPrivate.ControlledBy.DEVICE_POLICY, + enforcement: chrome.settingsPrivate.Enforcement.ENFORCED, + type: chrome.settingsPrivate.PrefType.NUMBER, + value: 16, + }; + Polymer.dom.flush(); + indicator = slider.$$('cr-policy-pref-indicator'); + assertTrue(!!indicator); + }); + test('set value', function() { slider.tickValues = tickValues; - slider.value = 16; + slider.set('pref.value', 16); expectEquals(6, paperSlider.max); expectEquals(3, paperSlider.value); expectEquals(3, paperSlider.immediateValue); // cr-slider only supports snapping to a range of tick values. Setting // to an in-between value should snap to an indexed value. - slider.value = 70; + slider.set('pref.value', 70); expectEquals(5, paperSlider.value); expectEquals(5, paperSlider.immediateValue); - expectEquals(64, slider.value); + expectEquals(64, slider.pref.value); // Setting the value out-of-range should clamp the slider. - slider.value = -100; + slider.set('pref.value', -100); expectEquals(0, paperSlider.value); expectEquals(0, paperSlider.immediateValue); - expectEquals(2, slider.value); + expectEquals(2, slider.pref.value); }); test('move slider', function() { slider.tickValues = tickValues; - slider.value = 30; + slider.set('pref.value', 30); expectEquals(4, paperSlider.value); MockInteractions.pressAndReleaseKeyOn( paperSlider, 39 /* right */); expectEquals(5, paperSlider.value); - expectEquals(64, slider.value); + expectEquals(64, slider.pref.value); MockInteractions.pressAndReleaseKeyOn( paperSlider, 39 /* right */); expectEquals(6, paperSlider.value); - expectEquals(128, slider.value); + expectEquals(128, slider.pref.value); MockInteractions.pressAndReleaseKeyOn( paperSlider, 39 /* right */); expectEquals(6, paperSlider.value); - expectEquals(128, slider.value); + expectEquals(128, slider.pref.value); MockInteractions.pressAndReleaseKeyOn( paperSlider, 37 /* left */); expectEquals(5, paperSlider.value); - expectEquals(64, slider.value); + expectEquals(64, slider.pref.value); }); test('findNearestIndex_', function() {
diff --git a/chrome/test/data/webui/cr_elements/settings_private_test_constants.js b/chrome/test/data/webui/cr_elements/settings_private_test_constants.js new file mode 100644 index 0000000..cb281b1 --- /dev/null +++ b/chrome/test/data/webui/cr_elements/settings_private_test_constants.js
@@ -0,0 +1,33 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Define chrome.settingsPrivate enums, normally provided by chrome WebUI. +// NOTE: These need to be kept in sync with settings_private.idl. + +chrome.settingsPrivate = chrome.settingsPrivate || {}; + +/** @enum {string} */ +chrome.settingsPrivate.ControlledBy = { + DEVICE_POLICY: 'DEVICE_POLICY', + USER_POLICY: 'USER_POLICY', + OWNER: 'OWNER', + PRIMARY_USER: 'PRIMARY_USER', + EXTENSION: 'EXTENSION', +}; + +/** @enum {string} */ +chrome.settingsPrivate.Enforcement = { + ENFORCED: 'ENFORCED', + RECOMMENDED: 'RECOMMENDED', +}; + +/** @enum {string} */ +chrome.settingsPrivate.PrefType = { + BOOLEAN: 'BOOLEAN', + NUMBER: 'NUMBER', + STRING: 'STRING', + URL: 'URL', + LIST: 'LIST', + DICTIONARY: 'DICTIONARY', +};
diff --git a/chrome/test/data/webui/settings/date_time_page_tests.js b/chrome/test/data/webui/settings/date_time_page_tests.js index 9357a05..7a48d13 100644 --- a/chrome/test/data/webui/settings/date_time_page_tests.js +++ b/chrome/test/data/webui/settings/date_time_page_tests.js
@@ -105,7 +105,7 @@ suiteTeardown(function() { // TODO(michaelpg): Removes the element before exiting, because the - // <paper-tooltip> in <cr-policy-pref-indicator> somehow causes warnings + // <paper-tooltip> in <cr-policy-indicator> somehow causes warnings // and/or script errors in axs_testing.js. PolymerTest.clearBody(); }); @@ -117,7 +117,7 @@ function verifyPolicy(policy) { Polymer.dom.flush(); - var indicator = dateTime.$$('cr-policy-pref-indicator'); + var indicator = dateTime.$$('cr-policy-indicator'); if (policy) { assertTrue(!!indicator);
diff --git a/chrome/test/data/webui/settings/device_page_tests.js b/chrome/test/data/webui/settings/device_page_tests.js index 9725b23..e95b9e1 100644 --- a/chrome/test/data/webui/settings/device_page_tests.js +++ b/chrome/test/data/webui/settings/device_page_tests.js
@@ -314,12 +314,12 @@ expectFalse(pointersPage.$$('#mouse settings-toggle-button').checked); var slider = assert(pointersPage.$$('#mouse cr-slider')); - expectEquals(4, slider.value); + expectEquals(4, slider.pref.value); MockInteractions.pressAndReleaseKeyOn(slider.$.slider, 37 /* left */); expectEquals(3, devicePage.prefs.settings.mouse.sensitivity2.value); pointersPage.set('prefs.settings.mouse.sensitivity2.value', 5); - expectEquals(5, slider.value); + expectEquals(5, slider.pref.value); }); test('touchpad', function() { @@ -329,13 +329,12 @@ expectFalse(pointersPage.$$('#touchpad #enableTapDragging').checked); var slider = assert(pointersPage.$$('#touchpad cr-slider')); - expectEquals(3, slider.value); - MockInteractions.pressAndReleaseKeyOn( - slider.$.slider, 39 /* right */); + expectEquals(3, slider.pref.value); + MockInteractions.pressAndReleaseKeyOn(slider.$.slider, 39 /* right */); expectEquals(4, devicePage.prefs.settings.touchpad.sensitivity2.value); pointersPage.set('prefs.settings.touchpad.sensitivity2.value', 2); - expectEquals(2, slider.value); + expectEquals(2, slider.pref.value); }); test('link doesn\'t activate control', function(done) { @@ -401,37 +400,34 @@ assertTrue(!!collapse); expectTrue(collapse.opened); - expectEquals(500, keyboardPage.$.delaySlider.value); - expectEquals(500, keyboardPage.$.repeatRateSlider.value); + expectEquals(500, keyboardPage.$.delaySlider.pref.value); + expectEquals(500, keyboardPage.$.repeatRateSlider.pref.value); // Test interaction with the cr-slider's underlying paper-slider. MockInteractions.pressAndReleaseKeyOn( keyboardPage.$.delaySlider.$.slider, 37 /* left */); MockInteractions.pressAndReleaseKeyOn( keyboardPage.$.repeatRateSlider.$.slider, 39 /* right */); - expectEquals(1000, - devicePage.prefs.settings.language.xkb_auto_repeat_delay_r2.value); - expectEquals( - 300, - devicePage.prefs.settings.language.xkb_auto_repeat_interval_r2.value - ); + var language = devicePage.prefs.settings.language; + expectEquals(1000, language.xkb_auto_repeat_delay_r2.value); + expectEquals(300, language.xkb_auto_repeat_interval_r2.value); // Test sliders change when prefs change. devicePage.set( 'prefs.settings.language.xkb_auto_repeat_delay_r2.value', 1500); - expectEquals(1500, keyboardPage.$.delaySlider.value); + expectEquals(1500, keyboardPage.$.delaySlider.pref.value); devicePage.set( 'prefs.settings.language.xkb_auto_repeat_interval_r2.value', 2000); - expectEquals(2000, keyboardPage.$.repeatRateSlider.value); + expectEquals(2000, keyboardPage.$.repeatRateSlider.pref.value); // Test sliders round to nearest value when prefs change. devicePage.set( 'prefs.settings.language.xkb_auto_repeat_delay_r2.value', 600); - expectEquals(500, keyboardPage.$.delaySlider.value); + expectEquals(500, keyboardPage.$.delaySlider.pref.value); devicePage.set( 'prefs.settings.language.xkb_auto_repeat_interval_r2.value', 45); - expectEquals(50, keyboardPage.$.repeatRateSlider.value); + expectEquals(50, keyboardPage.$.repeatRateSlider.pref.value); devicePage.set( 'prefs.settings.language.xkb_auto_repeat_enabled_r2.value',
diff --git a/chrome/typemaps.gni b/chrome/typemaps.gni index 9a20fe5..b26165c 100644 --- a/chrome/typemaps.gni +++ b/chrome/typemaps.gni
@@ -2,4 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -typemaps = [ "//chrome/common/instant.typemap" ] +typemaps = [ + "//chrome/common/safe_archive_analyzer.typemap", + "//chrome/common/instant.typemap", +]
diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc index 1e01333..6a77ced0 100644 --- a/chrome/utility/chrome_content_utility_client.cc +++ b/chrome/utility/chrome_content_utility_client.cc
@@ -13,11 +13,7 @@ #include "base/memory/ptr_util.h" #include "base/memory/ref_counted.h" #include "base/time/time.h" -#include "build/build_config.h" -#include "chrome/common/chrome_utility_messages.h" #include "chrome/common/file_patcher.mojom.h" -#include "chrome/common/safe_browsing/zip_analyzer.h" -#include "chrome/common/safe_browsing/zip_analyzer_results.h" #include "chrome/utility/utility_message_handler.h" #include "components/safe_json/utility/safe_json_parser_mojo_impl.h" #include "content/public/child/image_decoder_utils.h" @@ -27,14 +23,12 @@ #include "courgette/courgette.h" #include "courgette/third_party/bsdiff/bsdiff.h" #include "extensions/features/features.h" -#include "ipc/ipc_channel.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "printing/features/features.h" #include "services/image_decoder/image_decoder_service.h" #include "services/image_decoder/public/interfaces/constants.mojom.h" #include "services/service_manager/public/cpp/interface_registry.h" #include "third_party/zlib/google/zip.h" -#include "ui/gfx/geometry/size.h" #if !defined(OS_ANDROID) #include "chrome/common/resource_usage_reporter.mojom.h" @@ -62,9 +56,14 @@ #include "chrome/utility/printing_handler.h" #endif -#if defined(OS_MACOSX) && defined(FULL_SAFE_BROWSING) +#if defined(FULL_SAFE_BROWSING) +#include "chrome/common/safe_archive_analyzer.mojom.h" +#include "chrome/common/safe_browsing/zip_analyzer.h" +#include "chrome/common/safe_browsing/zip_analyzer_results.h" +#if defined(OS_MACOSX) #include "chrome/utility/safe_browsing/mac/dmg_analyzer.h" #endif +#endif namespace { @@ -135,6 +134,47 @@ }; #endif // defined(OS_CHROMEOS) +#if defined(FULL_SAFE_BROWSING) +class SafeArchiveAnalyzerImpl : public chrome::mojom::SafeArchiveAnalyzer { + public: + SafeArchiveAnalyzerImpl() = default; + ~SafeArchiveAnalyzerImpl() override = default; + + static void Create(chrome::mojom::SafeArchiveAnalyzerRequest request) { + mojo::MakeStrongBinding(base::MakeUnique<SafeArchiveAnalyzerImpl>(), + std::move(request)); + } + + private: + // chrome::mojom::SafeArchiveAnalyzer: + void AnalyzeZipFile(base::File zip_file, + base::File temporary_file, + const AnalyzeZipFileCallback& callback) override { + DCHECK(temporary_file.IsValid()); + DCHECK(zip_file.IsValid()); + + safe_browsing::zip_analyzer::Results results; + safe_browsing::zip_analyzer::AnalyzeZipFile( + std::move(zip_file), std::move(temporary_file), &results); + callback.Run(results); + } + + void AnalyzeDmgFile(base::File dmg_file, + const AnalyzeDmgFileCallback& callback) override { +#if defined(OS_MACOSX) + DCHECK(dmg_file.IsValid()); + safe_browsing::zip_analyzer::Results results; + safe_browsing::dmg::AnalyzeDMGFile(std::move(dmg_file), &results); + callback.Run(results); +#else + NOTREACHED(); +#endif + } + + DISALLOW_COPY_AND_ASSIGN(SafeArchiveAnalyzerImpl); +}; +#endif // defined(FULL_SAFE_BROWSING) + #if !defined(OS_ANDROID) void CreateProxyResolverFactory( net::interfaces::ProxyResolverFactoryRequest request) { @@ -210,22 +250,6 @@ if (utility_process_running_elevated_) return false; - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(ChromeContentUtilityClient, message) -#if defined(FULL_SAFE_BROWSING) - IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection, - OnAnalyzeZipFileForDownloadProtection) -#if defined(OS_MACOSX) - IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection, - OnAnalyzeDmgFileForDownloadProtection) -#endif // defined(OS_MACOSX) -#endif // defined(FULL_SAFE_BROWSING) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - - if (handled) - return true; - for (auto* handler : handlers_) { if (handler->OnMessageReceived(message)) return true; @@ -260,6 +284,9 @@ #if defined(OS_CHROMEOS) registry->AddInterface(base::Bind(&ZipFileCreatorImpl::Create)); #endif +#if defined(FULL_SAFE_BROWSING) + registry->AddInterface(base::Bind(&SafeArchiveAnalyzerImpl::Create)); +#endif } void ChromeContentUtilityClient::RegisterServices(StaticServiceMap* services) { @@ -275,32 +302,3 @@ extensions::ExtensionsHandler::PreSandboxStartup(); #endif } - -#if defined(FULL_SAFE_BROWSING) -void ChromeContentUtilityClient::OnAnalyzeZipFileForDownloadProtection( - const IPC::PlatformFileForTransit& zip_file, - const IPC::PlatformFileForTransit& temp_file) { - safe_browsing::zip_analyzer::Results results; - safe_browsing::zip_analyzer::AnalyzeZipFile( - IPC::PlatformFileForTransitToFile(zip_file), - IPC::PlatformFileForTransitToFile(temp_file), &results); - content::UtilityThread::Get()->Send( - new ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished( - results)); - content::UtilityThread::Get()->ReleaseProcessIfNeeded(); -} - -#if defined(OS_MACOSX) -void ChromeContentUtilityClient::OnAnalyzeDmgFileForDownloadProtection( - const IPC::PlatformFileForTransit& dmg_file) { - safe_browsing::zip_analyzer::Results results; - safe_browsing::dmg::AnalyzeDMGFile( - IPC::PlatformFileForTransitToFile(dmg_file), &results); - content::UtilityThread::Get()->Send( - new ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished( - results)); - content::UtilityThread::Get()->ReleaseProcessIfNeeded(); -} -#endif // defined(OS_MACOSX) - -#endif // defined(FULL_SAFE_BROWSING)
diff --git a/chrome/utility/chrome_content_utility_client.h b/chrome/utility/chrome_content_utility_client.h index 5aa5f045..01993c5f 100644 --- a/chrome/utility/chrome_content_utility_client.h +++ b/chrome/utility/chrome_content_utility_client.h
@@ -5,12 +5,9 @@ #ifndef CHROME_UTILITY_CHROME_CONTENT_UTILITY_CLIENT_H_ #define CHROME_UTILITY_CHROME_CONTENT_UTILITY_CLIENT_H_ -#include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/scoped_vector.h" -#include "build/build_config.h" #include "content/public/utility/content_utility_client.h" -#include "ipc/ipc_platform_file.h" class UtilityMessageHandler; @@ -30,20 +27,10 @@ private: // IPC message handlers. - void OnStartupPing(); -#if defined(FULL_SAFE_BROWSING) - void OnAnalyzeZipFileForDownloadProtection( - const IPC::PlatformFileForTransit& zip_file, - const IPC::PlatformFileForTransit& temp_file); -#if defined(OS_MACOSX) - void OnAnalyzeDmgFileForDownloadProtection( - const IPC::PlatformFileForTransit& dmg_file); -#endif // defined(OS_MACOSX) -#endif // defined(FULL_SAFE_BROWSING) - typedef ScopedVector<UtilityMessageHandler> Handlers; Handlers handlers_; + // True if the utility process runs with elevated privileges. bool utility_process_running_elevated_; DISALLOW_COPY_AND_ASSIGN(ChromeContentUtilityClient);
diff --git a/chromeos/components/tether/BUILD.gn b/chromeos/components/tether/BUILD.gn index 33ddb7c..b1143db 100644 --- a/chromeos/components/tether/BUILD.gn +++ b/chromeos/components/tether/BUILD.gn
@@ -32,6 +32,8 @@ "initializer.h", "keep_alive_operation.cc", "keep_alive_operation.h", + "keep_alive_scheduler.cc", + "keep_alive_scheduler.h", "local_device_data_provider.cc", "local_device_data_provider.h", "message_transfer_operation.cc", @@ -64,6 +66,8 @@ testonly = true sources = [ + "fake_active_host.cc", + "fake_active_host.h", "fake_ble_connection_manager.cc", "fake_ble_connection_manager.h", "fake_tether_host_fetcher.cc", @@ -80,6 +84,7 @@ "//base", "//components/cryptauth", "//testing/gmock", + "//testing/gtest", ] } @@ -98,6 +103,7 @@ "host_scanner_operation_unittest.cc", "host_scanner_unittest.cc", "keep_alive_operation_unittest.cc", + "keep_alive_scheduler_unittest.cc", "local_device_data_provider_unittest.cc", "message_transfer_operation_unittest.cc", "message_wrapper_unittest.cc",
diff --git a/chromeos/components/tether/active_host.cc b/chromeos/components/tether/active_host.cc index ddfa0fe8..2e73898 100644 --- a/chromeos/components/tether/active_host.cc +++ b/chromeos/components/tether/active_host.cc
@@ -5,6 +5,7 @@ #include "chromeos/components/tether/active_host.h" #include "base/bind.h" +#include "base/memory/ptr_util.h" #include "base/values.h" #include "chromeos/components/tether/pref_names.h" #include "chromeos/components/tether/tether_host_fetcher.h" @@ -80,22 +81,43 @@ pref_service_->GetInteger(prefs::kActiveHostStatus)); } -const std::string ActiveHost::GetActiveHostDeviceId() const { +std::string ActiveHost::GetActiveHostDeviceId() const { return pref_service_->GetString(prefs::kActiveHostDeviceId); } -const std::string ActiveHost::GetWifiNetworkId() const { +std::string ActiveHost::GetWifiNetworkId() const { return pref_service_->GetString(prefs::kWifiNetworkId); } +void ActiveHost::AddObserver(Observer* observer) { + observer_list_.AddObserver(observer); +} + +void ActiveHost::RemoveObserver(Observer* observer) { + observer_list_.RemoveObserver(observer); +} + void ActiveHost::SetActiveHost(ActiveHostStatus active_host_status, const std::string& active_host_device_id, const std::string& wifi_network_id) { + bool status_changed = GetActiveHostStatus() != active_host_status; + bool device_changed = GetActiveHostDeviceId() != active_host_device_id; + bool network_id_changed = GetWifiNetworkId() != wifi_network_id; + + if (!status_changed && !device_changed && !network_id_changed) { + // If nothing has changed, return early. + return; + } + pref_service_->Set(prefs::kActiveHostStatus, base::Value(static_cast<int>(active_host_status))); pref_service_->Set(prefs::kActiveHostDeviceId, base::Value(active_host_device_id)); pref_service_->Set(prefs::kWifiNetworkId, base::Value(wifi_network_id)); + + // Now, send an active host changed update. + GetActiveHost(base::Bind(&ActiveHost::SendActiveHostChangedUpdate, + weak_ptr_factory_.GetWeakPtr())); } void ActiveHost::OnTetherHostFetched( @@ -134,6 +156,19 @@ std::move(remote_device), GetWifiNetworkId()); } +void ActiveHost::SendActiveHostChangedUpdate( + ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host, + const std::string& wifi_network_id) { + for (auto& observer : observer_list_) { + std::unique_ptr<cryptauth::RemoteDevice> unique_remote_device = + active_host ? base::MakeUnique<cryptauth::RemoteDevice>(*active_host) + : nullptr; + observer.OnActiveHostChanged( + active_host_status, std::move(unique_remote_device), wifi_network_id); + } +} + } // namespace tether } // namespace chromeos
diff --git a/chromeos/components/tether/active_host.h b/chromeos/components/tether/active_host.h index 3e8e8cb..5ec79941 100644 --- a/chromeos/components/tether/active_host.h +++ b/chromeos/components/tether/active_host.h
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "base/observer_list.h" class PrefRegistrySimple; class PrefService; @@ -36,6 +37,14 @@ CONNECTED = 2 }; + class Observer { + public: + virtual void OnActiveHostChanged( + ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host_device, + const std::string& wifi_network_id) = 0; + }; + ActiveHost(TetherHostFetcher* tether_host_fetcher, PrefService* pref_service); virtual ~ActiveHost(); @@ -44,18 +53,19 @@ // Sets the active host to be no host at all (i.e., the local device is not // connecting or connected to a tether host). - void SetActiveHostDisconnected(); + virtual void SetActiveHostDisconnected(); // Sets the active host to be the device with ID |active_host_device_id| and // records that the there is an active attempt to connect to that host (i.e., // the host is not yet connected but it is in the process of connecting). - void SetActiveHostConnecting(const std::string& active_host_device_id); + virtual void SetActiveHostConnecting( + const std::string& active_host_device_id); // Sets the active host to be the device with ID |active_host_device_id| and // that the local device is connected to that device on the mobile hotspot // with Wi-Fi network ID |wifi_network_id|. - void SetActiveHostConnected(const std::string& active_host_device_id, - const std::string& wifi_network_id); + virtual void SetActiveHostConnected(const std::string& active_host_device_id, + const std::string& wifi_network_id); // Gets the active host and associated metadata asynchronously. If // the active host status is... @@ -67,12 +77,21 @@ base::Callback<void(ActiveHostStatus active_host_status, std::unique_ptr<cryptauth::RemoteDevice> active_host, const std::string& wifi_network_id)>; - void GetActiveHost(const ActiveHostCallback& active_host_callback); + virtual void GetActiveHost(const ActiveHostCallback& active_host_callback); // Synchronous getter methods which do not return a full RemoteDevice object. - ActiveHostStatus GetActiveHostStatus() const; - const std::string GetActiveHostDeviceId() const; - const std::string GetWifiNetworkId() const; + virtual ActiveHostStatus GetActiveHostStatus() const; + virtual std::string GetActiveHostDeviceId() const; + virtual std::string GetWifiNetworkId() const; + + void AddObserver(Observer* observer); + void RemoveObserver(Observer* observer); + + protected: + void SendActiveHostChangedUpdate( + ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host, + const std::string& wifi_network_id); private: void SetActiveHost(ActiveHostStatus active_host_status, @@ -86,6 +105,8 @@ TetherHostFetcher* tether_host_fetcher_; PrefService* pref_service_; + base::ObserverList<Observer> observer_list_; + base::WeakPtrFactory<ActiveHost> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(ActiveHost);
diff --git a/chromeos/components/tether/active_host_unittest.cc b/chromeos/components/tether/active_host_unittest.cc index c2981ff2..6f28cf2 100644 --- a/chromeos/components/tether/active_host_unittest.cc +++ b/chromeos/components/tether/active_host_unittest.cc
@@ -40,6 +40,24 @@ } }; +class TestObserver : public ActiveHost::Observer { + public: + void OnActiveHostChanged( + ActiveHost::ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host_device, + const std::string& wifi_network_id) override { + host_changed_updates_.push_back(GetActiveHostResult{ + active_host_status, std::move(active_host_device), wifi_network_id}); + } + + std::vector<GetActiveHostResult>& host_changed_updates() { + return host_changed_updates_; + } + + private: + std::vector<GetActiveHostResult> host_changed_updates_; +}; + } // namespace class ActiveHostTest : public testing::Test { @@ -56,6 +74,9 @@ ActiveHost::RegisterPrefs(test_pref_service_->registry()); active_host_ = base::MakeUnique<ActiveHost>(fake_tether_host_fetcher_.get(), test_pref_service_.get()); + + test_observer_ = base::WrapUnique(new TestObserver); + active_host_->AddObserver(test_observer_.get()); } void OnActiveHostFetched(ActiveHost::ActiveHostStatus active_host_status, @@ -84,6 +105,7 @@ std::unique_ptr<TestingPrefServiceSimple> test_pref_service_; std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_; + std::unique_ptr<TestObserver> test_observer_; std::vector<GetActiveHostResult> get_active_host_results_; @@ -172,6 +194,48 @@ get_active_host_results_[0]); } +TEST_F(ActiveHostTest, TestObserverCalls) { + // Start as DISCONNECTED. + EXPECT_FALSE(test_observer_->host_changed_updates().size()); + + // Go to DISCONNECTED again. This should not cause an observer callback to be + // invoked. + active_host_->SetActiveHostDisconnected(); + fake_tether_host_fetcher_->InvokePendingCallbacks(); + EXPECT_FALSE(test_observer_->host_changed_updates().size()); + + // Transition to CONNECTING. + active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId()); + fake_tether_host_fetcher_->InvokePendingCallbacks(); + EXPECT_EQ(1u, test_observer_->host_changed_updates().size()); + EXPECT_EQ( + (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTING, + std::shared_ptr<cryptauth::RemoteDevice>( + new cryptauth::RemoteDevice(test_devices_[0])), + ""}), + test_observer_->host_changed_updates()[0]); + + // Transition to CONNECTED. + active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(), + "wifiNetworkId"); + fake_tether_host_fetcher_->InvokePendingCallbacks(); + EXPECT_EQ(2u, test_observer_->host_changed_updates().size()); + EXPECT_EQ( + (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTED, + std::shared_ptr<cryptauth::RemoteDevice>( + new cryptauth::RemoteDevice(test_devices_[0])), + "wifiNetworkId"}), + test_observer_->host_changed_updates()[1]); + + // Transition to DISCONNECTED. + active_host_->SetActiveHostDisconnected(); + fake_tether_host_fetcher_->InvokePendingCallbacks(); + EXPECT_EQ(3u, test_observer_->host_changed_updates().size()); + EXPECT_EQ((GetActiveHostResult{ActiveHost::ActiveHostStatus::DISCONNECTED, + nullptr, ""}), + test_observer_->host_changed_updates()[2]); +} + } // namespace tether } // namespace cryptauth
diff --git a/chromeos/components/tether/fake_active_host.cc b/chromeos/components/tether/fake_active_host.cc new file mode 100644 index 0000000..cf7cc243c --- /dev/null +++ b/chromeos/components/tether/fake_active_host.cc
@@ -0,0 +1,95 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/components/tether/fake_active_host.h" + +#include "base/base64.h" +#include "base/bind.h" +#include "base/memory/ptr_util.h" +#include "components/cryptauth/remote_device.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +namespace tether { + +FakeActiveHost::FakeActiveHost() + : ActiveHost(nullptr, nullptr), + active_host_status_(ActiveHost::ActiveHostStatus::DISCONNECTED), + active_host_device_id_(std::string()), + wifi_network_id_(std::string()) {} + +FakeActiveHost::~FakeActiveHost() {} + +void FakeActiveHost::SetActiveHostDisconnected() { + SetActiveHost(ActiveHost::ActiveHostStatus::DISCONNECTED, "", ""); +} + +void FakeActiveHost::SetActiveHostConnecting( + const std::string& active_host_device_id) { + SetActiveHost(ActiveHost::ActiveHostStatus::CONNECTING, active_host_device_id, + ""); +} + +void FakeActiveHost::SetActiveHostConnected( + const std::string& active_host_device_id, + const std::string& wifi_network_id) { + SetActiveHost(ActiveHost::ActiveHostStatus::CONNECTED, active_host_device_id, + wifi_network_id); +} + +void FakeActiveHost::GetActiveHost( + const ActiveHost::ActiveHostCallback& active_host_callback) { + std::unique_ptr<cryptauth::RemoteDevice> remote_device; + if (GetActiveHostStatus() == ActiveHost::ActiveHostStatus::DISCONNECTED) { + remote_device = nullptr; + } else { + // Convert the active host ID to a public key. + std::string public_key; + ASSERT_TRUE(base::Base64Decode(GetActiveHostDeviceId(), &public_key)); + + // Create a new RemoteDevice and set its public key. + remote_device = base::MakeUnique<cryptauth::RemoteDevice>(); + remote_device->public_key = public_key; + } + + active_host_callback.Run(GetActiveHostStatus(), std::move(remote_device), + GetWifiNetworkId()); +} + +ActiveHost::ActiveHostStatus FakeActiveHost::GetActiveHostStatus() const { + return active_host_status_; +} + +std::string FakeActiveHost::GetActiveHostDeviceId() const { + return active_host_device_id_; +} + +std::string FakeActiveHost::GetWifiNetworkId() const { + return wifi_network_id_; +} + +void FakeActiveHost::SetActiveHost(ActiveHostStatus active_host_status, + const std::string& active_host_device_id, + const std::string& wifi_network_id) { + bool status_changed = GetActiveHostStatus() != active_host_status; + bool device_changed = GetActiveHostDeviceId() != active_host_device_id; + bool network_id_changed = GetWifiNetworkId() != wifi_network_id; + + if (!status_changed && !device_changed && !network_id_changed) { + // If nothing has changed, return early. + return; + } + + active_host_status_ = active_host_status; + active_host_device_id_ = active_host_device_id; + wifi_network_id_ = wifi_network_id; + + GetActiveHost(base::Bind(&FakeActiveHost::SendActiveHostChangedUpdate, + base::Unretained(this))); +} + +} // namespace tether + +} // namespace chromeos
diff --git a/chromeos/components/tether/fake_active_host.h b/chromeos/components/tether/fake_active_host.h new file mode 100644 index 0000000..3ec912a --- /dev/null +++ b/chromeos/components/tether/fake_active_host.h
@@ -0,0 +1,54 @@ +// 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 CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_ +#define CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_ + +#include <string> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/observer_list.h" +#include "chromeos/components/tether/active_host.h" + +namespace chromeos { + +namespace tether { + +// Test double for ActiveHost. +class FakeActiveHost : public ActiveHost { + public: + FakeActiveHost(); + ~FakeActiveHost() override; + + // ActiveHost: + void SetActiveHostDisconnected() override; + void SetActiveHostConnecting( + const std::string& active_host_device_id) override; + void SetActiveHostConnected(const std::string& active_host_device_id, + const std::string& wifi_network_id) override; + void GetActiveHost( + const ActiveHost::ActiveHostCallback& active_host_callback) override; + ActiveHostStatus GetActiveHostStatus() const override; + std::string GetActiveHostDeviceId() const override; + std::string GetWifiNetworkId() const override; + + private: + void SetActiveHost(ActiveHostStatus active_host_status, + const std::string& active_host_device_id, + const std::string& wifi_network_id); + + ActiveHost::ActiveHostStatus active_host_status_; + std::string active_host_device_id_; + std::string wifi_network_id_; + + DISALLOW_COPY_AND_ASSIGN(FakeActiveHost); +}; + +} // namespace tether + +} // namespace chromeos + +#endif // CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_
diff --git a/chromeos/components/tether/keep_alive_operation.cc b/chromeos/components/tether/keep_alive_operation.cc index d1cf0db..dc9d54a 100644 --- a/chromeos/components/tether/keep_alive_operation.cc +++ b/chromeos/components/tether/keep_alive_operation.cc
@@ -48,12 +48,27 @@ KeepAliveOperation::~KeepAliveOperation() {} +void KeepAliveOperation::AddObserver(Observer* observer) { + observer_list_.AddObserver(observer); +} + +void KeepAliveOperation::RemoveObserver(Observer* observer) { + observer_list_.RemoveObserver(observer); +} + void KeepAliveOperation::OnDeviceAuthenticated( const cryptauth::RemoteDevice& remote_device) { DCHECK(remote_devices().size() == 1u && remote_devices()[0] == remote_device); SendMessageToDevice(remote_device, base::MakeUnique<MessageWrapper>(KeepAliveTickle())); + UnregisterDevice(remote_device); +} + +void KeepAliveOperation::OnOperationFinished() { + for (auto& observer : observer_list_) { + observer.OnOperationFinished(); + } } MessageType KeepAliveOperation::GetMessageTypeForConnection() {
diff --git a/chromeos/components/tether/keep_alive_operation.h b/chromeos/components/tether/keep_alive_operation.h index c5099e9..20193a8 100644 --- a/chromeos/components/tether/keep_alive_operation.h +++ b/chromeos/components/tether/keep_alive_operation.h
@@ -5,6 +5,7 @@ #ifndef CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_OPERATION_H_ #define CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_OPERATION_H_ +#include "base/observer_list.h" #include "chromeos/components/tether/message_transfer_operation.h" namespace chromeos { @@ -14,9 +15,8 @@ class BleConnectionManager; // Operation which sends a keep-alive message to a tether host. -// TODO(khorimoto/hansberry): Consider changing protocol to receive a -// DeviceStatus update after sending the -// KeepAliveTickle message. +// TODO(khorimoto/hansberry): Change protocol to receive a DeviceStatus update +// after sending the KeepAliveTickle message. class KeepAliveOperation : public MessageTransferOperation { public: class Factory { @@ -29,13 +29,20 @@ protected: virtual std::unique_ptr<KeepAliveOperation> BuildInstance( - const cryptauth::RemoteDevice& devices_to_connect, + const cryptauth::RemoteDevice& device_to_connect, BleConnectionManager* connection_manager); private: static Factory* factory_instance_; }; + class Observer { + public: + // TODO(khorimoto): This function should take a DeviceStatus once there is + // keep-alive tickle response. + virtual void OnOperationFinished() = 0; + }; + KeepAliveOperation(const cryptauth::RemoteDevice& device_to_connect, BleConnectionManager* connection_manager); ~KeepAliveOperation() override; @@ -47,11 +54,15 @@ // MessageTransferOperation: void OnDeviceAuthenticated( const cryptauth::RemoteDevice& remote_device) override; + void OnOperationFinished() override; MessageType GetMessageTypeForConnection() override; private: friend class KeepAliveOperationTest; + base::ObserverList<Observer> observer_list_; + bool has_authenticated_; + DISALLOW_COPY_AND_ASSIGN(KeepAliveOperation); };
diff --git a/chromeos/components/tether/keep_alive_operation_unittest.cc b/chromeos/components/tether/keep_alive_operation_unittest.cc index f0b196d..57e6e46 100644 --- a/chromeos/components/tether/keep_alive_operation_unittest.cc +++ b/chromeos/components/tether/keep_alive_operation_unittest.cc
@@ -19,6 +19,20 @@ namespace { +class TestObserver : public KeepAliveOperation::Observer { + public: + TestObserver() : has_run_callback_(false) {} + + virtual ~TestObserver() {} + + bool has_run_callback() { return has_run_callback_; } + + void OnOperationFinished() override { has_run_callback_ = true; } + + private: + bool has_run_callback_; +}; + std::string CreateKeepAliveTickleString() { KeepAliveTickle tickle; return MessageWrapper(tickle).ToRawMessage(); @@ -37,6 +51,10 @@ operation_ = base::WrapUnique(new KeepAliveOperation( test_device_, fake_ble_connection_manager_.get())); + + test_observer_ = base::WrapUnique(new TestObserver()); + operation_->AddObserver(test_observer_.get()); + operation_->Initialize(); } @@ -55,6 +73,8 @@ const cryptauth::RemoteDevice test_device_; std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_; + std::unique_ptr<TestObserver> test_observer_; + std::unique_ptr<KeepAliveOperation> operation_; private: @@ -62,7 +82,9 @@ }; TEST_F(KeepAliveOperationTest, TestSendsKeepAliveTickle) { + EXPECT_FALSE(test_observer_->has_run_callback()); SimulateDeviceAuthenticationAndVerifyMessageSent(); + EXPECT_TRUE(test_observer_->has_run_callback()); } } // namespace tether
diff --git a/chromeos/components/tether/keep_alive_scheduler.cc b/chromeos/components/tether/keep_alive_scheduler.cc new file mode 100644 index 0000000..a7e7d59 --- /dev/null +++ b/chromeos/components/tether/keep_alive_scheduler.cc
@@ -0,0 +1,77 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/components/tether/keep_alive_scheduler.h" + +#include "base/bind.h" + +namespace chromeos { + +namespace tether { + +// static +const uint32_t KeepAliveScheduler::kKeepAliveIntervalMinutes = 4; + +KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host, + BleConnectionManager* connection_manager) + : KeepAliveScheduler(active_host, + connection_manager, + base::MakeUnique<base::RepeatingTimer>()) {} + +KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host, + BleConnectionManager* connection_manager, + std::unique_ptr<base::Timer> timer) + : active_host_(active_host), + connection_manager_(connection_manager), + timer_(std::move(timer)), + weak_ptr_factory_(this) { + active_host_->AddObserver(this); +} + +KeepAliveScheduler::~KeepAliveScheduler() { + active_host_->RemoveObserver(this); +} + +void KeepAliveScheduler::OnActiveHostChanged( + ActiveHost::ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host_device, + const std::string& wifi_network_id) { + if (active_host_status == ActiveHost::ActiveHostStatus::DISCONNECTED) { + DCHECK(!active_host_device); + DCHECK(wifi_network_id.empty()); + + keep_alive_operation_.reset(); + active_host_device_.reset(); + timer_->Stop(); + return; + } + + if (active_host_status == ActiveHost::ActiveHostStatus::CONNECTED) { + DCHECK(active_host_device); + active_host_device_ = std::move(active_host_device); + timer_->Start(FROM_HERE, + base::TimeDelta::FromMinutes(kKeepAliveIntervalMinutes), + base::Bind(&KeepAliveScheduler::SendKeepAliveTickle, + weak_ptr_factory_.GetWeakPtr())); + SendKeepAliveTickle(); + } +} + +void KeepAliveScheduler::OnOperationFinished() { + keep_alive_operation_->RemoveObserver(this); + keep_alive_operation_.reset(); +} + +void KeepAliveScheduler::SendKeepAliveTickle() { + DCHECK(active_host_device_); + + keep_alive_operation_ = KeepAliveOperation::Factory::NewInstance( + *active_host_device_, connection_manager_); + keep_alive_operation_->AddObserver(this); + keep_alive_operation_->Initialize(); +} + +} // namespace tether + +} // namespace chromeos
diff --git a/chromeos/components/tether/keep_alive_scheduler.h b/chromeos/components/tether/keep_alive_scheduler.h new file mode 100644 index 0000000..9232a66 --- /dev/null +++ b/chromeos/components/tether/keep_alive_scheduler.h
@@ -0,0 +1,66 @@ +// 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 CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_ +#define CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_ + +#include <memory> + +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/timer/timer.h" +#include "chromeos/components/tether/active_host.h" +#include "chromeos/components/tether/keep_alive_operation.h" + +namespace chromeos { + +namespace tether { + +// Schedules keep-alive messages to be sent when this device is connected to a +// remote device's tether hotspot. When a device connects, a keep-alive message +// is sent immediately, then another one is scheduled every 4 minutes until the +// device disconnects. +class KeepAliveScheduler : public ActiveHost::Observer, + public KeepAliveOperation::Observer { + public: + KeepAliveScheduler(ActiveHost* active_host, + BleConnectionManager* connection_manager); + virtual ~KeepAliveScheduler(); + + // ActiveHost::Observer: + void OnActiveHostChanged(ActiveHost::ActiveHostStatus active_host_status, + std::unique_ptr<cryptauth::RemoteDevice> active_host, + const std::string& wifi_network_id) override; + + // KeepAliveOperation::Observer: + void OnOperationFinished() override; + + private: + friend class KeepAliveSchedulerTest; + + KeepAliveScheduler(ActiveHost* active_host, + BleConnectionManager* connection_manager, + std::unique_ptr<base::Timer> timer); + + void SendKeepAliveTickle(); + + static const uint32_t kKeepAliveIntervalMinutes; + + ActiveHost* active_host_; + BleConnectionManager* connection_manager_; + + std::unique_ptr<base::Timer> timer_; + std::unique_ptr<cryptauth::RemoteDevice> active_host_device_; + std::unique_ptr<KeepAliveOperation> keep_alive_operation_; + + base::WeakPtrFactory<KeepAliveScheduler> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(KeepAliveScheduler); +}; + +} // namespace tether + +} // namespace chromeos + +#endif // CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_
diff --git a/chromeos/components/tether/keep_alive_scheduler_unittest.cc b/chromeos/components/tether/keep_alive_scheduler_unittest.cc new file mode 100644 index 0000000..613dcf46 --- /dev/null +++ b/chromeos/components/tether/keep_alive_scheduler_unittest.cc
@@ -0,0 +1,231 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/components/tether/keep_alive_scheduler.h" + +#include <memory> +#include <vector> + +#include "base/timer/mock_timer.h" +#include "chromeos/components/tether/fake_active_host.h" +#include "chromeos/components/tether/fake_ble_connection_manager.h" +#include "components/cryptauth/remote_device_test_util.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +namespace tether { + +namespace { + +const char kWifiNetworkId[] = "wifiNetworkId"; + +class OperationDeletedHandler { + public: + virtual void OnOperationDeleted() = 0; +}; + +class FakeKeepAliveOperation : public KeepAliveOperation { + public: + FakeKeepAliveOperation(const cryptauth::RemoteDevice& device_to_connect, + BleConnectionManager* connection_manager, + OperationDeletedHandler* handler) + : KeepAliveOperation(device_to_connect, connection_manager), + handler_(handler), + remote_device_(device_to_connect) {} + + ~FakeKeepAliveOperation() override { handler_->OnOperationDeleted(); } + + void SendOperationFinishedEvent() { OnOperationFinished(); } + + cryptauth::RemoteDevice remote_device() { return remote_device_; } + + private: + OperationDeletedHandler* handler_; + const cryptauth::RemoteDevice remote_device_; +}; + +class FakeKeepAliveOperationFactory : public KeepAliveOperation::Factory, + public OperationDeletedHandler { + public: + FakeKeepAliveOperationFactory() + : num_created_(0), num_deleted_(0), last_created_(nullptr) {} + ~FakeKeepAliveOperationFactory() {} + + uint32_t num_created() { return num_created_; } + + uint32_t num_deleted() { return num_deleted_; } + + FakeKeepAliveOperation* last_created() { return last_created_; } + + void OnOperationDeleted() override { num_deleted_++; } + + protected: + std::unique_ptr<KeepAliveOperation> BuildInstance( + const cryptauth::RemoteDevice& device_to_connect, + BleConnectionManager* connection_manager) override { + num_created_++; + last_created_ = + new FakeKeepAliveOperation(device_to_connect, connection_manager, this); + return base::WrapUnique(last_created_); + } + + private: + uint32_t num_created_; + uint32_t num_deleted_; + FakeKeepAliveOperation* last_created_; +}; + +} // namespace + +class KeepAliveSchedulerTest : public testing::Test { + protected: + KeepAliveSchedulerTest() + : test_devices_(cryptauth::GenerateTestRemoteDevices(2)) {} + + void SetUp() override { + fake_active_host_ = base::MakeUnique<FakeActiveHost>(); + fake_ble_connection_manager_ = base::MakeUnique<FakeBleConnectionManager>(); + mock_timer_ = new base::MockTimer(true /* retain_user_task */, + true /* is_repeating */); + + fake_operation_factory_ = + base::WrapUnique(new FakeKeepAliveOperationFactory()); + KeepAliveOperation::Factory::SetInstanceForTesting( + fake_operation_factory_.get()); + + scheduler_ = base::WrapUnique(new KeepAliveScheduler( + fake_active_host_.get(), fake_ble_connection_manager_.get(), + base::WrapUnique(mock_timer_))); + } + + void VerifyTimerRunning(bool is_running) { + EXPECT_EQ(is_running, mock_timer_->IsRunning()); + + if (is_running) { + EXPECT_EQ(base::TimeDelta::FromMinutes( + KeepAliveScheduler::kKeepAliveIntervalMinutes), + mock_timer_->GetCurrentDelay()); + } + } + + const std::vector<cryptauth::RemoteDevice> test_devices_; + + std::unique_ptr<FakeActiveHost> fake_active_host_; + std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_; + base::MockTimer* mock_timer_; + + std::unique_ptr<FakeKeepAliveOperationFactory> fake_operation_factory_; + + std::unique_ptr<KeepAliveScheduler> scheduler_; + + private: + DISALLOW_COPY_AND_ASSIGN(KeepAliveSchedulerTest); +}; + +TEST_F(KeepAliveSchedulerTest, TestSendTickle_OneActiveHost) { + EXPECT_FALSE(fake_operation_factory_->num_created()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Start connecting to a device. No operation should be started. + fake_active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId()); + EXPECT_FALSE(fake_operation_factory_->num_created()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Connect to the device; the operation should be started. + fake_active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(), + std::string(kWifiNetworkId)); + EXPECT_EQ(1u, fake_operation_factory_->num_created()); + EXPECT_EQ(test_devices_[0], + fake_operation_factory_->last_created()->remote_device()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Ensure that once the operation is finished, it is deleted. + fake_operation_factory_->last_created()->SendOperationFinishedEvent(); + EXPECT_EQ(1u, fake_operation_factory_->num_created()); + EXPECT_EQ(1u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Fire the timer; this should result in another tickle being sent. + mock_timer_->Fire(); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(test_devices_[0], + fake_operation_factory_->last_created()->remote_device()); + EXPECT_EQ(1u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Finish this operation. + fake_operation_factory_->last_created()->SendOperationFinishedEvent(); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(2u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Disconnect that device. + fake_active_host_->SetActiveHostDisconnected(); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(2u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); +} + +TEST_F(KeepAliveSchedulerTest, TestSendTickle_MultipleActiveHosts) { + EXPECT_FALSE(fake_operation_factory_->num_created()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Start connecting to a device. No operation should be started. + fake_active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId()); + EXPECT_FALSE(fake_operation_factory_->num_created()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Connect to the device; the operation should be started. + fake_active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(), + std::string(kWifiNetworkId)); + EXPECT_EQ(1u, fake_operation_factory_->num_created()); + EXPECT_EQ(test_devices_[0], + fake_operation_factory_->last_created()->remote_device()); + EXPECT_FALSE(fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Disconnect that device before the operation is finished. It should still be + // deleted. + fake_active_host_->SetActiveHostDisconnected(); + EXPECT_EQ(1u, fake_operation_factory_->num_created()); + EXPECT_EQ(1u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Start connecting to a different. No operation should be started. + fake_active_host_->SetActiveHostConnecting(test_devices_[1].GetDeviceId()); + EXPECT_EQ(1u, fake_operation_factory_->num_created()); + EXPECT_EQ(1u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); + + // Connect to the second device; the operation should be started. + fake_active_host_->SetActiveHostConnected(test_devices_[1].GetDeviceId(), + std::string(kWifiNetworkId)); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(test_devices_[1], + fake_operation_factory_->last_created()->remote_device()); + EXPECT_EQ(1u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Ensure that once the second operation is finished, it is deleted. + fake_operation_factory_->last_created()->SendOperationFinishedEvent(); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(2u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(true /* is_running */); + + // Disconnect that device. + fake_active_host_->SetActiveHostDisconnected(); + EXPECT_EQ(2u, fake_operation_factory_->num_created()); + EXPECT_EQ(2u, fake_operation_factory_->num_deleted()); + VerifyTimerRunning(false /* is_running */); +} + +} // namespace tether + +} // namespace cryptauth
diff --git a/components/constrained_window/OWNERS b/components/constrained_window/OWNERS index 8b25c36..299ed89d5 100644 --- a/components/constrained_window/OWNERS +++ b/components/constrained_window/OWNERS
@@ -1,3 +1,5 @@ gbillock@chromium.org msw@chromium.org wittman@chromium.org + +# COMPONENT: Internals>Views
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc index 00a36da..8b61a9d 100644 --- a/components/exo/shell_surface.cc +++ b/components/exo/shell_surface.cc
@@ -496,9 +496,22 @@ << "Only a window in SystemModalContainer can change the modality"; return; } + + if (system_modal == system_modal_) + return; + + system_modal_ = system_modal; + + if (widget_) + UpdateSystemModal(); +} + +void ShellSurface::UpdateSystemModal() { + DCHECK(widget_); + DCHECK_EQ(container_, ash::kShellWindowId_SystemModalContainer); widget_->GetNativeWindow()->SetProperty( aura::client::kModalKey, - system_modal ? ui::MODAL_TYPE_SYSTEM : ui::MODAL_TYPE_NONE); + system_modal_ ? ui::MODAL_TYPE_SYSTEM : ui::MODAL_TYPE_NONE); } // static @@ -766,6 +779,8 @@ DCHECK(!widget_->IsVisible()); pending_show_widget_ = false; widget_->Show(); + if (container_ == ash::kShellWindowId_SystemModalContainer) + UpdateSystemModal(); } } }
diff --git a/components/exo/shell_surface.h b/components/exo/shell_surface.h index 74ff30d..b090caea 100644 --- a/components/exo/shell_surface.h +++ b/components/exo/shell_surface.h
@@ -307,6 +307,9 @@ // |pending_shadow_content_bounds_|. void UpdateShadow(); + // Applies |system_modal_| to |widget_|. + void UpdateSystemModal(); + views::Widget* widget_ = nullptr; Surface* surface_; aura::Window* parent_; @@ -347,6 +350,7 @@ int top_inset_height_ = 0; int pending_top_inset_height_ = 0; bool shadow_underlay_in_surface_ = true; + bool system_modal_ = false; DISALLOW_COPY_AND_ASSIGN(ShellSurface); };
diff --git a/components/exo/shell_surface_unittest.cc b/components/exo/shell_surface_unittest.cc index 8ad2c3a1..988a680 100644 --- a/components/exo/shell_surface_unittest.cc +++ b/components/exo/shell_surface_unittest.cc
@@ -471,6 +471,34 @@ EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen()); } +TEST_F(ShellSurfaceTest, ModalWindowSetSystemModalBeforeCommit) { + std::unique_ptr<Surface> surface(new Surface); + std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( + surface.get(), nullptr, ShellSurface::BoundsMode::SHELL, gfx::Point(), + true, false, ash::kShellWindowId_SystemModalContainer)); + gfx::Size desktop_size(640, 480); + std::unique_ptr<Buffer> desktop_buffer( + new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(desktop_size))); + surface->Attach(desktop_buffer.get()); + surface->SetInputRegion(SkRegion()); + + // Set SetSystemModal before any commit happens. Widget is not created at + // this time. + EXPECT_FALSE(shell_surface->GetWidget()); + shell_surface->SetSystemModal(true); + + surface->Commit(); + + // It is expected that modal window is shown. + EXPECT_TRUE(shell_surface->GetWidget()); + EXPECT_TRUE(ash::WmShell::Get()->IsSystemModalWindowOpen()); + + // Now widget is created and setting modal state should be applied + // immediately. + shell_surface->SetSystemModal(false); + EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen()); +} + TEST_F(ShellSurfaceTest, PopupWindow) { Surface parent_surface; ShellSurface parent(&parent_surface);
diff --git a/components/offline_pages/core/background/network_quality_provider_stub.cc b/components/offline_pages/core/background/network_quality_provider_stub.cc index aaca695..f4243af 100644 --- a/components/offline_pages/core/background/network_quality_provider_stub.cc +++ b/components/offline_pages/core/background/network_quality_provider_stub.cc
@@ -36,6 +36,14 @@ void NetworkQualityProviderStub::RemoveEffectiveConnectionTypeObserver( net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) {} +void NetworkQualityProviderStub::AddRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) { +} + +void NetworkQualityProviderStub::RemoveRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) { +} + net::EffectiveConnectionType NetworkQualityProviderStub::GetEffectiveConnectionType() const { return connection_type_;
diff --git a/components/offline_pages/core/background/network_quality_provider_stub.h b/components/offline_pages/core/background/network_quality_provider_stub.h index 1c13a17..525e114 100644 --- a/components/offline_pages/core/background/network_quality_provider_stub.h +++ b/components/offline_pages/core/background/network_quality_provider_stub.h
@@ -35,6 +35,14 @@ net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) override; + void AddRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + override; + + void RemoveRTTAndThroughputEstimatesObserver( + net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) + override; + void SetEffectiveConnectionTypeForTest(net::EffectiveConnectionType type) { connection_type_ = type; }
diff --git a/components/translate/core/language_detection/chinese_script_classifier.cc b/components/translate/core/language_detection/chinese_script_classifier.cc index f37cfe4..c34d0e6f 100644 --- a/components/translate/core/language_detection/chinese_script_classifier.cc +++ b/components/translate/core/language_detection/chinese_script_classifier.cc
@@ -9,8 +9,8 @@ #include <string> #include "base/logging.h" #include "base/strings/string_util.h" +#include "third_party/icu/source/common/unicode/uniset.h" #include "third_party/icu/source/common/unicode/unistr.h" -#include "third_party/icu/source/i18n/unicode/translit.h" namespace translate { @@ -23,25 +23,750 @@ } // namespace ChineseScriptClassifier::ChineseScriptClassifier() { - UParseError parse_status; - UErrorCode status = U_ZERO_ERROR; - // The Transliterator IDs are defined in: - // third_party/icu/source/data/translit/root.txt. + // zh-Hans and zh-Hant codepoints extracted from: + // third_party/icu/source/data/translit/Hans_Hant.txt // - // Chromium keeps only a subset of these, defined in: - // third_party/icu/source/data/translit/root_subset.txt - hans2hant_.reset(icu::Transliterator::createInstance( - icu::UnicodeString("Hans-Hant"), UTRANS_FORWARD, parse_status, status)); - DVLOG(1) << "Hans-Hant Transliterator initialization status: " - << u_errorName(status); - hant2hans_.reset(icu::Transliterator::createInstance( - icu::UnicodeString("Hant-Hans"), UTRANS_FORWARD, parse_status, status)); - DVLOG(1) << "Hant-Hans Transliterator initialization status: " - << u_errorName(status); + // zh-Hans codepoints to be stored in a UnicodeSet for later reference. + const std::string& hans_codepoints = + "[\u4e07\u4e0e\u4e13\u4e1a\u4e1b\u4e1c" + "\u4e1d\u4e22\u4e24\u4e25\u4e27\u4e2a\u4e2b" + "\u4e30\u4e34\u4e3a\u4e3d\u4e3e\u4e49\u4e4c\u4e50" + "\u4e54\u4e60\u4e61\u4e66\u4e70\u4e71\u4e89" + "\u4e8f\u4e98\u4e9a\u4ea7\u4ea9\u4eae\u4eb2\u4eb5" + "\u4eb8\u4ebf\u4ec0\u4ec5\u4ec6\u4ece\u4ed1" + "\u4ed3\u4ed7\u4eea\u4eec\u4ef7\u4f17\u4f18\u4f1a" + "\u4f1b\u4f1e\u4f1f\u4f20\u4f23\u4f24\u4f25" + "\u4f26\u4f27\u4f2a\u4f2b\u4f53\u4f5d\u4f63\u4f65" + "\u4fa0\u4fa3\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9" + "\u4faa\u4fac\u4fe3\u4fe6\u4fe8\u4fe9\u4fea\u4feb" + "\u4fed\u503a\u503e\u506c\u507b\u507e\u507f" + "\u50a5\u50a7\u50a8\u50a9\u513f\u5151\u5156\u515a" + "\u5170\u5173\u5174\u5179\u517b\u517d\u5181" + "\u5185\u5188\u518c\u5199\u519b\u519c\u51a2\u51af" + "\u51b1\u51b3\u51b5\u51bb\u51c4\u51c9\u51cf" + "\u51d1\u51db\u51e4\u51eb\u51ed\u51ef\u51fb\u51ff" + "\u520d\u5218\u5219\u521a\u521b\u5220\u522b" + "\u522c\u522d\u5239\u523d\u523f\u5240\u5242\u5250" + "\u5251\u5265\u5267\u529d\u529e\u52a1\u52a2" + "\u52a8\u52b1\u52b2\u52b3\u52bf\u52cb\u52d6\u52da" + "\u52e4\u5300\u5326\u532e\u533a\u533b\u534e" + "\u534f\u5355\u5356\u5362\u5364\u5367\u536b\u5374" + "\u5382\u5384\u5385\u5386\u5389\u538b\u538c" + "\u538d\u5390\u5395\u5398\u53a2\u53a3\u53a6\u53a8" + "\u53a9\u53ae\u53bf\u53c1\u53c2\u53cc\u53d8" + "\u53d9\u53e0\u53f7\u53f9\u53fd\u5401\u540c\u5413" + "\u5415\u5417\u5423\u5428\u542c\u542f\u5434" + "\u5450\u5452\u5453\u5455\u5456\u5457\u5458\u5459" + "\u545b\u545c\u548f\u5499\u549b\u549d\u54a4" + "\u54c4\u54cd\u54d1\u54d2\u54d3\u54d4\u54d5\u54d7" + "\u54d9\u54dc\u54dd\u54df\u551b\u551d\u5520" + "\u5521\u5522\u5524\u5555\u5567\u556c\u556d\u556e" + "\u5570\u5574\u5578\u5582\u55b7\u55bd\u55be" + "\u55eb\u55f3\u5618\u5624\u5631\u565c\u566a\u56a3" + "\u56e2\u56ed\u56f1\u56f4\u56f5\u56fd\u56fe" + "\u5706\u5723\u5739\u573a\u5742\u574f\u5757\u575a" + "\u575b\u575c\u575d\u575e\u575f\u5760\u5784" + "\u5785\u5786\u5792\u57a6\u57a9\u57ab\u57ad\u57b1" + "\u57b2\u57b4\u57d8\u57d9\u57da\u57ef\u5811" + "\u5815\u5824\u5899\u58ee\u58f0\u58f3\u58f6\u58f8" + "\u5904\u5907\u590d\u591f\u5934\u5938\u5939" + "\u593a\u5941\u5942\u594b\u5956\u5965\u5986\u5987" + "\u5988\u59a9\u59aa\u59ab\u59d7\u59f9\u5a04" + "\u5a05\u5a06\u5a07\u5a08\u5a18\u5a31\u5a32\u5a34" + "\u5a73\u5a74\u5a75\u5a76\u5aaa\u5abe\u5ad2" + "\u5ad4\u5af1\u5b37\u5b59\u5b66\u5b6a\u5b81\u5b9d" + "\u5b9e\u5ba0\u5ba1\u5baa\u5bab\u5bbd\u5bbe" + "\u5bdd\u5bf8\u5bf9\u5bfb\u5bfc\u5bff\u5c06\u5c14" + "\u5c18\u5c1d\u5c27\u5c34\u5c38\u5c3d\u5c42" + "\u5c43\u5c49\u5c4a\u5c5e\u5c61\u5c66\u5c7f\u5c81" + "\u5c82\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b" + "\u5ca9\u5cad\u5cb3\u5cbd\u5cbf\u5cc4\u5ce1\u5ce3" + "\u5ce4\u5ce5\u5ce6\u5d02\u5d03\u5d04\u5d2d" + "\u5d58\u5d5a\u5d5d\u5dc5\u5de9\u5def\u5e01\u5e05" + "\u5e08\u5e0f\u5e10\u5e18\u5e1c\u5e26\u5e27" + "\u5e2e\u5e31\u5e3b\u5e3c\u5e42\u5e76\u5e7f\u5e84" + "\u5e86\u5e90\u5e91\u5e93\u5e94\u5e99\u5e9e" + "\u5e9f\u5ea6\u5eea\u5f00\u5f02\u5f03\u5f11\u5f20" + "\u5f25\u5f26\u5f2a\u5f2f\u5f39\u5f3a\u5f52" + "\u5f53\u5f55\u5f5d\u5f66\u5f7b\u5f84\u5f95\u5fad" + "\u5fc6\u5fcf\u5fe7\u5ffe\u6000\u6001\u6002" + "\u6003\u6004\u6005\u6006\u601c\u603b\u603c\u603f" + "\u604b\u6052\u6064\u6073\u6076\u6078\u6079" + "\u607a\u607b\u607c\u607d\u60a6\u60ab\u60ac\u60ad" + "\u60ae\u60af\u60ca\u60e7\u60e8\u60e9\u60eb" + "\u60ec\u60ed\u60ee\u60ef\u6120\u6124\u6126\u6151" + "\u61d1\u61d2\u61d4\u6206\u620b\u620f\u6217" + "\u6218\u621a\u622c\u622e\u622f\u6237\u6247\u6251" + "\u6263\u6267\u6269\u626a\u626b\u626c\u6270" + "\u6298\u629a\u629b\u629f\u62a0\u62a1\u62a2\u62a4" + "\u62a5\u62c5\u62d3\u62df\u62e2\u62e3\u62e5" + "\u62e6\u62e7\u62e8\u62e9\u6302\u631a\u631b\u631c" + "\u631d\u631e\u631f\u6320\u6321\u6322\u6323" + "\u6324\u6325\u6326\u633d\u6342\u6346\u635d\u635e" + "\u635f\u6361\u6362\u6363\u636e\u637b\u63b3" + "\u63b4\u63b7\u63b8\u63ba\u63bc\u63fd\u63fe\u63ff" + "\u6400\u6401\u6402\u6405\u643a\u6444\u6445" + "\u6446\u6447\u6448\u644a\u6484\u6491\u64b5\u64b7" + "\u64b8\u64ba\u64de\u6512\u654c\u655b\u6570" + "\u658b\u6593\u65a9\u65ad\u65c1\u65e0\u65e7\u65f6" + "\u65f7\u65f8\u6606\u660c\u6619\u6635\u663c" + "\u663d\u663e\u664b\u6652\u6653\u6654\u6655\u6656" + "\u6682\u66a7\u672f\u6731\u6740\u6742\u6743" + "\u6746\u6761\u6765\u6768\u6769\u676f\u6770\u6781" + "\u6784\u679e\u67a2\u67a3\u67a5\u67a7\u67a8" + "\u67aa\u67ab\u67ad\u67e0\u67e5\u67fd\u6800\u6805" + "\u6807\u6808\u6809\u680a\u680b\u680c\u680e" + "\u680f\u6811\u6816\u6837\u683e\u6860\u6861\u6862" + "\u6863\u6864\u6865\u6866\u6867\u6868\u6869" + "\u68a6\u68bc\u68be\u68bf\u68c0\u68c1\u68c2\u6901" + "\u691f\u6920\u6924\u692d\u696b\u697c\u6984" + "\u6985\u6987\u6988\u6989\u69a8\u69da\u69db\u69df" + "\u69e0\u6a2a\u6a2f\u6a31\u6a50\u6a65\u6a71" + "\u6a79\u6a7c\u6a90\u6aa9\u6b22\u6b24\u6b27\u6b7c" + "\u6b81\u6b87\u6b8b\u6b92\u6b93\u6b9a\u6ba1" + "\u6bb4\u6bb7\u6bc1\u6bc2\u6bd5\u6bd9\u6be1\u6bf5" + "\u6c07\u6c22\u6c29\u6c32\u6c47\u6c49\u6c64" + "\u6c79\u6c89\u6c9f\u6ca1\u6ca3\u6ca4\u6ca5\u6ca6" + "\u6ca7\u6ca9\u6caa\u6cbe\u6cde\u6cea\u6cf6" + "\u6cf7\u6cf8\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u6d01" + "\u6d12\u6d3c\u6d43\u6d45\u6d46\u6d47\u6d48" + "\u6d4a\u6d4b\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52" + "\u6d53\u6d54\u6d5a\u6d82\u6d9b\u6d9d\u6d9e" + "\u6d9f\u6da0\u6da1\u6da3\u6da4\u6da6\u6da7\u6da8" + "\u6da9\u6dec\u6e0a\u6e0c\u6e0d\u6e0e\u6e10" + "\u6e11\u6e14\u6e17\u6e29\u6e7e\u6e7f\u6e83\u6e85" + "\u6e86\u6ed7\u6eda\u6ede\u6edf\u6ee0\u6ee1" + "\u6ee2\u6ee4\u6ee5\u6ee6\u6ee8\u6ee9\u6eea\u6f13" + "\u6f24\u6f46\u6f47\u6f4b\u6f4d\u6f5c\u6f74" + "\u6f9c\u6fd1\u6fd2\u704f\u706d\u706f\u7075\u707e" + "\u707f\u7080\u7089\u7096\u709c\u709d\u70ad" + "\u70b9\u70bc\u70bd\u70c1\u70c2\u70c3\u70db\u70e6" + "\u70e7\u70e8\u70e9\u70eb\u70ec\u70ed\u7115" + "\u7116\u7118\u7130\u7174\u718f\u7194\u7231\u7237" + "\u724d\u7266\u7275\u727a\u728a\u72b6\u72b7" + "\u72b8\u72b9\u72c8\u72dd\u72de\u72ec\u72ed\u72ee" + "\u72ef\u72f0\u72f1\u72f2\u7303\u730e\u7315" + "\u7321\u732a\u732b\u732c\u732e\u736d\u7391\u739a" + "\u739b\u73ae\u73af\u73b0\u73b1\u73ba\u73d0" + "\u73d1\u73f0\u73f2\u7403\u7405\u740f\u7410\u743c" + "\u7476\u7477\u748e\u74d2\u74ee\u74ef\u7535" + "\u753b\u7545\u7574\u7596\u7597\u759f\u75a0\u75a1" + "\u75ac\u75ad\u75ae\u75af\u75b1\u75b4\u75c8" + "\u75c9\u75d2\u75d6\u75e8\u75ea\u75eb\u7605\u7606" + "\u7617\u7618\u762a\u762b\u763e\u763f\u765e" + "\u7663\u766b\u7682\u7691\u76b1\u76b2\u76cf\u76d0" + "\u76d1\u76d6\u76d7\u76d8\u770d\u772c\u772f" + "\u7741\u7750\u7751\u777e\u7786\u7792\u77a9\u77eb" + "\u77f6\u77fe\u77ff\u7800\u7801\u7816\u7817" + "\u781a\u781c\u783a\u783b\u783e\u7840\u7841\u7855" + "\u7856\u7857\u7859\u786e\u7877\u788d\u789b" + "\u789c\u78b1\u78f7\u7934\u793c\u7943\u794e\u7962" + "\u796f\u7977\u7978\u7980\u7984\u7985\u79bb" + "\u79c3\u79cd\u79d8\u79ef\u79f0\u79fd\u79fe\u7a06" + "\u7a0e\u7a23\u7a33\u7a51\u7a77\u7a83\u7a8d" + "\u7a8e\u7a91\u7a9c\u7a9d\u7aa5\u7aa6\u7aad\u7ad6" + "\u7ade\u7b03\u7b0b\u7b14\u7b15\u7b3a\u7b3c" + "\u7b3e\u7b51\u7b5a\u7b5b\u7b5c\u7b5d\u7b79\u7b7c" + "\u7b7e\u7b80\u7b93\u7ba6\u7ba7\u7ba8\u7ba9" + "\u7baa\u7bab\u7bd1\u7bd3\u7bea\u7bee\u7bf1\u7c16" + "\u7c41\u7c74\u7c7b\u7c7c\u7c9c\u7c9d\u7ca4" + "\u7caa\u7cae\u7cc1\u7cc7\u7cdf\u7d27\u7d77\u7e9f" + "\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6" + "\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eac\u7ead\u7eae" + "\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5" + "\u7eb6\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd" + "\u7ebe\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4" + "\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc" + "\u7ecd\u7ece\u7ecf\u7ed0\u7ed1\u7ed2\u7ed3" + "\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb" + "\u7edc\u7edd\u7ede\u7edf\u7ee0\u7ee1\u7ee2" + "\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u7ee9\u7eea" + "\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1" + "\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9" + "\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00" + "\u7f01\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08" + "\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f" + "\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18" + "\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f" + "\u7f20\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27" + "\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e" + "\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u7f35\u7f42" + "\u7f51\u7f57\u7f5a\u7f62\u7f74\u7f81\u7f9f" + "\u7fa1\u7fd8\u7ff1\u8000\u8022\u8027\u8038\u8042" + "\u804b\u804c\u804d\u8054\u8069\u806a\u8083" + "\u80a0\u80a4\u80ae\u80b4\u80be\u80bf\u80c0\u80c1" + "\u80dc\u80e7\u80e8\u80ea\u80eb\u80f6\u8109" + "\u810d\u810f\u8110\u8111\u8113\u8114\u811a\u8131" + "\u8136\u8138\u814c\u816d\u817b\u817c\u817d" + "\u817e\u8191\u81bb\u81dc\u8206\u8223\u8230\u8231" + "\u823b\u8270\u8273\u827a\u8282\u8288\u8297" + "\u829c\u82a6\u82c1\u82c7\u82c8\u82cb\u82cc\u82cd" + "\u82cf\u8303\u830e\u830f\u8311\u8314\u8315" + "\u8327\u8346\u8350\u8359\u835a\u835b\u835c\u835e" + "\u835f\u8360\u8361\u8363\u8364\u8365\u8366" + "\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e" + "\u836f\u8385\u83b1\u83b2\u83b3\u83b4\u83b6" + "\u83b7\u83b8\u83b9\u83ba\u83bc\u841d\u8424\u8425" + "\u8426\u8427\u8428\u8471\u8487\u8489\u848b" + "\u848c\u84dd\u84df\u84e0\u84e3\u84e5\u84e6\u8502" + "\u8511\u8537\u8539\u853a\u853c\u8570\u8572" + "\u8574\u85ae\u85af\u85d3\u85e4\u8616\u864f\u8651" + "\u865a\u866b\u866c\u866e\u867d\u867e\u867f" + "\u8680\u8681\u8682\u8695\u86ac\u86ca\u86ce\u86cf" + "\u86ee\u86f0\u86f1\u86f2\u86f3\u86f4\u8715" + "\u8717\u8737\u8747\u8748\u8749\u874e\u877c\u877e" + "\u8780\u87a8\u87cf\u8839\u8845\u8854\u8865" + "\u886c\u886e\u8884\u8885\u8886\u889c\u88ad\u88af" + "\u88c5\u88c6\u88c8\u88e2\u88e3\u88e4\u88e5" + "\u891b\u8934\u89c1\u89c2\u89c3\u89c4\u89c5\u89c6" + "\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd" + "\u89ce\u89cf\u89d0\u89d1\u89de\u89e6\u89ef\u8a1a" + "\u8a89\u8a8a\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4" + "\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bad" + "\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4" + "\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc" + "\u8bbd\u8bbe\u8bbf\u8bc0\u8bc1\u8bc2\u8bc3" + "\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb" + "\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2" + "\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda" + "\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1" + "\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9" + "\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0" + "\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8" + "\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff" + "\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07" + "\u8c08\u8c0a\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f" + "\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17" + "\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e" + "\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26" + "\u8c27\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u8c2d" + "\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35" + "\u8c36\u8c6e\u8d1d\u8d1e\u8d1f\u8d20\u8d21" + "\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29" + "\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30" + "\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38" + "\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f" + "\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u8d47" + "\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e" + "\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u8d56" + "\u8d57\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d" + "\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d6a\u8d75" + "\u8d76\u8d8b\u8db1\u8db8\u8dc3\u8dc4\u8dde" + "\u8df5\u8df6\u8df7\u8df8\u8df9\u8dfb\u8e0a\u8e0c" + "\u8e2a\u8e2c\u8e2f\u8e51\u8e52\u8e70\u8e7f" + "\u8e8f\u8e9c\u8eaf\u8f66\u8f67\u8f68\u8f69\u8f6a" + "\u8f6b\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u8f71" + "\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79" + "\u8f7a\u8f7b\u8f7c\u8f7d\u8f7e\u8f7f\u8f80" + "\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88" + "\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f" + "\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97" + "\u8f98\u8f99\u8f9a\u8fa9\u8fab\u8fb9\u8fbd" + "\u8fbe\u8fc1\u8fc7\u8fc8\u8fd0\u8fd8\u8fd9\u8fdb" + "\u8fdc\u8fdd\u8fde\u8fdf\u8fe9\u8ff3\u8ff9" + "\u9002\u9009\u900a\u9012\u9026\u903b\u903e\u9057" + "\u9065\u9093\u909d\u90ac\u90ae\u90b9\u90ba" + "\u90bb\u90c1\u90cf\u90d0\u90d1\u90d3\u90e6\u90e7" + "\u90f8\u9142\u915d\u9166\u9171\u9178\u917d" + "\u917e\u917f\u91ca\u91cc\u9274\u92ae\u933e\u9485" + "\u9486\u9487\u9488\u9489\u948a\u948b\u948c" + "\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494" + "\u9495\u9496\u9497\u9498\u9499\u949a\u949b" + "\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3" + "\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa" + "\u94ab\u94ac\u94ad\u94ae\u94af\u94b0\u94b1\u94b2" + "\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9" + "\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1" + "\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8" + "\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94cf\u94d0" + "\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7" + "\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df" + "\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6" + "\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee" + "\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5" + "\u94f6\u94f7\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd" + "\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504" + "\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c" + "\u950d\u950e\u950f\u9510\u9511\u9512\u9513" + "\u9514\u9515\u9516\u9517\u9518\u9519\u951a\u951b" + "\u951c\u951d\u951e\u951f\u9520\u9521\u9522" + "\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a" + "\u952b\u952c\u952d\u952e\u952f\u9530\u9531" + "\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539" + "\u953b\u953c\u953d\u953e\u953f\u9540\u9541" + "\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549" + "\u954a\u954b\u954c\u954d\u954e\u954f\u9550" + "\u9551\u9552\u9553\u9554\u9556\u9557\u9558\u9559" + "\u955a\u955b\u955c\u955d\u955e\u955f\u9560" + "\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568" + "\u9569\u956a\u956b\u956c\u956d\u956e\u956f" + "\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u957f" + "\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee" + "\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6" + "\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd" + "\u95fe\u95ff\u9600\u9601\u9602\u9603\u9604\u9605" + "\u9606\u9607\u9608\u9609\u960a\u960b\u960c" + "\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614" + "\u9615\u9616\u9617\u9618\u9619\u961a\u961b" + "\u961f\u9633\u9634\u9635\u9636\u9640\u9645\u9646" + "\u9647\u9648\u9649\u9655\u9667\u9668\u9669" + "\u968f\u9690\u96b6\u96bd\u96be\u96cf\u96e0\u96f3" + "\u96fe\u9701\u9721\u972d\u9753\u9759\u9765" + "\u9791\u9792\u97af\u97e6\u97e7\u97e8\u97e9\u97ea" + "\u97eb\u97ec\u97f5\u9875\u9876\u9877\u9878" + "\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880" + "\u9881\u9882\u9883\u9884\u9885\u9886\u9887" + "\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f" + "\u9890\u9891\u9892\u9893\u9894\u9895\u9896" + "\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e" + "\u989f\u98a0\u98a1\u98a2\u98a4\u98a5\u98a6" + "\u98a7\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4" + "\u98d5\u98d6\u98d7\u98d8\u98d9\u98da\u98de" + "\u98e8\u990d\u9963\u9964\u9965\u9966\u9967\u9968" + "\u9969\u996a\u996b\u996c\u996d\u996e\u996f" + "\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977" + "\u9978\u9979\u997a\u997b\u997c\u997d\u997e" + "\u997f\u9981\u9982\u9983\u9984\u9985\u9986\u9987" + "\u9988\u9989\u998a\u998b\u998c\u998d\u998e" + "\u998f\u9990\u9991\u9992\u9993\u9994\u9995\u9a6c" + "\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73" + "\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b" + "\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82" + "\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u9a8a" + "\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u9a90\u9a91" + "\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99" + "\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u9aa0" + "\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9ac5" + "\u9acb\u9acc\u9b13\u9b47\u9b49\u9c7c\u9c7d" + "\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9c84\u9c85" + "\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c" + "\u9c8d\u9c8e\u9c8f\u9c90\u9c91\u9c92\u9c93\u9c94" + "\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b" + "\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3" + "\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa" + "\u9cab\u9cac\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2" + "\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9" + "\u9cba\u9cbb\u9cbc\u9cbd\u9cbe\u9cbf\u9cc0\u9cc1" + "\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8" + "\u9cc9\u9cca\u9ccb\u9ccc\u9ccd\u9cce\u9ccf\u9cd0" + "\u9cd1\u9cd2\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7" + "\u9cd8\u9cd9\u9cda\u9cdb\u9cdc\u9cdd\u9cde\u9cdf" + "\u9ce0\u9ce1\u9ce2\u9ce3\u9e1f\u9e20\u9e21" + "\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29" + "\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30" + "\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38" + "\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f" + "\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47" + "\u9e48\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e" + "\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u9e55\u9e56" + "\u9e57\u9e58\u9e59\u9e5a\u9e5b\u9e5c\u9e5d" + "\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u9e65" + "\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c" + "\u9e6d\u9e6f\u9e70\u9e71\u9e72\u9e73\u9e74\u9e7e" + "\u9ea6\u9eb8\u9ebb\u9ec4\u9ec9\u9ee1\u9ee9" + "\u9eea\u9efe\u9f0b\u9f0d\u9f17\u9f39\u9f50\u9f51" + "\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85" + "\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f99" + "\u9f9a\u9f9b\u9f9f]"; + const std::string& hant_codepoints = + "[\u003b\u4e1f\u4e26\u4e82\u4e99\u4e9e\u4efd\u4f47" + "\u4f48\u4f54\u4f57\u4f75\u4f86\u4f96\u4fb6" + "\u4fb7\u4fc1\u4fc2\u4fd4\u4fe0\u4fec\u4ff1\u5000" + "\u5006\u5008\u5009\u500b\u5011\u5016\u5021" + "\u5023\u502b\u5049\u5074\u5075\u507d\u5091\u5096" + "\u5098\u5099\u50a2\u50ad\u50af\u50b3\u50b4" + "\u50b5\u50b7\u50be\u50c2\u50c5\u50c7\u50c9\u50cf" + "\u50d1\u50d5\u50de\u50e5\u50e8\u50f1\u50f9" + "\u5100\u5102\u5104\u5108\u5109\u5110\u5114\u5115" + "\u5118\u511f\u512a\u5132\u5137\u5138\u513a" + "\u513b\u513c\u5147\u514c\u5152\u5157\u5169\u518a" + "\u51aa\u51c8\u51cd\u51dc\u51f1\u5225\u522a" + "\u5244\u5247\u524b\u524e\u5257\u525b\u525d\u526e" + "\u5274\u5275\u5277\u5283\u5287\u5289\u528a" + "\u528c\u528d\u528f\u5291\u529a\u52c1\u52d5\u52d7" + "\u52d9\u52db\u52dd\u52de\u52e2\u52e9\u52f1" + "\u52f3\u52f5\u52f8\u52fb\u532d\u532f\u5331\u5340" + "\u5354\u5379\u537b\u5399\u53a0\u53ad\u53b2" + "\u53b4\u53c3\u53c4\u53e2\u540b\u5412\u5422\u5433" + "\u5436\u5442\u54b7\u54bc\u54e1\u5504\u551a" + "\u5538\u554f\u5553\u555e\u555f\u5562\u558e\u559a" + "\u55a8\u55aa\u55ab\u55ac\u55ae\u55b2\u55c6" + "\u55c7\u55ca\u55ce\u55da\u55e9\u55f6\u5606\u560d" + "\u5614\u5616\u5617\u561c\u5629\u562e\u562f" + "\u5630\u5635\u5638\u563d\u5653\u565a\u565d\u5660" + "\u5665\u5666\u566f\u5672\u5674\u5678\u5679" + "\u5680\u5687\u568c\u5690\u5695\u5699\u56a5\u56a6" + "\u56a8\u56ae\u56b2\u56b3\u56b4\u56b6\u56c0" + "\u56c1\u56c2\u56c5\u56c8\u56c9\u56cd\u56d1\u56d3" + "\u56ea\u5707\u570b\u570d\u5712\u5713\u5716" + "\u5718\u57b5\u57e1\u57f0\u57f7\u5805\u580a\u5816" + "\u581d\u582f\u5831\u5834\u584a\u584b\u584f" + "\u5852\u5857\u585a\u5862\u5864\u5875\u5879\u588a" + "\u589c\u58ae\u58b3\u58bb\u58be\u58c7\u58cb" + "\u58ce\u58d3\u58d8\u58d9\u58da\u58dc\u58de\u58df" + "\u58e0\u58e2\u58e9\u58ef\u58fa\u58fc\u58fd" + "\u5920\u5922\u5925\u593e\u5950\u5967\u5969\u596a" + "\u596c\u596e\u597c\u599d\u59ca\u59cd\u59e6" + "\u59ea\u5a1b\u5a41\u5a66\u5a6d\u5aa7\u5aaf\u5abc" + "\u5abd\u5acb\u5ad7\u5af5\u5afb\u5aff\u5b00" + "\u5b08\u5b0b\u5b0c\u5b19\u5b1d\u5b21\u5b24\u5b2a" + "\u5b30\u5b38\u5b43\u5b4c\u5b6b\u5b78\u5b7f" + "\u5bae\u5bdf\u5be2\u5be6\u5be7\u5be9\u5beb\u5bec" + "\u5bf5\u5bf6\u5c05\u5c07\u5c08\u5c0b\u5c0d" + "\u5c0e\u5c37\u5c46\u5c4d\u5c53\u5c5c\u5c62\u5c64" + "\u5c68\u5c6c\u5ca1\u5cf4\u5cf6\u5cfd\u5d0d" + "\u5d11\u5d17\u5d19\u5d22\u5d2c\u5d50\u5d81\u5d84" + "\u5d87\u5d94\u5d97\u5da0\u5da2\u5da7\u5dae" + "\u5db4\u5db8\u5dba\u5dbc\u5dbd\u5dcb\u5dd2\u5dd4" + "\u5dd6\u5df0\u5e25\u5e2b\u5e33\u5e36\u5e40" + "\u5e43\u5e57\u5e58\u5e5f\u5e63\u5e6b\u5e6c\u5e79" + "\u5e7e\u5eab\u5ec1\u5ec2\u5ec4\u5ec8\u5eda" + "\u5edd\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee9\u5eec" + "\u5ef3\u5efb\u5f12\u5f14\u5f33\u5f35\u5f37" + "\u5f46\u5f48\u5f4c\u5f4e\u5f59\u5f5e\u5f65\u5f7f" + "\u5f8c\u5f91\u5f9e\u5fa0\u5fa9\u5fac\u5fb9" + "\u6035\u6046\u6065\u6085\u609e\u60b3\u60b5\u60b6" + "\u60bd\u60e1\u60f1\u60f2\u60fb\u611b\u611c" + "\u6128\u6134\u6137\u613e\u6144\u6147\u614b\u614d" + "\u6158\u615a\u615f\u6163\u6164\u616a\u616b" + "\u616e\u6173\u6176\u617c\u617e\u6182\u618a\u6190" + "\u6191\u6192\u619a\u61a4\u61ab\u61ae\u61b2" + "\u61b6\u61c3\u61c7\u61c9\u61cc\u61cd\u61de\u61df" + "\u61e3\u61e8\u61ee\u61f2\u61f6\u61f7\u61f8" + "\u61fa\u61fc\u61fe\u6200\u6207\u6214\u6227\u6229" + "\u6230\u6231\u6232\u6236\u62cb\u6329\u633e" + "\u6368\u636b\u6372\u6383\u6384\u6397\u6399\u639b" + "\u63a1\u63c0\u63da\u63db\u63ee\u6406\u640d" + "\u6416\u6417\u6425\u6427\u6428\u6435\u6436\u643e" + "\u6440\u6451\u645c\u645f\u646f\u6473\u6476" + "\u647a\u647b\u6488\u648f\u6490\u6493\u649a\u649d" + "\u649f\u64a2\u64a3\u64a5\u64ab\u64b2\u64b3" + "\u64bb\u64be\u64bf\u64c1\u64c4\u64c7\u64ca\u64cb" + "\u64d3\u64d4\u64da\u64e0\u64e3\u64ec\u64ef" + "\u64f0\u64f1\u64f2\u64f4\u64f7\u64fa\u64fb\u64fc" + "\u64fe\u6504\u6506\u650f\u6514\u6516\u6519" + "\u651b\u651c\u651d\u6522\u6523\u6524\u652a\u652c" + "\u6557\u6558\u6575\u6578\u6582\u6583\u6595" + "\u65ac\u65b7\u65bc\u6607\u6642\u6649\u665d\u6688" + "\u6689\u6698\u66a2\u66ab\u66b1\u66c4\u66c6" + "\u66c7\u66c9\u66cf\u66d6\u66e0\u66e8\u66ec\u66f8" + "\u6703\u6727\u6756\u6771\u6792\u67f5\u687f" + "\u6894\u6898\u689d\u689f\u68b2\u68c4\u68d6\u68d7" + "\u68df\u68e7\u68f2\u68f6\u690f\u694a\u6953" + "\u6968\u696d\u6975\u6996\u69aa\u69ae\u69b2\u69bf" + "\u69cb\u69cd\u69d3\u69d6\u69e4\u69e7\u69e8" + "\u69f3\u6a01\u6a02\u6a05\u6a11\u6a13\u6a19\u6a1e" + "\u6a23\u6a38\u6a39\u6a3a\u6a48\u6a4b\u6a5f" + "\u6a62\u6a6b\u6a81\u6a89\u6a94\u6a9c\u6a9d\u6a9f" + "\u6aa2\u6aa3\u6aae\u6aaf\u6ab3\u6ab8\u6abb" + "\u6ad3\u6ada\u6adb\u6add\u6ade\u6adf\u6ae5\u6ae7" + "\u6ae8\u6aea\u6aeb\u6aec\u6af1\u6af3\u6af8" + "\u6afa\u6afb\u6b04\u6b0a\u6b0f\u6b12\u6b16\u6b1e" + "\u6b35\u6b3d\u6b4e\u6b50\u6b5b\u6b5f\u6b61" + "\u6b72\u6b77\u6b78\u6b7f\u6b98\u6b9e\u6ba4\u6ba8" + "\u6bab\u6bae\u6baf\u6bb0\u6bb2\u6bba\u6bbb" + "\u6bbc\u6bc0\u6bc6\u6bec\u6bff\u6c02\u6c08\u6c0c" + "\u6c23\u6c2b\u6c2c\u6c33\u6c39\u6c3e\u6c4e" + "\u6c59\u6c7a\u6c8d\u6c92\u6c96\u6cc1\u6d29\u6d36" + "\u6d79\u6d87\u6dbc\u6dd2\u6dda\u6de5\u6dea" + "\u6df5\u6df6\u6dfa\u6e19\u6e1b\u6e26\u6e2c\u6e3e" + "\u6e4a\u6e5e\u6e67\u6e6f\u6e88\u6e96\u6e9d" + "\u6eab\u6ebc\u6ec4\u6ec5\u6ecc\u6ece\u6eec\u6eef" + "\u6ef2\u6ef7\u6ef8\u6efb\u6efe\u6eff\u6f01" + "\u6f1a\u6f22\u6f23\u6f2c\u6f32\u6f35\u6f38\u6f3f" + "\u6f41\u6f51\u6f54\u6f59\u6f5b\u6f64\u6f6f" + "\u6f70\u6f77\u6f7f\u6f80\u6f86\u6f87\u6f97\u6fa0" + "\u6fa4\u6fa6\u6fa9\u6fae\u6fb1\u6fc1\u6fc3" + "\u6fd5\u6fd8\u6fdf\u6fe4\u6feb\u6fec\u6ff0\u6ff1" + "\u6ffa\u6ffc\u6ffe\u7005\u7006\u7007\u7009" + "\u700b\u700f\u7015\u7018\u701d\u701f\u7020\u7026" + "\u7027\u7028\u7030\u7032\u703e\u7043\u7044" + "\u7051\u7055\u7058\u705d\u7060\u7063\u7064\u7067" + "\u707d\u70ba\u70cf\u70f4\u7120\u7121\u7149" + "\u7152\u7159\u7162\u7165\u7169\u716c\u7171\u7185" + "\u7192\u7197\u71b1\u71b2\u71be\u71c1\u71c4" + "\u71c8\u71c9\u71d0\u71d2\u71d9\u71dc\u71df\u71e6" + "\u71ec\u71ed\u71f4\u71f6\u71fb\u71fc\u71fe" + "\u71ff\u720d\u7210\u721b\u722d\u7232\u723a\u723e" + "\u7240\u7246\u724b\u7258\u727d\u7296\u72a2" + "\u72a7\u72c0\u72f9\u72fd\u7319\u7336\u733b\u7341" + "\u7343\u7344\u7345\u734e\u7368\u736a\u736b" + "\u736e\u7370\u7371\u7372\u7375\u7377\u7378\u737a" + "\u737b\u737c\u7380\u73fe\u743a\u743f\u744b" + "\u7452\u7463\u7464\u7469\u746a\u746f\u7472\u7489" + "\u74a3\u74a6\u74ab\u74b0\u74bd\u74ca\u74cf" + "\u74d4\u74da\u750c\u7515\u751a\u7522\u7523\u755d" + "\u7562\u756b\u7570\u7576\u7587\u758a\u75c0" + "\u75d9\u75e0\u75fe\u7602\u760b\u760d\u7613\u761e" + "\u7621\u7627\u762e\u7632\u763a\u763b\u7642" + "\u7646\u7647\u7649\u7652\u7658\u765f\u7661\u7662" + "\u7664\u7665\u7667\u7669\u766c\u766d\u766e" + "\u7670\u7671\u7672\u767c\u7681\u769a\u76b0\u76b8" + "\u76ba\u76c3\u76dc\u76de\u76e1\u76e3\u76e4" + "\u76e7\u76ea\u7725\u773e\u774f\u775c\u775e\u776a" + "\u7787\u7798\u779c\u779e\u77ad\u77b6\u77bc" + "\u77d3\u77da\u77ef\u7802\u7832\u7843\u785c\u7864" + "\u7868\u786f\u78a9\u78ad\u78b3\u78b8\u78ba" + "\u78bc\u78d1\u78da\u78e3\u78e7\u78ef\u78fd\u7906" + "\u790e\u7919\u7921\u7926\u792a\u792b\u792c" + "\u792e\u7931\u7955\u797f\u798d\u798e\u7995\u79a1" + "\u79a6\u79aa\u79ae\u79b0\u79b1\u79bf\u79c8" + "\u7a05\u7a08\u7a0f\u7a1c\u7a1f\u7a2e\u7a31\u7a40" + "\u7a4c\u7a4d\u7a4e\u7a60\u7a61\u7a62\u7a69" + "\u7a6b\u7a6d\u7aa9\u7aaa\u7aae\u7aaf\u7ab5\u7ab6" + "\u7aba\u7ac4\u7ac5\u7ac7\u7ac8\u7aca\u7aea" + "\u7af6\u7b46\u7b4d\u7b67\u7b74\u7b87\u7b8b\u7b8e" + "\u7b8f\u7b9d\u7bc0\u7bc4\u7bc9\u7bcb\u7bd4" + "\u7be4\u7be9\u7bf3\u7c00\u7c06\u7c0d\u7c1e\u7c21" + "\u7c23\u7c2b\u7c37\u7c39\u7c3d\u7c3e\u7c43" + "\u7c4c\u7c50\u7c59\u7c5c\u7c5f\u7c60\u7c64\u7c69" + "\u7c6a\u7c6c\u7c6e\u7c72\u7ca7\u7cb5\u7cdd" + "\u7cde\u7ce7\u7cf0\u7cf2\u7cf4\u7cf6\u7cf9\u7cfe" + "\u7d00\u7d02\u7d04\u7d05\u7d06\u7d07\u7d08" + "\u7d09\u7d0b\u7d0d\u7d10\u7d13\u7d14\u7d15\u7d16" + "\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d" + "\u7d21\u7d2c\u7d2e\u7d30\u7d31\u7d32\u7d33\u7d35" + "\u7d39\u7d3a\u7d3c\u7d3f\u7d40\u7d42\u7d43" + "\u7d44\u7d45\u7d46\u7d4e\u7d50\u7d55\u7d5b\u7d5d" + "\u7d5e\u7d61\u7d62\u7d66\u7d68\u7d70\u7d71" + "\u7d72\u7d73\u7d76\u7d79\u7d81\u7d83\u7d86\u7d88" + "\u7d89\u7d8c\u7d8f\u7d90\u7d91\u7d93\u7d9c" + "\u7d9e\u7da0\u7da2\u7da3\u7dab\u7dac\u7dad\u7daf" + "\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db8" + "\u7db9\u7dba\u7dbb\u7dbd\u7dbe\u7dbf\u7dc4\u7dc7" + "\u7dca\u7dcb\u7dd1\u7dd2\u7dd3\u7dd4\u7dd7" + "\u7dd8\u7dd9\u7dda\u7ddd\u7dde\u7de0\u7de1\u7de3" + "\u7de6\u7de8\u7de9\u7dec\u7def\u7df1\u7df2" + "\u7df4\u7df6\u7df9\u7dfb\u7e08\u7e09\u7e0a\u7e0b" + "\u7e10\u7e11\u7e15\u7e17\u7e1b\u7e1d\u7e1e" + "\u7e1f\u7e23\u7e27\u7e2b\u7e2d\u7e2e\u7e31\u7e32" + "\u7e33\u7e34\u7e35\u7e36\u7e37\u7e39\u7e3d" + "\u7e3e\u7e43\u7e45\u7e46\u7e47\u7e52\u7e54\u7e55" + "\u7e5a\u7e5e\u7e61\u7e62\u7e69\u7e6a\u7e6b" + "\u7e6d\u7e6e\u7e6f\u7e70\u7e73\u7e78\u7e79\u7e7c" + "\u7e7d\u7e7e\u7e7f\u7e88\u7e8a\u7e8c\u7e8d" + "\u7e8f\u7e93\u7e94\u7e98\u7e9c\u7f3d\u7f48\u7f4c" + "\u7f4e\u7f63\u7f70\u7f75\u7f77\u7f85\u7f86" + "\u7f88\u7f8b\u7fa3\u7fa5\u7fa8\u7fa9\u7fb6\u7fd2" + "\u7feb\u7ff9\u7ffa\u802c\u802e\u8056\u805e" + "\u806f\u8070\u8072\u8073\u8075\u8076\u8077\u8079" + "\u807d\u807e\u8085\u8105\u8108\u811b\u8123" + "\u812b\u8139\u814e\u8156\u8161\u8166\u816b\u8173" + "\u8178\u8183\u819a\u81a0\u81a9\u81bd\u81be" + "\u81bf\u81c9\u81cd\u81cf\u81d8\u81da\u81df\u81e0" + "\u81e2\u81e5\u81e8\u81fa\u8207\u8208\u8209" + "\u820a\u8216\u8259\u8264\u8266\u826b\u8271\u8277" + "\u82bb\u8332\u834a\u8373\u838a\u8396\u83a2" + "\u83a7\u83d3\u83ef\u83f8\u8407\u840a\u842c\u8435" + "\u8449\u8452\u8464\u8466\u846f\u8477\u8490" + "\u8493\u8494\u849e\u84bc\u84c0\u84c6\u84cb\u84ee" + "\u84ef\u84fd\u8514\u851e\u8523\u8525\u8526" + "\u852d\u8534\u8541\u8546\u854e\u8552\u8553\u8555" + "\u8558\u8562\u8569\u856a\u856d\u8577\u8580" + "\u8588\u858a\u858c\u8591\u8594\u8598\u859f\u85a6" + "\u85a9\u85b0\u85b3\u85b4\u85ba\u85cd\u85ce" + "\u85dd\u85e5\u85ea\u85f4\u85f6\u85f7\u85f9\u85fa" + "\u8604\u8606\u8607\u860a\u860b\u861a\u861e" + "\u8622\u862d\u863a\u863f\u8646\u8655\u865b\u865c" + "\u865f\u8667\u866f\u86fa\u86fb\u8706\u8755" + "\u875f\u8766\u8768\u8778\u8784\u879e\u87a2\u87ae" + "\u87bb\u87bf\u87c4\u87c8\u87ce\u87e3\u87ec" + "\u87ef\u87f2\u87f6\u87fb\u8805\u8806\u880d\u8810" + "\u8811\u8814\u881f\u8823\u8827\u8828\u8831" + "\u8836\u883b\u8846\u884a\u8853\u8855\u885a\u885b" + "\u885d\u889e\u88b4\u88ca\u88cf\u88dc\u88dd" + "\u88e1\u88fd\u8907\u890c\u8918\u8932\u8933\u8938" + "\u893b\u8947\u894f\u8956\u895d\u8960\u8964" + "\u896a\u896c\u896f\u8972\u8988\u898b\u898e\u898f" + "\u8993\u8996\u8998\u89a1\u89a5\u89a6\u89aa" + "\u89ac\u89af\u89b2\u89b7\u89ba\u89bd\u89bf\u89c0" + "\u89f4\u89f6\u89f8\u8a01\u8a02\u8a03\u8a08" + "\u8a0a\u8a0c\u8a0e\u8a10\u8a12\u8a13\u8a15\u8a16" + "\u8a17\u8a18\u8a1b\u8a1d\u8a1f\u8a22\u8a23" + "\u8a25\u8a29\u8a2a\u8a2d\u8a31\u8a34\u8a36\u8a3a" + "\u8a3b\u8a3c\u8a41\u8a46\u8a4e\u8a50\u8a52" + "\u8a54\u8a55\u8a56\u8a57\u8a58\u8a5b\u8a5e\u8a60" + "\u8a61\u8a62\u8a63\u8a66\u8a69\u8a6b\u8a6c" + "\u8a6d\u8a6e\u8a70\u8a71\u8a72\u8a73\u8a75\u8a7c" + "\u8a7f\u8a84\u8a85\u8a86\u8a87\u8a8c\u8a8d" + "\u8a91\u8a92\u8a95\u8a98\u8a9a\u8a9e\u8aa0\u8aa1" + "\u8aa3\u8aa4\u8aa5\u8aa6\u8aa8\u8aaa\u8aac" + "\u8ab0\u8ab2\u8ab6\u8ab9\u8abc\u8abe\u8abf\u8ac2" + "\u8ac4\u8ac7\u8ac9\u8acb\u8acd\u8acf\u8ad1" + "\u8ad2\u8ad6\u8ad7\u8adb\u8adc\u8add\u8ade\u8ae1" + "\u8ae2\u8ae4\u8ae6\u8ae7\u8aeb\u8aed\u8aee" + "\u8af1\u8af3\u8af6\u8af7\u8af8\u8afa\u8afc\u8afe" + "\u8b00\u8b01\u8b02\u8b04\u8b05\u8b0a\u8b0e" + "\u8b10\u8b14\u8b16\u8b17\u8b19\u8b1a\u8b1b\u8b1d" + "\u8b20\u8b21\u8b28\u8b2b\u8b2c\u8b2d\u8b33" + "\u8b39\u8b3e\u8b41\u8b45\u8b49\u8b4e\u8b4f\u8b56" + "\u8b58\u8b59\u8b5a\u8b5c\u8b5f\u8b6b\u8b6f" + "\u8b70\u8b74\u8b77\u8b78\u8b7d\u8b7e\u8b80\u8b8a" + "\u8b8c\u8b8e\u8b92\u8b93\u8b95\u8b96\u8b9a" + "\u8b9c\u8b9e\u8c48\u8c4e\u8c50\u8c54\u8c6c\u8c76" + "\u8c8d\u8c93\u8c99\u8c9d\u8c9e\u8c9f\u8ca0" + "\u8ca1\u8ca2\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac" + "\u8caf\u8cb0\u8cb2\u8cb3\u8cb4\u8cb6\u8cb7" + "\u8cb8\u8cba\u8cbb\u8cbc\u8cbd\u8cbf\u8cc0\u8cc1" + "\u8cc2\u8cc3\u8cc4\u8cc5\u8cc7\u8cc8\u8cca" + "\u8cd1\u8cd2\u8cd3\u8cd5\u8cd9\u8cda\u8cdc\u8cde" + "\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce6\u8ce7" + "\u8cea\u8ceb\u8cec\u8ced\u8cf0\u8cf4\u8cf5\u8cf8" + "\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8d04\u8d05" + "\u8d07\u8d08\u8d0a\u8d0b\u8d0d\u8d0f\u8d10\u8d13" + "\u8d14\u8d16\u8d17\u8d1b\u8d1c\u8d6c\u8d95" + "\u8d99\u8da8\u8db2\u8de1\u8de4\u8dfc\u8e10\u8e21" + "\u8e30\u8e34\u8e4c\u8e55\u8e5f\u8e63\u8e64" + "\u8e67\u8e7a\u8e82\u8e89\u8e8a\u8e8b\u8e8d\u8e91" + "\u8e92\u8e93\u8e95\u8e9a\u8ea1\u8ea5\u8ea6" + "\u8eaa\u8ec0\u8eca\u8ecb\u8ecc\u8ecd\u8ed1\u8ed2" + "\u8ed4\u8edb\u8edf\u8ee4\u8eeb\u8ef2\u8ef8" + "\u8ef9\u8efa\u8efb\u8efc\u8efe\u8f03\u8f05\u8f07" + "\u8f08\u8f09\u8f0a\u8f12\u8f13\u8f14\u8f15" + "\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f25\u8f26\u8f29" + "\u8f2a\u8f2c\u8f2f\u8f33\u8f38\u8f3b\u8f3e" + "\u8f3f\u8f40\u8f42\u8f44\u8f45\u8f46\u8f49\u8f4d" + "\u8f4e\u8f54\u8f5d\u8f5f\u8f61\u8f62\u8f64" + "\u8fa6\u8fad\u8fae\u8faf\u8fb2\u8ff4\u9015\u9019" + "\u9023\u9031\u9032\u904a\u904b\u904e\u9054" + "\u9055\u9059\u905c\u905e\u9060\u9069\u906f\u9072" + "\u9077\u9078\u907a\u907c\u9081\u9084\u9087" + "\u908a\u908f\u9090\u90df\u90f5\u9106\u9109\u9112" + "\u9114\u9116\u9127\u912d\u9130\u9132\u9134" + "\u9136\u913a\u9147\u9148\u9165\u9183\u9196\u919c" + "\u919e\u91ab\u91ac\u91b1\u91bc\u91c0\u91c1" + "\u91c3\u91c5\u91cb\u91d0\u91d2\u91d3\u91d4\u91d5" + "\u91d7\u91d8\u91d9\u91dd\u91e3\u91e4\u91e6" + "\u91e7\u91e9\u91f5\u91f7\u91f9\u91fa\u9200\u9201" + "\u9203\u9204\u9208\u9209\u920d\u920e\u9210" + "\u9211\u9212\u9214\u9215\u921e\u9223\u9225\u9226" + "\u9227\u922e\u9230\u9233\u9234\u9237\u9238" + "\u9239\u923a\u923d\u923e\u923f\u9240\u9245\u9248" + "\u9249\u924b\u924d\u9251\u9255\u9257\u925a" + "\u925b\u925e\u9262\u9264\u9266\u926c\u926d\u9276" + "\u9278\u927a\u927b\u927f\u9283\u9285\u928d" + "\u9291\u9293\u9296\u9298\u929a\u929b\u929c\u92a0" + "\u92a3\u92a5\u92a6\u92a8\u92a9\u92aa\u92ab" + "\u92ac\u92b1\u92b2\u92b3\u92b7\u92b9\u92bb\u92bc" + "\u92c1\u92c3\u92c5\u92c7\u92cc\u92cf\u92d2" + "\u92d9\u92dd\u92df\u92e3\u92e4\u92e5\u92e6\u92e8" + "\u92e9\u92ea\u92ed\u92ee\u92ef\u92f0\u92f1" + "\u92f6\u92f8\u92fc\u9301\u9304\u9306\u9307\u9308" + "\u930f\u9310\u9312\u9315\u9318\u9319\u931a" + "\u931b\u931f\u9320\u9321\u9322\u9326\u9328\u9329" + "\u932b\u932e\u932f\u9332\u9333\u9336\u9338" + "\u9340\u9341\u9343\u9346\u9347\u9348\u934a\u934b" + "\u934d\u9354\u9358\u935a\u935b\u9360\u9364" + "\u9365\u9369\u936c\u9370\u9375\u9376\u937a\u937e" + "\u9382\u9384\u9387\u938a\u9394\u9396\u9397" + "\u9398\u939a\u939b\u93a1\u93a2\u93a3\u93a6\u93a7" + "\u93a9\u93aa\u93ac\u93ae\u93b0\u93b2\u93b3" + "\u93b5\u93b8\u93bf\u93c3\u93c7\u93c8\u93cc\u93cd" + "\u93d0\u93d1\u93d7\u93d8\u93dc\u93dd\u93de" + "\u93df\u93e1\u93e2\u93e4\u93e8\u93f0\u93f5\u93f7" + "\u93f9\u93fd\u9403\u940b\u9410\u9412\u9413" + "\u9414\u9418\u9419\u941d\u9420\u9426\u9427\u9428" + "\u942b\u942e\u9432\u9433\u9435\u9436\u9438" + "\u943a\u943f\u9444\u944a\u944c\u9451\u9452\u9454" + "\u9455\u945e\u9460\u9463\u9465\u946d\u9470" + "\u9471\u9472\u9477\u9479\u947c\u947d\u947e\u947f" + "\u9481\u9577\u9580\u9582\u9583\u9586\u9588" + "\u9589\u958b\u958c\u958e\u958f\u9591\u9592\u9593" + "\u9594\u9598\u95a1\u95a2\u95a3\u95a5\u95a7" + "\u95a8\u95a9\u95ab\u95ac\u95ad\u95b1\u95b2\u95b6" + "\u95b9\u95bb\u95bc\u95bd\u95be\u95bf\u95c3" + "\u95c6\u95c7\u95c8\u95ca\u95cb\u95cc\u95cd\u95d0" + "\u95d2\u95d3\u95d4\u95d5\u95d6\u95d8\u95dc" + "\u95de\u95e0\u95e1\u95e2\u95e4\u95e5\u9628\u962a" + "\u9658\u965d\u965e\u9663\u9670\u9673\u9678" + "\u967d\u9684\u9689\u968a\u968e\u9695\u969b\u96a8" + "\u96aa\u96b1\u96b4\u96b8\u96bb\u96cb\u96d6" + "\u96d9\u96db\u96dc\u96de\u96e2\u96e3\u96f2\u96fb" + "\u9711\u9722\u9727\u973d\u9742\u9744\u9748" + "\u975a\u975c\u9766\u9768\u9777\u9780\u978f\u979d" + "\u97a6\u97bd\u97c1\u97c3\u97c6\u97c9\u97cb" + "\u97cc\u97cd\u97d3\u97d9\u97dc\u97de\u97ee\u97fb" + "\u97ff\u9801\u9802\u9803\u9805\u9806\u9807" + "\u9808\u980a\u980c\u980e\u980f\u9810\u9811\u9812" + "\u9813\u9817\u9818\u981c\u9821\u9824\u9826" + "\u982d\u982e\u9830\u9832\u9834\u9837\u9838\u9839" + "\u983b\u983d\u9846\u984c\u984d\u984e\u984f" + "\u9852\u9853\u9854\u9858\u9859\u985b\u985e\u9862" + "\u9865\u9867\u986b\u986c\u986f\u9870\u9871" + "\u9873\u9874\u98a8\u98ad\u98ae\u98af\u98b1\u98b3" + "\u98b6\u98b8\u98ba\u98bb\u98bc\u98c0\u98c4" + "\u98c6\u98c8\u98db\u98e0\u98e2\u98e3\u98e5\u98e9" + "\u98ea\u98eb\u98ed\u98ef\u98f2\u98f4\u98fc" + "\u98fd\u98fe\u98ff\u9903\u9904\u9905\u9909\u990a" + "\u990c\u990e\u990f\u9911\u9912\u9913\u9915" + "\u9916\u9918\u991a\u991b\u991c\u991e\u9921\u9928" + "\u992c\u9931\u9933\u9935\u9936\u9937\u993a" + "\u993c\u993d\u993e\u993f\u9941\u9943\u9945\u9948" + "\u9949\u994a\u994b\u994c\u9951\u9952\u9957" + "\u995c\u995e\u9962\u99ac\u99ad\u99ae\u99b1\u99b3" + "\u99b4\u99b9\u99c1\u99d0\u99d1\u99d2\u99d4" + "\u99d5\u99d8\u99d9\u99db\u99dd\u99df\u99e1\u99e2" + "\u99ed\u99f0\u99f1\u99f8\u99ff\u9a01\u9a02" + "\u9a05\u9a0c\u9a0d\u9a0e\u9a0f\u9a16\u9a19\u9a24" + "\u9a27\u9a2b\u9a2d\u9a2e\u9a30\u9a36\u9a37" + "\u9a38\u9a3e\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45" + "\u9a4a\u9a4c\u9a4d\u9a4f\u9a55\u9a57\u9a5a" + "\u9a5b\u9a5f\u9a62\u9a64\u9a65\u9a66\u9a6a\u9a6b" + "\u9aaf\u9acf\u9ad2\u9ad4\u9ad5\u9ad6\u9b00" + "\u9b06\u9b0d\u9b1a\u9b22\u9b25\u9b27\u9b28\u9b29" + "\u9b2d\u9b2e\u9b31\u9b4e\u9b58\u9b5a\u9b5b" + "\u9b62\u9b68\u9b6f\u9b74\u9b77\u9b7a\u9b81\u9b83" + "\u9b8a\u9b8b\u9b8d\u9b8e\u9b90\u9b91\u9b92" + "\u9b93\u9b9a\u9b9c\u9b9d\u9b9e\u9ba6\u9baa\u9bab" + "\u9bad\u9bae\u9bb3\u9bb6\u9bba\u9bc0\u9bc1" + "\u9bc7\u9bc9\u9bca\u9bd2\u9bd4\u9bd5\u9bd6\u9bdb" + "\u9bdd\u9be1\u9be2\u9be4\u9be7\u9be8\u9bea" + "\u9beb\u9bf0\u9bf4\u9bf7\u9bfd\u9bff\u9c01\u9c02" + "\u9c03\u9c08\u9c09\u9c0d\u9c0f\u9c10\u9c12" + "\u9c13\u9c1c\u9c1f\u9c20\u9c23\u9c25\u9c28\u9c29" + "\u9c2d\u9c2e\u9c31\u9c32\u9c33\u9c35\u9c37" + "\u9c39\u9c3a\u9c3b\u9c3c\u9c3e\u9c42\u9c45\u9c48" + "\u9c49\u9c52\u9c54\u9c56\u9c57\u9c58\u9c5d" + "\u9c5f\u9c60\u9c63\u9c64\u9c67\u9c68\u9c6d\u9c6f" + "\u9c77\u9c78\u9c7a\u9ce5\u9ce7\u9ce9\u9cec" + "\u9cf2\u9cf3\u9cf4\u9cf6\u9cfe\u9d06\u9d07\u9d09" + "\u9d12\u9d15\u9d1b\u9d1d\u9d1e\u9d1f\u9d23" + "\u9d26\u9d28\u9d2f\u9d30\u9d34\u9d37\u9d3b\u9d3f" + "\u9d41\u9d42\u9d43\u9d50\u9d51\u9d52\u9d53" + "\u9d5c\u9d5d\u9d60\u9d61\u9d6a\u9d6c\u9d6e\u9d6f" + "\u9d72\u9d77\u9d7e\u9d84\u9d87\u9d89\u9d8a" + "\u9d93\u9d96\u9d98\u9d9a\u9da1\u9da5\u9da9\u9daa" + "\u9dac\u9daf\u9db2\u9db4\u9db9\u9dba\u9dbb" + "\u9dbc\u9dc0\u9dc1\u9dc2\u9dc4\u9dc8\u9dca\u9dd3" + "\u9dd6\u9dd7\u9dd9\u9dda\u9de5\u9de6\u9deb" + "\u9def\u9df2\u9df3\u9df8\u9df9\u9dfa\u9dfd\u9dff" + "\u9e02\u9e07\u9e0c\u9e0f\u9e15\u9e18\u9e1a" + "\u9e1b\u9e1d\u9e1e\u9e75\u9e79\u9e7a\u9e7c\u9e7d" + "\u9e97\u9ea4\u9ea5\u9ea9\u9eaf\u9eb5\u9ebc" + "\u9ebd\u9ec3\u9ecc\u9ede\u9ee8\u9ef2\u9ef4\u9ef6" + "\u9ef7\u9efd\u9eff\u9f07\u9f08\u9f09\u9f15" + "\u9f34\u9f4a\u9f4b\u9f4e\u9f4f\u9f52\u9f54\u9f55" + "\u9f57\u9f59\u9f5c\u9f5f\u9f60\u9f61\u9f63" + "\u9f66\u9f67\u9f69\u9f6a\u9f6c\u9f72\u9f76\u9f77" + "\u9f8d\u9f8e\u9f90\u9f94\u9f95\u9f9c]"; + + // Create UnicodeSets for zh-Hans and zh-Hant for later reference. + UErrorCode status = U_ZERO_ERROR; + hans_set_.reset(new icu::UnicodeSet( + icu::UnicodeString::fromUTF8(hans_codepoints), status)); + DVLOG(1) << u_errorName(status); + hant_set_.reset(new icu::UnicodeSet( + icu::UnicodeString::fromUTF8(hant_codepoints), status)); + DVLOG(1) << u_errorName(status); + + // Make these sets immutable. This keeps the class threadsafe and + // makes certain operations on these sets faster. + hans_set_->freeze(); + hant_set_->freeze(); } bool ChineseScriptClassifier::IsInitialized() const { - return hans2hant_ && hant2hans_; + return hans_set_ && hant_set_; } ChineseScriptClassifier::~ChineseScriptClassifier() {} @@ -61,56 +786,21 @@ base::IsUnicodeWhitespace), input_subset.end()); - // Convert two copies of the input to icu::UnicodeString. Two copies are - // necessary because transliteration happens in place only. - icu::UnicodeString original_input = + // Convert the input to icu::UnicodeString so we can iterate over codepoints. + icu::UnicodeString input_codepoints = icu::UnicodeString::fromUTF8(input_subset); - icu::UnicodeString hant_input = icu::UnicodeString::fromUTF8(input_subset); - icu::UnicodeString hans_input = icu::UnicodeString::fromUTF8(input_subset); - - // Get the zh-Hant version of this input. - hans2hant_->transliterate(hant_input); - // Get the zh-Hans version of this input. - hant2hans_->transliterate(hans_input); - - // Debugging only: show the input, the Hant version, and the Hans version. - if (VLOG_IS_ON(1)) { - std::string hant_string; - std::string hans_string; - hans_input.toUTF8String(hans_string); - hant_input.toUTF8String(hant_string); - DVLOG(1) << "Original input:\n" << input_subset; - DVLOG(1) << "zh-Hant output:\n" << hant_string; - DVLOG(1) << "zh-Hans output:\n" << hans_string; - } // Count matches between the original input chars and the Hant and Hans // versions of the input. int hant_count = 0; int hans_count = 0; - // Iterate over all chars in the original input and compute matches between - // the Hant version and the Hans version. - // - // All segments (original, Hant, and Hans) should have the same length, but - // in case of some corner case or bug in which they turn out not to be, - // we compute the minimum length we are allowed to traverse. - const int min_length = - std::min(original_input.length(), - std::min(hans_input.length(), hant_input.length())); - for (int index = 0; index < min_length; ++index) { - const auto original_char = original_input.charAt(index); - const auto hans_char = hans_input.charAt(index); - const auto hant_char = hant_input.charAt(index); - if (hans_char == hant_char) { - continue; - } else if (original_char == hans_char) { - // Hans-specific char found. + for (int index = 0; index < input_codepoints.length(); ++index) { + const auto codepoint = input_codepoints.charAt(index); + if (hans_set_->contains(codepoint)) ++hans_count; - } else if (original_char == hant_char) { - // Hant-specific char found. + if (hant_set_->contains(codepoint)) ++hant_count; - } } DVLOG(1) << "Found " << hans_count << " zh-Hans chars in input"; DVLOG(1) << "Found " << hant_count << " zh-Hant chars in input";
diff --git a/components/translate/core/language_detection/chinese_script_classifier.h b/components/translate/core/language_detection/chinese_script_classifier.h index 1063063..f93cc3c1 100644 --- a/components/translate/core/language_detection/chinese_script_classifier.h +++ b/components/translate/core/language_detection/chinese_script_classifier.h
@@ -7,14 +7,14 @@ #include <memory> #include <string> -#include "third_party/icu/source/i18n/unicode/translit.h" +#include "third_party/icu/source/common/unicode/uniset.h" namespace translate { class ChineseScriptClassifier { public: - // Initializes both the Hant-to-Hans ICU transliterator and the - // Hans-to-Hant ICU transliterator. + // Initializes both the zh-Hans and zh-Hant UnicodeSets used for + // lookup when Classify is called. ChineseScriptClassifier(); ~ChineseScriptClassifier(); @@ -31,11 +31,11 @@ bool IsInitialized() const; private: - // ICU Transliterator that does Hans to Hant conversion. - std::unique_ptr<icu::Transliterator> hans2hant_; + // Set of chars generally unique to zh-Hans. + std::unique_ptr<icu::UnicodeSet> hans_set_; - // ICU Transliterator that does Hant to Hans conversion. - std::unique_ptr<icu::Transliterator> hant2hans_; + // Set of chars generally unique to zh-Hant. + std::unique_ptr<icu::UnicodeSet> hant_set_; }; } // namespace translate
diff --git a/content/browser/frame_host/debug_urls.cc b/content/browser/frame_host/debug_urls.cc index a3fae24..bcf53d5 100644 --- a/content/browser/frame_host/debug_urls.cc +++ b/content/browser/frame_host/debug_urls.cc
@@ -170,15 +170,19 @@ GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */, base::Bind([](GpuProcessHost* host) { - host->gpu_service()->DestroyAllChannels(); + if (host) + host->gpu_service()->DestroyAllChannels(); })); return true; } if (url == kChromeUIGpuCrashURL) { - GpuProcessHost::CallOnIO( - GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */, - base::Bind([](GpuProcessHost* host) { host->gpu_service()->Crash(); })); + GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, + false /* force_create */, + base::Bind([](GpuProcessHost* host) { + if (host) + host->gpu_service()->Crash(); + })); return true; } @@ -187,16 +191,20 @@ GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */, base::Bind([](GpuProcessHost* host) { - host->gpu_service()->ThrowJavaException(); + if (host) + host->gpu_service()->ThrowJavaException(); })); return true; } #endif if (url == kChromeUIGpuHangURL) { - GpuProcessHost::CallOnIO( - GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */, - base::Bind([](GpuProcessHost* host) { host->gpu_service()->Hang(); })); + GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, + false /* force_create */, + base::Bind([](GpuProcessHost* host) { + if (host) + host->gpu_service()->Hang(); + })); return true; }
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc index 5bd58166..4d8ac44 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -276,6 +276,8 @@ } void RequestVideoMemoryUsageStats(GpuProcessHost* host) { + if (!host) + return; host->gpu_service()->GetVideoMemoryUsageStats( base::Bind(&OnVideoMemoryUsageStats)); }
diff --git a/content/browser/gpu/gpu_ipc_browsertests.cc b/content/browser/gpu/gpu_ipc_browsertests.cc index 458e847d..492ad85b 100644 --- a/content/browser/gpu/gpu_ipc_browsertests.cc +++ b/content/browser/gpu/gpu_ipc_browsertests.cc
@@ -10,6 +10,7 @@ #include "content/browser/gpu/browser_gpu_channel_host_factory.h" #include "content/browser/gpu/gpu_process_host.h" #include "content/public/browser/gpu_data_manager.h" +#include "content/public/browser/gpu_utils.h" #include "content/public/common/content_switches.h" #include "content/public/test/content_browser_test.h" #include "services/ui/gpu/interfaces/gpu_service.mojom.h" @@ -284,9 +285,12 @@ base::Bind(&BrowserGpuChannelHostFactoryTest::OnContextLost, base::Unretained(this), run_loop.QuitClosure(), &counter)); EXPECT_TRUE(provider->BindToCurrentThread()); - GpuProcessHost::CallOnIO( - GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */, - base::Bind([](GpuProcessHost* host) { host->gpu_service()->Crash(); })); + GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, + false /* force_create */, + base::Bind([](GpuProcessHost* host) { + if (host) + host->gpu_service()->Crash(); + })); run_loop.Run(); EXPECT_EQ(1, counter); @@ -295,4 +299,14 @@ EXPECT_TRUE(IsChannelEstablished()); } +using GpuProcessHostBrowserTest = BrowserGpuChannelHostFactoryTest; + +IN_PROC_BROWSER_TEST_F(GpuProcessHostBrowserTest, Shutdown) { + DCHECK(!IsChannelEstablished()); + EstablishAndWait(); + base::RunLoop run_loop; + StopGpuProcess(run_loop.QuitClosure()); + run_loop.Run(); +} + } // namespace content
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc index 1252f77..ec7cd53 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc
@@ -200,8 +200,7 @@ bool force_create, const base::Callback<void(GpuProcessHost*)>& callback) { GpuProcessHost* host = GpuProcessHost::Get(kind, force_create); - if (host) - callback.Run(host); + callback.Run(host); } #if defined(USE_OZONE) @@ -988,10 +987,6 @@ process_->ForceShutdown(); } -void GpuProcessHost::StopGpuProcess() { - Send(new GpuMsg_Finalize()); -} - bool GpuProcessHost::LaunchGpuProcess(gpu::GpuPreferences* gpu_preferences) { const base::CommandLine& browser_command_line = *base::CommandLine::ForCurrentProcess();
diff --git a/content/browser/gpu/gpu_process_host.h b/content/browser/gpu/gpu_process_host.h index 167b4d2..973e14e5 100644 --- a/content/browser/gpu/gpu_process_host.h +++ b/content/browser/gpu/gpu_process_host.h
@@ -101,8 +101,9 @@ IPC::Message* message); // Helper function to run a callback on the IO thread. The callback receives - // the appropriate GpuProcessHost instance. If |force_create| is false, and no - // GpuProcessHost instance exists, then the callback is never called. + // the appropriate GpuProcessHost instance. Note that the callback can be + // called with a null host (e.g. when |force_create| is false, and no + // GpuProcessHost instance exists). CONTENT_EXPORT static void CallOnIO( GpuProcessKind kind, bool force_create, @@ -157,9 +158,6 @@ // Forcefully terminates the GPU process. void ForceShutdown(); - // Asks the GPU process to stop by itself. - void StopGpuProcess(); - void LoadedShader(const std::string& key, const std::string& data); ui::mojom::GpuService* gpu_service() { return gpu_service_ptr_.get(); }
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.cc b/content/browser/gpu/gpu_process_host_ui_shim.cc index ceab9a2..499d789a 100644 --- a/content/browser/gpu/gpu_process_host_ui_shim.cc +++ b/content/browser/gpu/gpu_process_host_ui_shim.cc
@@ -43,12 +43,6 @@ base::LazyInstance<IDMap<GpuProcessHostUIShim*>>::DestructorAtExit g_hosts_by_id = LAZY_INSTANCE_INITIALIZER; -void StopGpuProcessOnIO(int host_id) { - GpuProcessHost* host = GpuProcessHost::FromID(host_id); - if (host) - host->StopGpuProcess(); -} - } // namespace void RouteToGpuProcessHostUIShimTask(int host_id, const IPC::Message& msg) { @@ -121,17 +115,8 @@ return OnControlMessageReceived(message); } -void GpuProcessHostUIShim::StopGpuProcess(const base::Closure& callback) { - close_callback_ = callback; - - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(&StopGpuProcessOnIO, host_id_)); -} - GpuProcessHostUIShim::~GpuProcessHostUIShim() { DCHECK(CalledOnValidThread()); - if (!close_callback_.is_null()) - base::ResetAndReturn(&close_callback_).Run(); g_hosts_by_id.Pointer()->Remove(host_id_); }
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.h b/content/browser/gpu/gpu_process_host_ui_shim.h index 2032134..95f2f17 100644 --- a/content/browser/gpu/gpu_process_host_ui_shim.h +++ b/content/browser/gpu/gpu_process_host_ui_shim.h
@@ -51,9 +51,6 @@ CONTENT_EXPORT static GpuProcessHostUIShim* FromID(int host_id); - // Stops the GPU process. - CONTENT_EXPORT void StopGpuProcess(const base::Closure& callback); - // IPC::Listener implementation. // The GpuProcessHost causes this to be called on the UI thread to // dispatch the incoming messages from the GPU process, which are @@ -72,7 +69,6 @@ // The serial number of the GpuProcessHost / GpuProcessHostUIShim pair. int host_id_; - base::Closure close_callback_; }; } // namespace content
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc index 5bb81c4..032239f 100644 --- a/content/browser/renderer_host/compositor_impl_android.cc +++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -175,12 +175,6 @@ // specified // (IOW check that a <= 0 && rgb > 0 && rgb <= 565) then alpha should be // -1. - // TODO(liberato): This condition is memorized in ComositorView.java, to - // avoid using two surfaces temporarily during alpha <-> no alpha - // transitions. If these mismatch, then we risk a power regression if the - // SurfaceView is not marked as eOpaque (FORMAT_OPAQUE), and we have an - // EGL surface with an alpha channel. SurfaceFlinger needs at least one of - // those hints to optimize out alpha blending. attributes.alpha_size = 0; attributes.red_size = 5; attributes.green_size = 6;
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index f6f9f43b..ec25bde 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -417,7 +417,8 @@ } void WakeUpGpu(GpuProcessHost* host) { - DCHECK(host); + if (!host) + return; GpuDataManagerImpl* gpu_data = GpuDataManagerImpl::GetInstance(); if (gpu_data && gpu_data->IsDriverBugWorkaroundActive(gpu::WAKE_UP_GPU_BEFORE_DRAWING))
diff --git a/content/common/gpu_host_messages.h b/content/common/gpu_host_messages.h index f56899b..b7855a8 100644 --- a/content/common/gpu_host_messages.h +++ b/content/common/gpu_host_messages.h
@@ -89,9 +89,6 @@ // GPU Messages // These are messages from the browser to the GPU process. -// Tells the GPU process to shutdown itself. -IPC_MESSAGE_CONTROL0(GpuMsg_Finalize) - // Tells the GPU process to create a new gpu memory buffer. IPC_MESSAGE_CONTROL1(GpuMsg_CreateGpuMemoryBuffer, GpuMsg_CreateGpuMemoryBuffer_Params)
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc index 70e6190..fec69f1 100644 --- a/content/gpu/gpu_child_thread.cc +++ b/content/gpu/gpu_child_thread.cc
@@ -246,7 +246,6 @@ bool GpuChildThread::OnControlMessageReceived(const IPC::Message& msg) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(GpuChildThread, msg) - IPC_MESSAGE_HANDLER(GpuMsg_Finalize, OnFinalize) IPC_MESSAGE_HANDLER(GpuMsg_CollectGraphicsInfo, OnCollectGraphicsInfo) IPC_MESSAGE_HANDLER(GpuMsg_GpuSwitched, OnGpuSwitched) IPC_MESSAGE_UNHANDLED(handled = false) @@ -347,11 +346,6 @@ NOTREACHED(); } -void GpuChildThread::OnFinalize() { - // Quit the GPU process - base::MessageLoop::current()->QuitWhenIdle(); -} - void GpuChildThread::OnCollectGraphicsInfo() { if (dead_on_arrival_) return;
diff --git a/content/gpu/gpu_child_thread.h b/content/gpu/gpu_child_thread.h index d967925b..a4b1e76 100644 --- a/content/gpu/gpu_child_thread.h +++ b/content/gpu/gpu_child_thread.h
@@ -110,7 +110,6 @@ const std::string& group_name) override; // Message handlers. - void OnFinalize(); void OnCollectGraphicsInfo(); void OnSetVideoMemoryWindowCount(uint32_t window_count);
diff --git a/content/public/browser/gpu_utils.cc b/content/public/browser/gpu_utils.cc index 19c6ab65..245da16 100644 --- a/content/public/browser/gpu_utils.cc +++ b/content/public/browser/gpu_utils.cc
@@ -5,7 +5,9 @@ #include "content/public/browser/gpu_utils.h" #include "base/command_line.h" +#include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" +#include "content/browser/gpu/gpu_process_host.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "gpu/command_buffer/service/gpu_switches.h" @@ -24,6 +26,20 @@ return base::StringToUint(switch_value, value); } +void RunTaskOnTaskRunner( + scoped_refptr<base::SingleThreadTaskRunner> task_runner, + const base::Closure& callback) { + task_runner->PostTask(FROM_HERE, callback); +} + +void StopGpuProcessImpl(const base::Closure& callback, + content::GpuProcessHost* host) { + if (host) + host->gpu_service()->Stop(callback); + else + callback.Run(); +} + } // namespace namespace content { @@ -116,4 +132,13 @@ return gpu_preferences; } +void StopGpuProcess(const base::Closure& callback) { + content::GpuProcessHost::CallOnIO( + content::GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, + false /* force_create */, + base::Bind(&StopGpuProcessImpl, + base::Bind(RunTaskOnTaskRunner, + base::ThreadTaskRunnerHandle::Get(), callback))); +} + } // namespace content
diff --git a/content/public/browser/gpu_utils.h b/content/public/browser/gpu_utils.h index 84e7808..cc12e5b 100644 --- a/content/public/browser/gpu_utils.h +++ b/content/public/browser/gpu_utils.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_ #define CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_ +#include "base/callback_forward.h" #include "content/common/content_export.h" #include "gpu/command_buffer/service/gpu_preferences.h" @@ -12,6 +13,8 @@ CONTENT_EXPORT const gpu::GpuPreferences GetGpuPreferencesFromCommandLine(); +CONTENT_EXPORT void StopGpuProcess(const base::Closure& callback); + } // namespace content #endif // CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_
diff --git a/device/vr/BUILD.gn b/device/vr/BUILD.gn index 622258f0..27cd5c38 100644 --- a/device/vr/BUILD.gn +++ b/device/vr/BUILD.gn
@@ -42,6 +42,7 @@ deps += [ "//base", + "//gpu/ipc/common:interfaces", "//mojo/public/cpp/bindings", "//ui/gfx", ] @@ -99,6 +100,7 @@ ] public_deps = [ + "//gpu/ipc/common:interfaces", "//mojo/common:common_custom_types", ]
diff --git a/device/vr/DEPS b/device/vr/DEPS index d8c8cee..c0b9fe7 100644 --- a/device/vr/DEPS +++ b/device/vr/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+gpu/command_buffer/common/mailbox_holder.h", "+jni", "+third_party/WebKit/public/platform/WebGamepads.h", "+third_party/WebKit/public/platform/modules/vr/vr_service.mojom.h",
diff --git a/device/vr/android/gvr/gvr_delegate.h b/device/vr/android/gvr/gvr_delegate.h index ed31de33..0491d75 100644 --- a/device/vr/android/gvr/gvr_delegate.h +++ b/device/vr/android/gvr/gvr_delegate.h
@@ -12,15 +12,15 @@ namespace device { -constexpr gvr::Sizei kInvalidRenderTargetSize = {0, 0}; - class DEVICE_VR_EXPORT GvrDelegate { public: virtual void SetWebVRSecureOrigin(bool secure_origin) = 0; - virtual void SubmitWebVRFrame() = 0; + virtual void SubmitWebVRFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) = 0; virtual void UpdateWebVRTextureBounds(int16_t frame_index, const gvr::Rectf& left_bounds, - const gvr::Rectf& right_bounds) = 0; + const gvr::Rectf& right_bounds, + const gvr::Sizei& source_size) = 0; virtual void OnVRVsyncProviderRequest( mojom::VRVSyncProviderRequest request) = 0; virtual void UpdateVSyncInterval(int64_t timebase_nanos, @@ -44,6 +44,7 @@ virtual void SetDeviceProvider(GvrDeviceProvider* device_provider) = 0; virtual void ClearDeviceProvider() = 0; virtual void RequestWebVRPresent( + mojom::VRSubmitFrameClientPtr submit_client, const base::Callback<void(bool)>& callback) = 0; virtual void ExitWebVRPresent() = 0; virtual GvrDelegate* GetDelegate() = 0;
diff --git a/device/vr/android/gvr/gvr_device.cc b/device/vr/android/gvr/gvr_device.cc index f0a86e2..c0b8e5a 100644 --- a/device/vr/android/gvr/gvr_device.cc +++ b/device/vr/android/gvr/gvr_device.cc
@@ -40,8 +40,9 @@ delegate->ResetPose(); } -void GvrDevice::RequestPresent(const base::Callback<void(bool)>& callback) { - gvr_provider_->RequestPresent(callback); +void GvrDevice::RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) { + gvr_provider_->RequestPresent(std::move(submit_client), callback); } void GvrDevice::SetSecureOrigin(bool secure_origin) { @@ -56,15 +57,19 @@ OnExitPresent(); } -void GvrDevice::SubmitFrame(mojom::VRPosePtr pose) { +void GvrDevice::SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) { GvrDelegate* delegate = GetGvrDelegate(); - if (delegate) - delegate->SubmitWebVRFrame(); + if (delegate) { + delegate->SubmitWebVRFrame(frame_index, mailbox); + } } void GvrDevice::UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr left_bounds, - mojom::VRLayerBoundsPtr right_bounds) { + mojom::VRLayerBoundsPtr right_bounds, + int16_t source_width, + int16_t source_height) { GvrDelegate* delegate = GetGvrDelegate(); if (!delegate) return; @@ -81,8 +86,9 @@ right_gvr_bounds.right = right_bounds->left + right_bounds->width; right_gvr_bounds.bottom = 1.0f - (right_bounds->top + right_bounds->height); + gvr::Sizei source_size = {source_width, source_height}; delegate->UpdateWebVRTextureBounds(frame_index, left_gvr_bounds, - right_gvr_bounds); + right_gvr_bounds, source_size); } void GvrDevice::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) { @@ -103,7 +109,7 @@ } GvrDelegate* GvrDevice::GetGvrDelegate() { - GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance(); + GvrDelegateProvider* delegate_provider = gvr_provider_->GetDelegateProvider(); if (delegate_provider) return delegate_provider->GetDelegate(); return nullptr;
diff --git a/device/vr/android/gvr/gvr_device.h b/device/vr/android/gvr/gvr_device.h index 55fb95f3..4478e1f5 100644 --- a/device/vr/android/gvr/gvr_device.h +++ b/device/vr/android/gvr/gvr_device.h
@@ -23,14 +23,18 @@ const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) override; void ResetPose() override; - void RequestPresent(const base::Callback<void(bool)>& callback) override; + void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) override; void SetSecureOrigin(bool secure_origin) override; void ExitPresent() override; - void SubmitFrame(mojom::VRPosePtr pose) override; + void SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) override; void UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr left_bounds, - mojom::VRLayerBoundsPtr right_bounds) override; + mojom::VRLayerBoundsPtr right_bounds, + int16_t source_width, + int16_t source_height) override; void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override; void OnDelegateChanged();
diff --git a/device/vr/android/gvr/gvr_device_provider.cc b/device/vr/android/gvr/gvr_device_provider.cc index 4aff6ce..9b5be90 100644 --- a/device/vr/android/gvr/gvr_device_provider.cc +++ b/device/vr/android/gvr/gvr_device_provider.cc
@@ -33,9 +33,14 @@ } void GvrDeviceProvider::GetDevices(std::vector<VRDevice*>* devices) { - Initialize(); - if (initialized_) - devices->push_back(vr_device_.get()); + devices->push_back(vr_device_.get()); +} + +device::GvrDelegateProvider* GvrDeviceProvider::GetDelegateProvider() { + device::GvrDelegateProvider* provider = + device::GvrDelegateProvider::GetInstance(); + Initialize(provider); + return provider; } void GvrDeviceProvider::Initialize() { @@ -43,41 +48,36 @@ // GvrDeviceProvider so we don't have to call this function multiple times. // Ideally the DelegateProvider would always be available, and GetInstance() // would create it. - if (initialized_) + Initialize(device::GvrDelegateProvider::GetInstance()); +} + +void GvrDeviceProvider::Initialize(device::GvrDelegateProvider* provider) { + if (!provider) return; - device::GvrDelegateProvider* delegate_provider = - device::GvrDelegateProvider::GetInstance(); - if (!delegate_provider) - return; - delegate_provider->SetDeviceProvider(this); - initialized_ = true; + provider->SetDeviceProvider(this); } void GvrDeviceProvider::RequestPresent( + mojom::VRSubmitFrameClientPtr submit_client, const base::Callback<void(bool)>& callback) { - Initialize(); - device::GvrDelegateProvider* delegate_provider = - device::GvrDelegateProvider::GetInstance(); + device::GvrDelegateProvider* delegate_provider = GetDelegateProvider(); if (!delegate_provider) return callback.Run(false); // RequestWebVRPresent is async as we may trigger a DON flow that pauses // Chrome. - delegate_provider->RequestWebVRPresent(callback); + delegate_provider->RequestWebVRPresent(std::move(submit_client), callback); } // VR presentation exit requested by the API. void GvrDeviceProvider::ExitPresent() { - Initialize(); - GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance(); + device::GvrDelegateProvider* delegate_provider = GetDelegateProvider(); if (delegate_provider) delegate_provider->ExitWebVRPresent(); } void GvrDeviceProvider::SetListeningForActivate(bool listening) { - Initialize(); - device::GvrDelegateProvider* delegate_provider = - device::GvrDelegateProvider::GetInstance(); + device::GvrDelegateProvider* delegate_provider = GetDelegateProvider(); if (!delegate_provider) return;
diff --git a/device/vr/android/gvr/gvr_device_provider.h b/device/vr/android/gvr/gvr_device_provider.h index 5793021..d215e603 100644 --- a/device/vr/android/gvr/gvr_device_provider.h +++ b/device/vr/android/gvr/gvr_device_provider.h
@@ -11,9 +11,11 @@ #include "base/macros.h" #include "device/vr/vr_device_provider.h" #include "device/vr/vr_export.h" +#include "device/vr/vr_service.mojom.h" namespace device { +class GvrDelegateProvider; class GvrDevice; class DEVICE_VR_EXPORT GvrDeviceProvider : public VRDeviceProvider { @@ -27,14 +29,17 @@ void SetListeningForActivate(bool listening) override; // Called from GvrDevice. - void RequestPresent(const base::Callback<void(bool)>& callback); + void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback); void ExitPresent(); + device::GvrDelegateProvider* GetDelegateProvider(); + GvrDevice* Device() { return vr_device_.get(); } private: + void Initialize(device::GvrDelegateProvider* provider); std::unique_ptr<GvrDevice> vr_device_; - bool initialized_ = false; DISALLOW_COPY_AND_ASSIGN(GvrDeviceProvider); };
diff --git a/device/vr/test/fake_vr_device.cc b/device/vr/test/fake_vr_device.cc index c6999050..9595e5ff 100644 --- a/device/vr/test/fake_vr_device.cc +++ b/device/vr/test/fake_vr_device.cc
@@ -62,7 +62,8 @@ void FakeVRDevice::ResetPose() {} -void FakeVRDevice::RequestPresent(const base::Callback<void(bool)>& callback) { +void FakeVRDevice::RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) { callback.Run(true); } @@ -72,11 +73,14 @@ OnExitPresent(); } -void FakeVRDevice::SubmitFrame(mojom::VRPosePtr pose) {} +void FakeVRDevice::SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) {} void FakeVRDevice::UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr leftBounds, - mojom::VRLayerBoundsPtr rightBounds) {} + mojom::VRLayerBoundsPtr rightBounds, + int16_t source_width, + int16_t source_height) {} void FakeVRDevice::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) {}
diff --git a/device/vr/test/fake_vr_device.h b/device/vr/test/fake_vr_device.h index 178610ea..16ddcdf9 100644 --- a/device/vr/test/fake_vr_device.h +++ b/device/vr/test/fake_vr_device.h
@@ -27,13 +27,17 @@ const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) override; void ResetPose() override; - void RequestPresent(const base::Callback<void(bool)>& callback) override; + void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) override; void SetSecureOrigin(bool secure_origin) override; void ExitPresent() override; - void SubmitFrame(mojom::VRPosePtr pose) override; + void SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) override; void UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr leftBounds, - mojom::VRLayerBoundsPtr rightBounds) override; + mojom::VRLayerBoundsPtr rightBounds, + int16_t source_width, + int16_t source_height) override; void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override; private:
diff --git a/device/vr/vr_device.cc b/device/vr/vr_device.cc index 03a9685..00e9425 100644 --- a/device/vr/vr_device.cc +++ b/device/vr/vr_device.cc
@@ -19,12 +19,6 @@ VRDevice::~VRDevice() {} -void VRDevice::RequestPresent(const base::Callback<void(bool)>& callback) { - callback.Run(true); -} - -void VRDevice::SetSecureOrigin(bool secure_origin) {} - void VRDevice::AddDisplay(VRDisplayImpl* display) { displays_.insert(display); }
diff --git a/device/vr/vr_device.h b/device/vr/vr_device.h index be836ee..ae7fefc6 100644 --- a/device/vr/vr_device.h +++ b/device/vr/vr_device.h
@@ -27,13 +27,17 @@ const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) = 0; virtual void ResetPose() = 0; - virtual void RequestPresent(const base::Callback<void(bool)>& callback) = 0; + virtual void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client, + const base::Callback<void(bool)>& callback) = 0; virtual void SetSecureOrigin(bool secure_origin) = 0; virtual void ExitPresent() = 0; - virtual void SubmitFrame(mojom::VRPosePtr pose) = 0; + virtual void SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) = 0; virtual void UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr left_bounds, - mojom::VRLayerBoundsPtr right_bounds) = 0; + mojom::VRLayerBoundsPtr right_bounds, + int16_t source_width, + int16_t source_height) = 0; virtual void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) = 0; virtual void AddDisplay(VRDisplayImpl* display);
diff --git a/device/vr/vr_display_impl.cc b/device/vr/vr_display_impl.cc index 37f8ec9..9a3bf63 100644 --- a/device/vr/vr_display_impl.cc +++ b/device/vr/vr_display_impl.cc
@@ -41,15 +41,17 @@ } void VRDisplayImpl::RequestPresent(bool secure_origin, + mojom::VRSubmitFrameClientPtr submit_client, const RequestPresentCallback& callback) { if (!device_->IsAccessAllowed(this)) { callback.Run(false); return; } - device_->RequestPresent(base::Bind(&VRDisplayImpl::RequestPresentResult, - weak_ptr_factory_.GetWeakPtr(), callback, - secure_origin)); + device_->RequestPresent( + std::move(submit_client), + base::Bind(&VRDisplayImpl::RequestPresentResult, + weak_ptr_factory_.GetWeakPtr(), callback, secure_origin)); } void VRDisplayImpl::RequestPresentResult(const RequestPresentCallback& callback, @@ -67,20 +69,24 @@ device_->ExitPresent(); } -void VRDisplayImpl::SubmitFrame(mojom::VRPosePtr pose) { +void VRDisplayImpl::SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) { if (!device_->CheckPresentingDisplay(this)) return; - device_->SubmitFrame(std::move(pose)); + device_->SubmitFrame(frame_index, mailbox); } void VRDisplayImpl::UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr left_bounds, - mojom::VRLayerBoundsPtr right_bounds) { + mojom::VRLayerBoundsPtr right_bounds, + int16_t source_width, + int16_t source_height) { if (!device_->IsAccessAllowed(this)) return; device_->UpdateLayerBounds(frame_index, std::move(left_bounds), - std::move(right_bounds)); + std::move(right_bounds), source_width, + source_height); } void VRDisplayImpl::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) {
diff --git a/device/vr/vr_display_impl.h b/device/vr/vr_display_impl.h index 7116d52..bf0b7ab1 100644 --- a/device/vr/vr_display_impl.h +++ b/device/vr/vr_display_impl.h
@@ -32,13 +32,17 @@ void ResetPose() override; void RequestPresent(bool secure_origin, + mojom::VRSubmitFrameClientPtr submit_client, const RequestPresentCallback& callback) override; void ExitPresent() override; - void SubmitFrame(mojom::VRPosePtr pose) override; + void SubmitFrame(int16_t frame_index, + const gpu::MailboxHolder& mailbox) override; void UpdateLayerBounds(int16_t frame_index, mojom::VRLayerBoundsPtr left_bounds, - mojom::VRLayerBoundsPtr right_bounds) override; + mojom::VRLayerBoundsPtr right_bounds, + int16_t source_width, + int16_t source_height) override; void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override; void RequestPresentResult(const RequestPresentCallback& callback,
diff --git a/device/vr/vr_display_impl_unittest.cc b/device/vr/vr_display_impl_unittest.cc index f53fde62..05cad2f 100644 --- a/device/vr/vr_display_impl_unittest.cc +++ b/device/vr/vr_display_impl_unittest.cc
@@ -47,9 +47,14 @@ } void RequestPresent(VRDisplayImpl* display_impl) { + // TODO(klausw,mthiesse): set up a VRSubmitFrameClient here? Currently, + // the FakeVRDisplay doesn't access the submit client, so a nullptr + // is ok. + device::mojom::VRSubmitFrameClientPtr submit_client = nullptr; display_impl->RequestPresent( - true, base::Bind(&VRDisplayImplTest::onPresentComplete, - base::Unretained(this))); + true, std::move(submit_client), + base::Bind(&VRDisplayImplTest::onPresentComplete, + base::Unretained(this))); } void ExitPresent(VRDisplayImpl* display_impl) { display_impl->ExitPresent(); }
diff --git a/device/vr/vr_service.mojom b/device/vr/vr_service.mojom index a77d4a9b..2eee52f 100644 --- a/device/vr/vr_service.mojom +++ b/device/vr/vr_service.mojom
@@ -5,6 +5,8 @@ module device.mojom; import "mojo/common/time.mojom"; +import "gpu/ipc/common/mailbox_holder.mojom"; +import "gpu/ipc/common/sync_token.mojom"; // A field of view, given by 4 degrees describing the view from a center point. struct VRFieldOfView { @@ -84,19 +86,25 @@ VRDisplayInfo displayInfo); }; +interface VRSubmitFrameClient { + OnSubmitFrameTransferred(); + OnSubmitFrameRendered(); +}; + interface VRDisplay { ResetPose(); - RequestPresent(bool secureOrigin) => (bool success); + RequestPresent(bool secureOrigin, VRSubmitFrameClient client) => (bool success); ExitPresent(); - SubmitFrame(VRPose? pose); + SubmitFrame(int16 frameId, gpu.mojom.MailboxHolder mailboxHolder); UpdateLayerBounds(int16 frameId, VRLayerBounds leftBounds, - VRLayerBounds rightBounds); + VRLayerBounds rightBounds, int16 sourceWidth, + int16 sourceHeight); GetVRVSyncProvider(VRVSyncProvider& request); }; interface VRVSyncProvider { - enum Status { SUCCESS, RETRY }; + enum Status { SUCCESS, CLOSING }; // The frameId maps a VSync to a frame arriving from the compositor. IDs will // be reused after the frame arrives from the compositor. Negative IDs imply
diff --git a/extensions/common/api/events.json b/extensions/common/api/events.json index ba31dea..5c355c0f 100644 --- a/extensions/common/api/events.json +++ b/extensions/common/api/events.json
@@ -34,7 +34,7 @@ "actions": { "type": "array", "items": {"type": "any"}, - "description": "List of actions that are triggered if one of the condtions is fulfilled." + "description": "List of actions that are triggered if one of the conditions is fulfilled." }, "priority": { "type": "integer",
diff --git a/gpu/ipc/common/mailbox_holder.typemap b/gpu/ipc/common/mailbox_holder.typemap index 4644f321..06d9d72 100644 --- a/gpu/ipc/common/mailbox_holder.typemap +++ b/gpu/ipc/common/mailbox_holder.typemap
@@ -8,4 +8,8 @@ deps = [ "//gpu/ipc/common:struct_traits", ] +public_deps = [ + "//gpu/command_buffer/common", + "//mojo/public/cpp/bindings", +] type_mappings = [ "gpu.mojom.MailboxHolder=::gpu::MailboxHolder" ]
diff --git a/gpu/ipc/common/mailbox_holder_for_blink.typemap b/gpu/ipc/common/mailbox_holder_for_blink.typemap new file mode 100644 index 0000000..976595e7 --- /dev/null +++ b/gpu/ipc/common/mailbox_holder_for_blink.typemap
@@ -0,0 +1,13 @@ +# 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. + +mojom = "//gpu/ipc/common/mailbox_holder.mojom" +public_headers = [ "//gpu/command_buffer/common/mailbox_holder.h" ] +traits_headers = [ "//gpu/ipc/common/mailbox_holder_struct_traits.h" ] +public_deps = [ + "//gpu/command_buffer/common", + "//gpu/ipc/common:interfaces", + "//mojo/public/cpp/bindings", +] +type_mappings = [ "gpu.mojom.MailboxHolder=::gpu::MailboxHolder" ]
diff --git a/mash/OWNERS b/mash/OWNERS index e6a7642f..149470b 100644 --- a/mash/OWNERS +++ b/mash/OWNERS
@@ -2,3 +2,5 @@ erg@chromium.org msw@chromium.org sky@chromium.org + +# COMPONENT: UI>Shell
diff --git a/net/http/http_util.cc b/net/http/http_util.cc index 62bed8c..24f49e7 100644 --- a/net/http/http_util.cc +++ b/net/http/http_util.cc
@@ -10,6 +10,7 @@ #include <algorithm> #include "base/logging.h" +#include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_tokenizer.h" @@ -707,8 +708,8 @@ // Use '\0' as the canonical line terminator. If the input already contained // any embeded '\0' characters we will strip them first to avoid interpreting // them as line breaks. - raw_headers.erase(std::remove(raw_headers.begin(), raw_headers.end(), '\0'), - raw_headers.end()); + base::Erase(raw_headers, '\0'); + std::replace(raw_headers.begin(), raw_headers.end(), '\n', '\0'); return raw_headers;
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc index d1f87e9..8bd94fb 100644 --- a/net/nqe/network_quality_estimator.cc +++ b/net/nqe/network_quality_estimator.cc
@@ -808,6 +808,17 @@ effective_connection_type)); } +void NetworkQualityEstimator::ReportRTTsAndThroughputForTesting( + base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps) { + DCHECK(thread_checker_.CalledOnValidThread()); + + for (auto& observer : rtt_and_throughput_estimates_observer_list_) + observer.OnRTTOrThroughputEstimatesComputed(http_rtt, transport_rtt, + downstream_throughput_kbps); +} + bool NetworkQualityEstimator::RequestProvidesRTTObservation( const URLRequest& request) const { DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/net/nqe/network_quality_estimator.h b/net/nqe/network_quality_estimator.h index 696e9b0..d44c1a55 100644 --- a/net/nqe/network_quality_estimator.h +++ b/net/nqe/network_quality_estimator.h
@@ -160,6 +160,8 @@ // Returns the current effective connection type. virtual EffectiveConnectionType GetEffectiveConnectionType() const = 0; + virtual ~NetworkQualityProvider() {} + // Adds |observer| to a list of effective connection type observers. virtual void AddEffectiveConnectionTypeObserver( EffectiveConnectionTypeObserver* observer) = 0; @@ -168,7 +170,16 @@ virtual void RemoveEffectiveConnectionTypeObserver( EffectiveConnectionTypeObserver* observer) = 0; - virtual ~NetworkQualityProvider() {} + // Adds |observer| to the list of RTT and throughput estimate observers. + // |observer| would be notified of the current RTT and throughput estimates + // in the next message pump. + virtual void AddRTTAndThroughputEstimatesObserver( + RTTAndThroughputEstimatesObserver* observer) = 0; + + // Removes |observer| from the list of RTT and throughput estimate + // observers. + virtual void RemoveRTTAndThroughputEstimatesObserver( + RTTAndThroughputEstimatesObserver* observer) = 0; protected: NetworkQualityProvider() {} @@ -296,6 +307,11 @@ void ReportEffectiveConnectionTypeForTesting( EffectiveConnectionType effective_connection_type); + // Reports the RTTs and throughput to all RTTAndThroughputEstimatesObservers. + void ReportRTTsAndThroughputForTesting(base::TimeDelta http_rtt, + base::TimeDelta transport_rtt, + int32_t downstream_throughput_kbps); + // Adds and removes |observer| from the list of cache observers. void AddNetworkQualitiesCacheObserver( nqe::internal::NetworkQualityStore::NetworkQualitiesCacheObserver*
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc index 4eaad46..aaf3f86 100644 --- a/printing/backend/cups_helper.cc +++ b/printing/backend/cups_helper.cc
@@ -36,9 +36,17 @@ const char kDraftGray[] = "Draft.Gray"; const char kHighGray[] = "High.Gray"; -const char kDuplex[] = "Duplex"; -const char kDuplexNone[] = "None"; -const char kPageSize[] = "PageSize"; +constexpr char kDuplex[] = "Duplex"; +constexpr char kDuplexNone[] = "None"; +constexpr char kDuplexTumble[] = "DuplexTumble"; +constexpr char kPageSize[] = "PageSize"; + +// Brother printer specific options. +constexpr char kBrotherDuplex[] = "BRDuplex"; +constexpr char kBrotherMonoColor[] = "BRMonoColor"; +constexpr char kBrotherPrintQuality[] = "BRPrintQuality"; +constexpr char kFullColor[] = "FullColor"; +constexpr char kMono[] = "Mono"; const double kMicronsPerPoint = 10.0f * kHundrethsMMPerInch / kPointsPerInch; @@ -121,6 +129,34 @@ } } +void GetDuplexSettings(ppd_file_t* ppd, + bool* duplex_capable, + DuplexMode* duplex_default) { + ppd_choice_t* duplex_choice = ppdFindMarkedChoice(ppd, kDuplex); + if (!duplex_choice) { + ppd_option_t* option = ppdFindOption(ppd, kDuplex); + if (!option) + option = ppdFindOption(ppd, kBrotherDuplex); + if (!option) + return; + + duplex_choice = ppdFindChoice(option, option->defchoice); + } + + if (!duplex_choice) + return; + + *duplex_capable = true; + const char* choice = duplex_choice->choice; + if (base::EqualsCaseInsensitiveASCII(choice, kDuplexNone)) { + *duplex_default = SIMPLEX; + } else if (base::EqualsCaseInsensitiveASCII(choice, kDuplexTumble)) { + *duplex_default = SHORT_EDGE; + } else { + *duplex_default = LONG_EDGE; + } +} + bool GetBasicColorModelSettings(ppd_file_t* ppd, ColorModel* color_model_for_black, ColorModel* color_model_for_color, @@ -209,7 +245,7 @@ ColorModel* color_model_for_black, ColorModel* color_model_for_color, bool* color_is_default) { - // Samsung printers use "ColorMode" attribute in their ppds. + // Samsung printers use "ColorMode" attribute in their PPDs. ppd_option_t* color_mode_option = ppdFindOption(ppd, kColorMode); if (!color_mode_option) return false; @@ -233,11 +269,45 @@ return true; } +bool GetBrotherColorSettings(ppd_file_t* ppd, + ColorModel* color_model_for_black, + ColorModel* color_model_for_color, + bool* color_is_default) { + // Some Brother printers use "BRMonoColor" attribute in their PPDs. + // Some Brother printers use "BRPrintQuality" attribute in their PPDs. + ppd_option_t* color_mode_option = ppdFindOption(ppd, kBrotherMonoColor); + if (!color_mode_option) + color_mode_option = ppdFindOption(ppd, kBrotherPrintQuality); + if (!color_mode_option) + return false; + + if (ppdFindChoice(color_mode_option, kFullColor) || + ppdFindChoice(color_mode_option, kColor)) { + *color_model_for_color = BROTHER_COLOR_COLOR; + } + if (ppdFindChoice(color_mode_option, kBlack) || + ppdFindChoice(color_mode_option, kMono)) { + *color_model_for_black = BROTHER_COLOR_BLACK; + } + + ppd_choice_t* marked_choice = ppdFindMarkedChoice(ppd, kColorMode); + if (!marked_choice) { + marked_choice = + ppdFindChoice(color_mode_option, color_mode_option->defchoice); + } + if (marked_choice) { + *color_is_default = + !base::EqualsCaseInsensitiveASCII(marked_choice->choice, kBlack) && + !base::EqualsCaseInsensitiveASCII(marked_choice->choice, kMono); + } + return true; +} + bool GetHPColorSettings(ppd_file_t* ppd, ColorModel* color_model_for_black, ColorModel* color_model_for_color, bool* color_is_default) { - // HP printers use "Color/Color Model" attribute in their ppds. + // HP printers use "Color/Color Model" attribute in their PPDs. ppd_option_t* color_mode_option = ppdFindOption(ppd, kColor); if (!color_mode_option) return false; @@ -263,7 +333,7 @@ ColorModel* color_model_for_black, ColorModel* color_model_for_color, bool* color_is_default) { - // Canon printers use "ProcessColorModel" attribute in their ppds. + // Canon printers use "ProcessColorModel" attribute in their PPDs. ppd_option_t* color_mode_option = ppdFindOption(ppd, kProcessColorModel); if (!color_mode_option) return false; @@ -301,10 +371,11 @@ *is_color = is_color_device; return (is_color_device && GetBasicColorModelSettings(ppd, cm_black, cm_color, is_color)) || - GetPrintOutModeColorSettings(ppd, cm_black, cm_color, is_color) || - GetColorModeSettings(ppd, cm_black, cm_color, is_color) || - GetHPColorSettings(ppd, cm_black, cm_color, is_color) || - GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color); + GetPrintOutModeColorSettings(ppd, cm_black, cm_color, is_color) || + GetColorModeSettings(ppd, cm_black, cm_color, is_color) || + GetHPColorSettings(ppd, cm_black, cm_color, is_color) || + GetBrotherColorSettings(ppd, cm_black, cm_color, is_color) || + GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color); } // Default port for IPP print servers. @@ -377,20 +448,7 @@ caps.collate_default = true; caps.copies_capable = true; - ppd_choice_t* duplex_choice = ppdFindMarkedChoice(ppd, kDuplex); - if (!duplex_choice) { - ppd_option_t* option = ppdFindOption(ppd, kDuplex); - if (option) - duplex_choice = ppdFindChoice(option, option->defchoice); - } - - if (duplex_choice) { - caps.duplex_capable = true; - if (!base::EqualsCaseInsensitiveASCII(duplex_choice->choice, kDuplexNone)) - caps.duplex_default = LONG_EDGE; - else - caps.duplex_default = SIMPLEX; - } + GetDuplexSettings(ppd, &caps.duplex_capable, &caps.duplex_default); bool is_color = false; ColorModel cm_color = UNKNOWN_COLOR_MODEL, cm_black = UNKNOWN_COLOR_MODEL;
diff --git a/printing/backend/cups_helper_unittest.cc b/printing/backend/cups_helper_unittest.cc index 7daa1ca..1acd900e 100644 --- a/printing/backend/cups_helper_unittest.cc +++ b/printing/backend/cups_helper_unittest.cc
@@ -6,7 +6,7 @@ #include "printing/backend/print_backend.h" #include "testing/gtest/include/gtest/gtest.h" -TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexLongEdge) { +TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexShortEdge) { const char kTestPpdData[] = "*PPD-Adobe: \"4.3\"\n\n" "*OpenGroup: General/General\n\n" @@ -36,7 +36,7 @@ EXPECT_TRUE(caps.collate_default); EXPECT_TRUE(caps.copies_capable); EXPECT_TRUE(caps.duplex_capable); - EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default); + EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); EXPECT_FALSE(caps.color_changeable); EXPECT_FALSE(caps.color_default); } @@ -94,7 +94,7 @@ EXPECT_FALSE(caps.color_default); } -TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexLongEdge) { +TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexShortEdge) { const char kTestPpdData[] = "*PPD-Adobe: \"4.3\"\n\n" "*ColorDevice: True\n" @@ -124,7 +124,7 @@ EXPECT_TRUE(caps.collate_default); EXPECT_TRUE(caps.copies_capable); EXPECT_TRUE(caps.duplex_capable); - EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default); + EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); EXPECT_TRUE(caps.color_changeable); EXPECT_TRUE(caps.color_default); } @@ -147,7 +147,7 @@ "\"JCLDatamode=Grayscale GSCmdLine=Grayscale\"\n" "*CloseUI: *ColorModel\n" "*OpenUI *Duplex/2-Sided Printing: PickOne\n" - "*DefaultDuplex: DuplexTumble\n" + "*DefaultDuplex: DuplexNoTumble\n" "*Duplex None/Off: \"<</Duplex false>>" "setpagedevice\"\n" "*Duplex DuplexNoTumble/LongEdge: \"" @@ -199,3 +199,59 @@ EXPECT_EQ(215900, caps.papers[1].size_um.width()); EXPECT_EQ(355600, caps.papers[1].size_um.height()); } + +TEST(PrintBackendCupsHelperTest, TestPpdParsingBrotherPrinters) { + { + const char kTestPpdData[] = + "*PPD-Adobe: \"4.3\"\n\n" + "*ColorDevice: True\n" + "*OpenUI *BRPrintQuality/Color/Mono: PickOne\n" + "*DefaultBRPrintQuality: Auto\n" + "*BRPrintQuality Auto/Auto: \"\"\n" + "*BRPrintQuality Color/Color: \"\"\n" + "*BRPrintQuality Black/Mono: \"\"\n" + "*CloseUI: *BRPrintQuality\n\n"; + + printing::PrinterSemanticCapsAndDefaults caps; + EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); + EXPECT_TRUE(caps.color_changeable); + EXPECT_TRUE(caps.color_default); + EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model); + EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model); + } + { + const char kTestPpdData[] = + "*PPD-Adobe: \"4.3\"\n\n" + "*ColorDevice: True\n" + "*OpenUI *BRMonoColor/Color / Mono: PickOne\n" + "*DefaultBRMonoColor: Auto\n" + "*BRMonoColor Auto/Auto: \"\"\n" + "*BRMonoColor FullColor/Color: \"\"\n" + "*BRMonoColor Mono/Mono: \"\"\n" + "*CloseUI: *BRMonoColor\n\n"; + + printing::PrinterSemanticCapsAndDefaults caps; + EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); + EXPECT_TRUE(caps.color_changeable); + EXPECT_TRUE(caps.color_default); + EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model); + EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model); + } + { + const char kTestPpdData[] = + "*PPD-Adobe: \"4.3\"\n\n" + "*ColorDevice: True\n" + "*OpenUI *BRDuplex/Two-Sided Printing: PickOne\n" + "*OrderDependency: 25 AnySetup *BRDuplex\n" + "*DefaultBRDuplex: DuplexTumble\n" + "*BRDuplex DuplexTumble/Short-Edge Binding: \"\"\n" + "*BRDuplex DuplexNoTumble/Long-Edge Binding: \"\"\n" + "*BRDuplex None/Off: \"\"\n" + "*CloseUI: *BRDuplex\n\n"; + + printing::PrinterSemanticCapsAndDefaults caps; + EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); + EXPECT_TRUE(caps.duplex_capable); + EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); + } +}
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h index 1fffdd4a..a39afa5 100644 --- a/printing/print_job_constants.h +++ b/printing/print_job_constants.h
@@ -132,15 +132,17 @@ RGB, RGB16, RGBA, - COLORMODE_COLOR, // Used in samsung printer ppds. - COLORMODE_MONOCHROME, // Used in samsung printer ppds. - HP_COLOR_COLOR, // Used in HP color printer ppds. - HP_COLOR_BLACK, // Used in HP color printer ppds. - PRINTOUTMODE_NORMAL, // Used in foomatic ppds. - PRINTOUTMODE_NORMAL_GRAY, // Used in foomatic ppds. - PROCESSCOLORMODEL_CMYK, // Used in canon printer ppds. - PROCESSCOLORMODEL_GREYSCALE, // Used in canon printer ppds. - PROCESSCOLORMODEL_RGB, // Used in canon printer ppds + COLORMODE_COLOR, // Used in Samsung printer PPDs. + COLORMODE_MONOCHROME, // Used in Samsung printer PPDs. + HP_COLOR_COLOR, // Used in HP color printer PPDs. + HP_COLOR_BLACK, // Used in HP color printer PPDs. + PRINTOUTMODE_NORMAL, // Used in Foomatic PPDs. + PRINTOUTMODE_NORMAL_GRAY, // Used in Foomatic PPDs. + PROCESSCOLORMODEL_CMYK, // Used in Canon printer PPDs. + PROCESSCOLORMODEL_GREYSCALE, // Used in Canon printer PPDs. + PROCESSCOLORMODEL_RGB, // Used in Canon printer PPDs + BROTHER_COLOR_COLOR, // Used in Brother color printer PPDs. + BROTHER_COLOR_BLACK, // Used in Brother color printer PPDs. }; // What kind of margins to use.
diff --git a/printing/print_settings.cc b/printing/print_settings.cc index c35863dc..74d69fb1 100644 --- a/printing/print_settings.cc +++ b/printing/print_settings.cc
@@ -102,6 +102,12 @@ color_setting_name->assign(kCUPSProcessColorModel); color_value->assign(kRGB); break; + case BROTHER_COLOR_COLOR: + color_value->assign(kColor); + break; + case BROTHER_COLOR_BLACK: + color_value->assign(kBlack); + break; default: color_value->assign(kGrayscale); break; @@ -110,12 +116,11 @@ #endif // defined(USE_CUPS) bool IsColorModelSelected(int color_mode) { - return (color_mode != GRAY && - color_mode != BLACK && + return (color_mode != GRAY && color_mode != BLACK && color_mode != PRINTOUTMODE_NORMAL_GRAY && color_mode != COLORMODE_MONOCHROME && color_mode != PROCESSCOLORMODEL_GREYSCALE && - color_mode != HP_COLOR_BLACK); + color_mode != BROTHER_COLOR_BLACK && color_mode != HP_COLOR_BLACK); } // Global SequenceNumber used for generating unique cookie values.
diff --git a/printing/printing_context_chromeos.cc b/printing/printing_context_chromeos.cc index 26f27161..66ab353 100644 --- a/printing/printing_context_chromeos.cc +++ b/printing/printing_context_chromeos.cc
@@ -46,6 +46,7 @@ case RGB16: case RGBA: case COLORMODE_COLOR: + case BROTHER_COLOR_COLOR: case HP_COLOR_COLOR: case PRINTOUTMODE_NORMAL: case PROCESSCOLORMODEL_CMYK: @@ -56,6 +57,7 @@ case BLACK: case GRAYSCALE: case COLORMODE_MONOCHROME: + case BROTHER_COLOR_BLACK: case HP_COLOR_BLACK: case PRINTOUTMODE_NORMAL_GRAY: case PROCESSCOLORMODEL_GREYSCALE:
diff --git a/remoting/host/continue_window_linux.cc b/remoting/host/continue_window_linux.cc index 3bc8542..bdbe724 100644 --- a/remoting/host/continue_window_linux.cc +++ b/remoting/host/continue_window_linux.cc
@@ -102,7 +102,9 @@ gtk_label_new(l10n_util::GetStringUTF8(IDS_CONTINUE_PROMPT).c_str()); gtk_label_set_line_wrap(GTK_LABEL(text_label), TRUE); // TODO(lambroslambrou): Fix magic numbers, as in disconnect_window_gtk.cc. + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; gtk_misc_set_padding(GTK_MISC(text_label), 12, 12); + G_GNUC_END_IGNORE_DEPRECATIONS; gtk_container_add(GTK_CONTAINER(content_area), text_label); gtk_widget_show_all(content_area);
diff --git a/remoting/host/disconnect_window_linux.cc b/remoting/host/disconnect_window_linux.cc index ef712da1..d9c95b95f 100644 --- a/remoting/host/disconnect_window_linux.cc +++ b/remoting/host/disconnect_window_linux.cc
@@ -202,8 +202,10 @@ // The alignment sets narrow margins at the top and bottom, compared with // left and right. The left margin is made larger to accommodate the // window movement gripper. + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; GtkWidget* align = gtk_alignment_new(0, 0, 1, 1); gtk_alignment_set_padding(GTK_ALIGNMENT(align), 8, 8, 24, 12); + G_GNUC_END_IGNORE_DEPRECATIONS; gtk_container_add(GTK_CONTAINER(window), align); #if GTK_MAJOR_VERSION == 2
diff --git a/remoting/host/it2me/it2me_confirmation_dialog_linux.cc b/remoting/host/it2me/it2me_confirmation_dialog_linux.cc index a86a5b0b..ceb8c11 100644 --- a/remoting/host/it2me/it2me_confirmation_dialog_linux.cc +++ b/remoting/host/it2me/it2me_confirmation_dialog_linux.cc
@@ -124,7 +124,9 @@ remote_user_email); GtkWidget* text_label = gtk_label_new(base::UTF16ToUTF8(dialog_text).c_str()); gtk_label_set_line_wrap(GTK_LABEL(text_label), true); + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; gtk_misc_set_padding(GTK_MISC(text_label), 12, 12); + G_GNUC_END_IGNORE_DEPRECATIONS; gtk_container_add(GTK_CONTAINER(content_area), text_label); gtk_widget_show_all(content_area);
diff --git a/services/resource_coordinator/memory/coordinator/coordinator_impl.cc b/services/resource_coordinator/memory/coordinator/coordinator_impl.cc index 5c133f8..c582e23 100644 --- a/services/resource_coordinator/memory/coordinator/coordinator_impl.cc +++ b/services/resource_coordinator/memory/coordinator/coordinator_impl.cc
@@ -55,11 +55,12 @@ bool another_dump_already_in_progress = !queued_memory_dump_requests_.empty(); - // If this is a periodic memory dump request and there already is another - // request in the queue with the same level of detail, there's no point in - // enqueuing this request. + // If this is a periodic or peak memory dump request and there already is + // another request in the queue with the same level of detail, there's no + // point in enqueuing this request. if (another_dump_already_in_progress && - args.dump_type == base::trace_event::MemoryDumpType::PERIODIC_INTERVAL) { + args.dump_type != + base::trace_event::MemoryDumpType::EXPLICITLY_TRIGGERED) { for (const auto& request : queued_memory_dump_requests_) { if (request.args.level_of_detail == args.level_of_detail) { VLOG(1) << base::trace_event::MemoryDumpManager::kLogPrefix << " ("
diff --git a/services/ui/OWNERS b/services/ui/OWNERS index e9190a40..91d63fae 100644 --- a/services/ui/OWNERS +++ b/services/ui/OWNERS
@@ -5,3 +5,5 @@ per-file *_type_converter*.*=set noparent per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS + +# COMPONENT: Internals>MUS
diff --git a/services/ui/gpu/gpu_service.cc b/services/ui/gpu/gpu_service.cc index f8a6a17e..1bd5543 100644 --- a/services/ui/gpu/gpu_service.cc +++ b/services/ui/gpu/gpu_service.cc
@@ -265,4 +265,9 @@ #endif } +void GpuService::Stop(const StopCallback& callback) { + base::MessageLoop::current()->QuitWhenIdle(); + callback.Run(); +} + } // namespace ui
diff --git a/services/ui/gpu/gpu_service.h b/services/ui/gpu/gpu_service.h index 88dd9aa..69fecd6 100644 --- a/services/ui/gpu/gpu_service.h +++ b/services/ui/gpu/gpu_service.h
@@ -134,6 +134,7 @@ void Crash() override; void Hang() override; void ThrowJavaException() override; + void Stop(const StopCallback& callback) override; scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
diff --git a/services/ui/gpu/interfaces/gpu_service.mojom b/services/ui/gpu/interfaces/gpu_service.mojom index 69bd9d4..cf3a7ec 100644 --- a/services/ui/gpu/interfaces/gpu_service.mojom +++ b/services/ui/gpu/interfaces/gpu_service.mojom
@@ -53,4 +53,5 @@ Crash(); Hang(); ThrowJavaException(); + Stop() => (); };
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 98a0246..2feefd5c 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2682,56 +2682,6 @@ crbug.com/697971 [ Mac10.12 ] svg/transforms/svg-css-transforms-clip-path.xhtml [ Failure ] crbug.com/697971 [ Mac10.12 ] svg/transforms/svg-css-transforms.xhtml [ Failure ] crbug.com/697971 [ Mac10.12 ] svg/zoom/page/zoom-background-images.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug1188.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug1318.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug138725.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug18359.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug194024.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-2.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-3.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-4.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug26178.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug28928.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug29326.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug30559.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug30692.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug33855.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug39209.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug4382.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug4429.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug44505.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46368-1.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46368-2.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46480-1.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46480-2.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug51037.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug51727.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug52505.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug52506.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug59354.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug60749.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug68912.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug7342.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug8032-1.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug8858.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug96334.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/collapsing_borders/bug41262-4.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/core/bloomberg.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/core/margins.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/dom/tableDom.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/move_row.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/test3.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/test6.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/wa_table_thtd_rowspan.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/wa_table_tr_align.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug1128.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug1725.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug2479-5.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug91057.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/collapsing_borders/bug41262-5.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/collapsing_borders/bug41262-6.html [ Failure ] -crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/marvin/backgr_fixed-bg.html [ Failure ] crbug.com/697971 [ Mac10.12 ] transforms/2d/zoom-menulist.html [ Failure ] crbug.com/697971 [ Mac10.12 ] transforms/svg-vs-css.xhtml [ Failure ] crbug.com/697971 [ Mac10.12 ] virtual/disable-spinvalidation/paint/invalidation/button-checkbox-click-method-repaint.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt new file mode 100644 index 0000000..6e2d358bf --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt
@@ -0,0 +1,7 @@ + + + +GIF image test: PASS +APNG image test: PASS +WEBP image test: PASS +
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html new file mode 100644 index 0000000..d8d131d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html
@@ -0,0 +1,87 @@ +<html> +<!-- canvas.drawImage() for animated images should draw the initial + frame (or poster frame) of the animated image. --> + +<body> + <style> + canvas { width : 315px; height: 236px; } + </style> + <canvas id='canvas1'></canvas> + <img onload='loaded(this, "GIF ", 1)'><br> + <canvas id='canvas2'></canvas> + <img onload='loaded(this, "APNG", 2)'><br> + <canvas id='canvas3'></canvas> + <img onload='loaded(this, "WEBP", 3)'><br> + <pre id='results'></pre> +</body> + +<script> +if (window.testRunner) { + testRunner.waitUntilDone(); + testRunner.dumpAsText(); +} + +var sources = [ + '../../images/resources/count-down-color-test.gif', + '../../images/resources/count-down-color-test.png', + '../../images/resources/count-down-color-test.webp', +]; + +function loaded(img, name, i) { + // Advance the image away from frame 0 to a frame that has black, + // white and gray pixels, viz., no color pixels. + if (window.internals) { + for (var frame = 0; frame < 10; ++frame) + window.internals.advanceImageAnimation(img); + runTest(); + } else { // Manual test. + var noColorFrameDelayInMS = 1500; + setTimeout(runTest, noColorFrameDelayInMS); + } + + function runTest() { + requestAnimationFrame(function test() { + results.textContent += name + ' image test: '; + drawImageToCanvasTest(img, i); + startNextTestIfNeeded(i); + }); + } +} + +function drawImageToCanvasTest(img, i) { + var canvas = document.querySelector('#canvas' + i); + canvas.width = img.width; + canvas.height = img.height; + + var context = canvas.getContext('2d'); + context.drawImage(img, 0, 0); + testImagePixel(context, img); +} + +function testImagePixel(context, img) { + var center = { x : img.width / 2, y : img.height / 2 }; + + try { + var pixel = context.getImageData(center.x, center.y, 1, 1); + } catch (exception) { + results.textContent += 'FAIL: ' + exception + '\n'; + return; + } + + // Frame 0 has color pixels: PASS if the center pixel is ~green. + var green = + pixel.data[0] < 5 && pixel.data[1] > 180 && pixel.data[2] < 5; + results.textContent += green ? 'PASS\n' : 'FAIL\n'; +} + +function startNextTestIfNeeded(i) { + if (i < sources.length) { + document.querySelectorAll('img')[i].src = sources[i]; + } else if (window.testRunner) { + testRunner.notifyDone(); + } +} + +startNextTestIfNeeded(0); +</script> +</html>
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif new file mode 100644 index 0000000..982730b --- /dev/null +++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif Binary files differ
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png new file mode 100644 index 0000000..fdb750ef --- /dev/null +++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp new file mode 100644 index 0000000..fa0ed68 --- /dev/null +++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp Binary files differ
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html index bed51f26..6b94eec 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html
@@ -59,7 +59,7 @@ function popoverVisible() { - return UI.Popover._popover ? UI.Popover._popover.contentElement.isSelfOrDescendant(document.body) : false; + return !!document.body.querySelector('* /deep/ .spectrum-color'); } } </script>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt index 0b3cac7..42fe2cb5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@ LayoutBlockFlow (anonymous) at (0,39) size 784x20 LayoutMenuList {SELECT} at (0,0) size 113x20 [bgcolor=#C0C0C0] [border: (1px solid #A9A9A9)] LayoutBlockFlow (anonymous) at (1,1) size 111x18 - LayoutText (anonymous) at (4,1) size 82x16 - text run at (4,1) width 82 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText (anonymous) at (4,1) size 91x16 + text run at (4,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {HR} at (0,329) size 784x2 [border: (1px inset #EEEEEE)] LayoutBlockFlow {P} at (0,347) size 784x20
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt index 9f95332..a8dbc6f7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@ LayoutText {#text} at (2,0) size 100x21 text run at (2,0) width 100 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}" LayoutBlockFlow {OPTION} at (1,116) size 304.69x23 - LayoutText {#text} at (2,0) size 76x21 - text run at (2,0) width 76 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" + LayoutText {#text} at (2,0) size 70x21 + text run at (2,0) width 70 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" LayoutBlockFlow {OPTION} at (1,139) size 304.69x23 LayoutText {#text} at (2,0) size 126x21 text run at (2,0) width 126: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt index 71bbeb0..94a42d75 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@ LayoutBlockFlow (anonymous) at (0,36) size 784x19 LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8] LayoutBlockFlow (anonymous) at (0,0) size 115x21 - LayoutText (anonymous) at (8,2) size 76x13 - text run at (8,2) width 76 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText (anonymous) at (8,2) size 84x13 + text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)] LayoutBlockFlow {P} at (0,327) size 784x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt index 172fc0e..49a191f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@ LayoutText {#text} at (2,0) size 112x21 text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}" LayoutBlockFlow {OPTION} at (1,113.97) size 321.19x25 - LayoutText {#text} at (2,0) size 77x21 - text run at (2,0) width 77 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" + LayoutText {#text} at (2,0) size 74x21 + text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" LayoutBlockFlow {OPTION} at (1,138.97) size 321.19x22.59 LayoutText {#text} at (2,0) size 125x21 text run at (2,0) width 125: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png index 76523d0..45884aa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png new file mode 100644 index 0000000..1386b807 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt new file mode 100644 index 0000000..0123fdf --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -0,0 +1,168 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x549 + LayoutBlockFlow {HTML} at (0,0) size 800x549 + LayoutBlockFlow {BODY} at (8,16) size 784x525 + LayoutBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 758x36 + text run at (0,0) width 758: "This tests that bidirectional text is correctly rendered in popup controls. The order of the text below each popup button" + text run at (0,18) width 600: "should match the order of the select's option text, and the order of the text in the popup menu." + LayoutBlockFlow {DL} at (0,52) size 784x168 + LayoutBlockFlow {DT} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 286x18 + text run at (0,0) width 286: "1) direction: rtl; -webkit-rtl-ordering: logical" + LayoutBlockFlow {DD} at (40,18) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 100x18 + LayoutText (anonymous) at (31,2) size 61x13 + text run at (31,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + text run at (73,2) width 19: "abc" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 100x19 + LayoutText {#text} at (18,1) size 82x18 + text run at (18,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + text run at (77,1) width 23: "abc" + LayoutBlockFlow {DT} at (0,56) size 784x18 + LayoutText {#text} at (0,0) size 118x18 + text run at (0,0) width 118: "2) text-align: right" + LayoutBlockFlow {DD} at (40,74) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 200x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 200x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 19: "abc" + text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 200x19 + LayoutText {#text} at (0,1) size 82x18 + text run at (0,1) width 23: "abc" + text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutBlockFlow {DT} at (0,112) size 784x18 + LayoutText {#text} at (0,0) size 72x18 + text run at (0,0) width 72: "3) No style" + LayoutBlockFlow {DD} at (40,130) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 100x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 19: "abc" + text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 100x19 + LayoutText {#text} at (0,1) size 82x18 + text run at (0,1) width 23: "abc" + text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutBlockFlow {HR} at (0,236) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {DIV} at (0,246) size 784x55 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 632x18 + text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking." + LayoutBlockFlow {DIV} at (0,18) size 784x18 + LayoutText {#text} at (0,0) size 99x16 + text run at (0,0) width 99 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutBlockFlow (anonymous) at (0,36) size 784x19 + LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 115x21 + LayoutText (anonymous) at (8,2) size 84x13 + text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,327) size 784x18 + LayoutText {#text} at (0,0) size 709x18 + text run at (0,0) width 709: "Verify that the alignment and writing direction of each selected item matches the one below the pop-up button." +layer at (8,377) size 784x164 + LayoutBlockFlow {DIV} at (0,361) size 784x164 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x164 +layer at (8,377) size 384x328 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x328 + LayoutBlockFlow {DIV} at (0,0) size 384x164 + LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 38: "First " + text run at (45,1) width 61 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (105,1) width 21: "03" + text run at (125,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (170,1) width 36: " fifth" + LayoutBlockFlow {DIV} at (0,23) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 32: "First " + text run at (32,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (80,1) width 17: "03" + text run at (96,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (132,1) width 32: " fifth" + LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 31: "fifth" + text run at (38,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (103,1) width 21: "03" + text run at (123,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (172,1) width 34: "First" + LayoutBlockFlow {DIV} at (0,64) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 27: "fifth" + text run at (27,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (78,1) width 17: "03" + text run at (94,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (135,1) width 29: "First" + LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,105) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,146) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,164) size 384x164 + LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 39: "First " + text run at (180,1) width 60 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (239,1) width 21: "03" + text run at (259,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (304,1) width 36: " fifth" + LayoutBlockFlow {DIV} at (0,23) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 33: "First " + text run at (220,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (267,1) width 18: "03" + text run at (284,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (320,1) width 31: " fifth" + LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 32: "fifth" + text run at (173,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (237,1) width 21: "03" + text run at (257,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (306,1) width 34: "First" + LayoutBlockFlow {DIV} at (0,64) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 28: "fifth" + text run at (215,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (266,1) width 17: "03" + text run at (282,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (323,1) width 28: "First" + LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,105) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,146) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt new file mode 100644 index 0000000..e91f5d3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt
@@ -0,0 +1,56 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 285x18 + text run at (0,0) width 285: "This tests GraphicsContext::drawBidiText()." +layer at (8,42) size 345x227 clip at (9,43) size 332x225 + LayoutListBox {SELECT} at (0,34) size 345.22x227 [bgcolor=#FFFFFF] [border: (1px solid #999999)] + LayoutBlockFlow {OPTION} at (1,1) size 332.22x22.59 + LayoutText {#text} at (2,0) size 223x21 + text run at (2,0) width 43: "First " + text run at (44,0) width 68 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (111,0) width 24: "03" + text run at (134,0) width 51 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (184,0) width 41: " fifth" + LayoutBlockFlow {OPTION} at (1,23.59) size 332.22x22.59 + LayoutText {#text} at (108,0) size 223x21 + text run at (108,0) width 35: "fifth" + text run at (142,0) width 73 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (214,0) width 24: "03" + text run at (237,0) width 56 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (292,0) width 39: "First" + LayoutBlockFlow {OPTION} at (1,46.19) size 332.22x22.59 + LayoutText {#text} at (2,0) size 223x21 + text run at (2,0) width 223 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {OPTION} at (1,68.78) size 332.22x22.59 + LayoutText {#text} at (107,0) size 224x21 + text run at (107,0) width 224 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {OPTION} at (1,91.38) size 332.22x22.59 + LayoutText {#text} at (2,0) size 112x21 + text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}" + LayoutBlockFlow {OPTION} at (1,113.97) size 332.22x25 + LayoutText {#text} at (2,0) size 74x21 + text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" + LayoutBlockFlow {OPTION} at (1,138.97) size 332.22x22.59 + LayoutText {#text} at (2,0) size 130x21 + text run at (2,0) width 130: "Et volia\x{300}: ATSUI!" + LayoutBlockFlow {OPTION} at (1,161.56) size 332.22x22.59 + LayoutText {#text} at (2,0) size 302x21 + text run at (2,0) width 97: "Directional " + text run at (98,0) width 80 RTL override: "\x{202E}overrides" + text run at (177,0) width 127: "\x{202C} are confusing." + LayoutBlockFlow {OPTION} at (1,184.16) size 332.22x22.59 + LayoutText {#text} at (2,0) size 329x21 + text run at (2,0) width 87: "She said \x{201C}" + text run at (88,0) width 76 RTL: " \x{5D1}\x{5DE}\x{5D6}\x{5D5}\x{5D5}\x{5D3}\x{5D4}!" + text run at (163,0) width 37: "TNT" + text run at (199,0) width 25 RTL: "\x{202B}\x{5D9}\x{5E9} " + text run at (223,0) width 108: "\x{202C}\x{201D} and ran off" +layer at (8,269) size 377x18 clip at (9,270) size 364x16 + LayoutListBox {SELECT} at (0,261) size 377.11x18 [bgcolor=#FFFFFF] [border: (1px solid #999999)] + LayoutBlockFlow {OPTION} at (1,1) size 364.11x16 + LayoutText {#text} at (2,0) size 361x15 + text run at (2,0) width 361: "There are two ways to measure text: my way and the wrong way"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt new file mode 100644 index 0000000..c437d88a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
@@ -0,0 +1,2910 @@ +layer at (0,0) size 800x600 scrollX 3551.00 scrollWidth 4351 + LayoutView at (0,0) size 800x600 +layer at (-3551,0) size 4351x600 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 4351.34x600 + LayoutBlockFlow {BODY} at (60,48) size 4231.34x504 + LayoutBlockFlow {H1} at (0,0) size 48x504 + LayoutText {#text} at (5,0) size 37x64 + text run at (5,0) width 64: "\x{8349}\x{6795}" + LayoutBlockFlow {H2} at (69.44,0) size 36x504 + LayoutText {#text} at (4,0) size 28x96 + text run at (4,0) width 96: "\x{590F}\x{76EE}\x{6F31}\x{77F3}" + LayoutBlockFlow {DIV} at (125.34,0) size 4106x504 + LayoutBlockFlow (anonymous) at (0,0) size 2286x504 + LayoutBR {BR} at (0,0) size 18x0 + LayoutBR {BR} at (18,0) size 18x0 + LayoutBR {BR} at (36,0) size 18x0 + LayoutText {#text} at (56,0) size 18x144 + text run at (56,0) width 144: "\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{4E00}" + LayoutBR {BR} at (56,143) size 18x1 + LayoutBR {BR} at (76,0) size 18x0 + LayoutText {#text} at (104,0) size 18x16 + text run at (104,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (102,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3084}\x{307E}\x{307F}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C71}\x{8DEF}" + LayoutText {#text} at (104,50) size 18x208 + text run at (104,50) width 208: "\x{3092}\x{767B}\x{308A}\x{306A}\x{304C}\x{3089}\x{3001}\x{3053}\x{3046}\x{8003}\x{3048}\x{305F}\x{3002}" + LayoutBR {BR} at (104,258) size 18x0 + LayoutText {#text} at (132,0) size 18x16 + text run at (132,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{667A}" + LayoutText {#text} at (132,32) size 18x64 + text run at (132,32) width 64: "\x{306B}\x{50CD}\x{3051}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{89D2}" + LayoutText {#text} at (132,112) size 18x64 + text run at (132,112) width 64: "\x{304C}\x{7ACB}\x{3064}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (130,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3058}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{60C5}" + LayoutText {#text} at (132,195) size 18x16 + text run at (132,195) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,210) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{68F9}" + LayoutText {#text} at (132,227) size 18x176 + text run at (132,227) width 176: "\x{3055}\x{305B}\x{3070}\x{6D41}\x{3055}\x{308C}\x{308B}\x{3002}\x{610F}\x{5730}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,402) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3068}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{901A}" + LayoutText {#text} at (132,419) size 18x32 + text run at (132,419) width 32: "\x{305B}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (130,448) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{304F}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{7AAE}\x{5C48}" + LayoutText {#text} at (154,0) size 18x256 + text run at (154,0) width 256: "\x{3060}\x{3002}\x{3068}\x{304B}\x{304F}\x{306B}\x{4EBA}\x{306E}\x{4E16}\x{306F}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3002}" + LayoutBR {BR} at (154,256) size 18x0 + LayoutText {#text} at (182,0) size 18x112 + text run at (182,0) width 112: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3055}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (180,110.98) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3053}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{9AD8}" + LayoutText {#text} at (182,127) size 46x496 + text run at (182,127) width 368: "\x{3058}\x{308B}\x{3068}\x{3001}\x{5B89}\x{3044}\x{6240}\x{3078}\x{5F15}\x{304D}\x{8D8A}\x{3057}\x{305F}\x{304F}\x{306A}\x{308B}\x{3002}\x{3069}\x{3053}\x{3078}\x{8D8A}\x{3057}\x{3066}" + text run at (210,0) width 112: "\x{3082}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (208,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{609F}" + LayoutText {#text} at (210,128) size 18x160 + text run at (210,128) width 160: "\x{3063}\x{305F}\x{6642}\x{3001}\x{8A69}\x{304C}\x{751F}\x{308C}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (208,288) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (210,304) size 18x80 + text run at (210,304) width 80: "\x{304C}\x{51FA}\x{6765}\x{308B}\x{3002}" + LayoutBR {BR} at (210,384) size 18x0 + LayoutText {#text} at (232,0) size 18x16 + text run at (232,0) width 16: "\x{3000}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (232,16) size 18x48 + text run at (232,16) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (232,64) size 18x432 + text run at (232,64) width 432: "\x{3092}\x{4F5C}\x{3063}\x{305F}\x{3082}\x{306E}\x{306F}\x{795E}\x{3067}\x{3082}\x{306A}\x{3051}\x{308C}\x{3070}\x{9B3C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{3084}\x{306F}\x{308A}\x{5411}\x{3046}\x{4E09}\x{8ED2}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (258,0) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3069}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E21}\x{96A3}" + LayoutText {#text} at (260,42) size 18x384 + text run at (260,42) width 384: "\x{308A}\x{306B}\x{3061}\x{3089}\x{3061}\x{3089}\x{3059}\x{308B}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{304C}\x{4F5C}\x{3063}\x{305F}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (260,426) size 18x48 + text run at (260,426) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (260,474) size 40x490 + text run at (260,474) width 16: "\x{304C}" + text run at (282,0) width 352: "\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{304B}\x{3089}\x{3068}\x{3066}\x{3001}\x{8D8A}\x{3059}\x{56FD}\x{306F}\x{3042}\x{308B}\x{307E}\x{3044}\x{3002}\x{3042}\x{308C}\x{3070}" + LayoutInline {STRONG} at (0,0) size 18x64 + LayoutText {#text} at (282,352) size 18x64 + text run at (282,352) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}" + LayoutText {#text} at (282,416) size 40x496 + text run at (282,416) width 80: "\x{306E}\x{56FD}\x{3078}\x{884C}\x{304F}" + text run at (304,0) width 80: "\x{3070}\x{304B}\x{308A}\x{3060}\x{3002}" + LayoutInline {STRONG} at (0,0) size 18x64 + LayoutText {#text} at (304,80) size 18x64 + text run at (304,80) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}" + LayoutText {#text} at (304,144) size 18x48 + text run at (304,144) width 48: "\x{306E}\x{56FD}\x{306F}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (304,192) size 18x48 + text run at (304,192) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (304,240) size 18x208 + text run at (304,240) width 208: "\x{3088}\x{308A}\x{3082}\x{306A}\x{304A}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304B}\x{308D}\x{3046}\x{3002}" + LayoutBR {BR} at (304,448) size 18x0 + LayoutText {#text} at (326,0) size 18x496 + text run at (326,0) width 496: "\x{3000}\x{8D8A}\x{3059}\x{4E8B}\x{306E}\x{306A}\x{3089}\x{306C}\x{4E16}\x{304C}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3051}\x{308C}\x{3070}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{6240}\x{3092}\x{3069}\x{308C}\x{307B}\x{3069}\x{304B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (352,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304F}\x{3064}\x{308D}\x{3052}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5BDB}\x{5BB9}" + LayoutText {#text} at (354,35) size 18x32 + text run at (354,35) width 32: "\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (352,66) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3064}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{675F}" + LayoutText {#text} at (354,83) size 18x16 + text run at (354,83) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (352,99) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9593}" + LayoutText {#text} at (354,115) size 46x499 + text run at (354,115) width 384: "\x{306E}\x{547D}\x{3092}\x{3001}\x{675F}\x{306E}\x{9593}\x{3067}\x{3082}\x{4F4F}\x{307F}\x{3088}\x{304F}\x{305B}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{3053}\x{3053}\x{306B}\x{8A69}" + text run at (382,0) width 352: "\x{4EBA}\x{3068}\x{3044}\x{3046}\x{5929}\x{8077}\x{304C}\x{51FA}\x{6765}\x{3066}\x{3001}\x{3053}\x{3053}\x{306B}\x{753B}\x{5BB6}\x{3068}\x{3044}\x{3046}\x{4F7F}\x{547D}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (380,351) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{964D}" + LayoutText {#text} at (382,368) size 46x496 + text run at (382,368) width 128: "\x{308B}\x{3002}\x{3042}\x{3089}\x{3086}\x{308B}\x{82B8}\x{8853}" + text run at (410,0) width 112: "\x{306E}\x{58EB}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (408,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306E}\x{3069}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9577}\x{9591}" + LayoutText {#text} at (410,144) size 18x208 + text run at (410,144) width 208: "\x{306B}\x{3057}\x{3001}\x{4EBA}\x{306E}\x{5FC3}\x{3092}\x{8C4A}\x{304B}\x{306B}\x{3059}\x{308B}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (408,351) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3086}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6545}" + LayoutText {#text} at (410,368) size 18x16 + text run at (410,368) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (408,383) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3063}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5C0A}" + LayoutText {#text} at (410,400) size 18x48 + text run at (410,400) width 48: "\x{3068}\x{3044}\x{3002}" + LayoutBR {BR} at (410,448) size 18x0 + LayoutText {#text} at (438,0) size 18x240 + text run at (438,0) width 240: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}\x{4E16}\x{304B}\x{3089}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (436,235.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{308F}\x{305A}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{7169}" + LayoutText {#text} at (438,258) size 46x499 + text run at (438,258) width 240: "\x{3044}\x{3092}\x{5F15}\x{304D}\x{629C}\x{3044}\x{3066}\x{3001}\x{3042}\x{308A}\x{304C}\x{305F}\x{3044}\x{4E16}\x{754C}" + text run at (466,0) width 256: "\x{3092}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{5199}\x{3059}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (464,256) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (466,272) size 46x496 + text run at (466,272) width 224: "\x{3067}\x{3042}\x{308B}\x{3002}\x{3042}\x{308B}\x{306F}\x{97F3}\x{697D}\x{3068}\x{5F6B}\x{523B}\x{3067}\x{3042}" + text run at (494,0) width 96: "\x{308B}\x{3002}\x{3053}\x{307E}\x{304B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (492,96) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{4E91}" + LayoutText {#text} at (494,112) size 46x496 + text run at (494,112) width 384: "\x{3048}\x{3070}\x{5199}\x{3055}\x{306A}\x{3044}\x{3067}\x{3082}\x{3088}\x{3044}\x{3002}\x{305F}\x{3060}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{898B}\x{308C}\x{3070}\x{3001}\x{305D}" + text run at (522,0) width 144: "\x{3053}\x{306B}\x{8A69}\x{3082}\x{751F}\x{304D}\x{3001}\x{6B4C}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (520,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6E67}" + LayoutText {#text} at (522,160) size 18x192 + text run at (522,160) width 192: "\x{304F}\x{3002}\x{7740}\x{60F3}\x{3092}\x{7D19}\x{306B}\x{843D}\x{3055}\x{306C}\x{3068}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (520,349) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{305D}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x23 + text run at (2,3) width 22: "\x{7486}" + LayoutText {#text} at (2,25) size 18x17 + text run at (2,25) width 16: "\x{93D8}" + LayoutText {#text} at (522,391) size 18x16 + text run at (522,391) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (520,406) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{97F3}" + LayoutText {#text} at (522,423) size 18x16 + text run at (522,423) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (520,438) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304D}\x{3087}\x{3046}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{80F8}\x{88CF}" + LayoutText {#text} at (522,473) size 18x16 + text run at (522,473) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (548,0) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3053}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8D77}" + LayoutText {#text} at (550,17) size 18x32 + text run at (550,17) width 32: "\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,48) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305F}\x{3093}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E39}\x{9752}" + LayoutText {#text} at (550,83) size 18x16 + text run at (550,83) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,99) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{304C}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{753B}\x{67B6}" + LayoutText {#text} at (550,131) size 18x64 + text run at (550,131) width 64: "\x{306B}\x{5411}\x{3063}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,195) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{307E}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5857}\x{62B9}" + LayoutText {#text} at (550,227) size 18x64 + text run at (550,227) width 64: "\x{305B}\x{3093}\x{3067}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,291) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3054}\x{3055}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4E94}\x{5F69}" + LayoutText {#text} at (550,323) size 18x16 + text run at (550,323) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,338) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3093}\x{3089}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7D62}\x{721B}" + LayoutText {#text} at (550,373) size 18x16 + text run at (550,373) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (548,385) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304A}\x{306E}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{81EA}" + LayoutText {#text} at (550,408) size 18x32 + text run at (550,408) width 32: "\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,439) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{3093}\x{304C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5FC3}\x{773C}" + LayoutText {#text} at (550,474) size 46x490 + text run at (550,474) width 16: "\x{306B}" + text run at (578,0) width 240: "\x{6620}\x{308B}\x{3002}\x{305F}\x{3060}\x{304A}\x{306E}\x{304C}\x{4F4F}\x{3080}\x{4E16}\x{3092}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (576,239) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{89B3}" + LayoutText {#text} at (578,256) size 18x64 + text run at (578,256) width 64: "\x{3058}\x{5F97}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x70 + LayoutRubyRun (anonymous) at (576,319) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{308C}\x{3044}\x{3060}\x{3044}\x{307B}\x{3046}\x{3059}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{970A}\x{53F0}\x{65B9}\x{5BF8}" + LayoutText {#text} at (578,390) size 18x80 + text run at (578,390) width 80: "\x{306E}\x{30AB}\x{30E1}\x{30E9}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x71 + LayoutRubyRun (anonymous) at (604,0) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{304E}\x{3087}\x{3046}\x{304D}\x{3053}\x{3093}\x{3060}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{6F86}\x{5B63}\x{6EB7}\x{6FC1}" + LayoutText {#text} at (606,71) size 18x208 + text run at (606,71) width 208: "\x{306E}\x{4FD7}\x{754C}\x{3092}\x{6E05}\x{304F}\x{3046}\x{3089}\x{3089}\x{304B}\x{306B}\x{53CE}\x{3081}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (604,279) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5F97}" + LayoutText {#text} at (606,295) size 18x32 + text run at (606,295) width 32: "\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (604,327) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (606,343) size 18x96 + text run at (606,343) width 96: "\x{308B}\x{3002}\x{3053}\x{306E}\x{6545}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (604,439) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3080}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7121}\x{58F0}" + LayoutText {#text} at (606,471) size 46x503 + text run at (606,471) width 32: "\x{306E}\x{8A69}" + text run at (634,0) width 128: "\x{4EBA}\x{306B}\x{306F}\x{4E00}\x{53E5}\x{306A}\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3080}\x{3057}\x{3087}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7121}\x{8272}" + LayoutText {#text} at (634,162) size 18x80 + text run at (634,162) width 80: "\x{306E}\x{753B}\x{5BB6}\x{306B}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,241) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305B}\x{3063}\x{3051}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C3A}\x{7E11}" + LayoutText {#text} at (634,276) size 18x96 + text run at (634,276) width 96: "\x{306A}\x{304D}\x{3082}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,371) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3093}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4EBA}\x{4E16}" + LayoutText {#text} at (634,406) size 46x502 + text run at (634,406) width 96: "\x{3092}\x{89B3}\x{3058}\x{5F97}\x{308B}\x{306E}" + text run at (662,0) width 128: "\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (660,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307C}\x{3093}\x{306E}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7169}\x{60A9}" + LayoutText {#text} at (662,162) size 18x16 + text run at (662,162) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (660,178) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (662,210) size 18x176 + text run at (662,210) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (660,382) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3057}\x{3087}\x{3046}\x{3058}\x{3087}\x{3046}\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,4) size 18x64 + text run at (2,4) width 64: "\x{6E05}\x{6D44}\x{754C}" + LayoutText {#text} at (662,450) size 18x16 + text run at (662,450) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x50 + LayoutRubyRun (anonymous) at (688,0) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3057}\x{3085}\x{3064}\x{306B}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x44 + LayoutText {#text} at (2,5) size 18x44 + text run at (2,5) width 43: "\x{51FA}\x{5165}" + LayoutText {#text} at (690,50) size 18x224 + text run at (690,50) width 224: "\x{3057}\x{5F97}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{307E}\x{305F}\x{3053}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (688,274) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,1) size 10x61 + text run at (2,1) width 60: "\x{3075}\x{3069}\x{3046}\x{3075}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{4E0D}\x{540C}\x{4E0D}\x{4E8C}" + LayoutText {#text} at (690,338) size 18x16 + text run at (690,338) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (688,353) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3093}\x{3053}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E7E}\x{5764}" + LayoutText {#text} at (690,388) size 18x16 + text run at (690,388) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (688,401) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{5EFA}\x{7ACB}" + LayoutText {#text} at (690,443) size 46x491 + text run at (690,443) width 48: "\x{3057}\x{5F97}\x{308B}" + text run at (718,0) width 112: "\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (716,112) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,1) size 10x61 + text run at (2,1) width 60: "\x{304C}\x{308A}\x{3057}\x{3088}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{6211}\x{5229}\x{79C1}\x{617E}" + LayoutText {#text} at (718,176) size 18x16 + text run at (718,176) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (716,192) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304D}\x{306F}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898A}\x{7D46}" + LayoutText {#text} at (718,224) size 18x16 + text run at (718,224) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (716,239) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305D}\x{3046}\x{3068}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6383}\x{8569}" + LayoutText {#text} at (718,274) size 18x176 + text run at (718,274) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{2015}\x{2015}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (716,449) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305B}\x{3093}\x{304D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5343}\x{91D1}" + LayoutText {#text} at (718,484) size 46x500 + text run at (718,484) width 16: "\x{306E}" + text run at (746,0) width 80: "\x{5B50}\x{3088}\x{308A}\x{3082}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (744,77) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3070}\x{3093}\x{3058}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E07}\x{4E57}" + LayoutText {#text} at (746,119) size 18x208 + text run at (746,119) width 208: "\x{306E}\x{541B}\x{3088}\x{308A}\x{3082}\x{3001}\x{3042}\x{3089}\x{3086}\x{308B}\x{4FD7}\x{754C}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (744,326) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3061}\x{3087}\x{3046}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5BF5}\x{5150}" + LayoutText {#text} at (746,361) size 40x473 + text run at (746,361) width 112: "\x{3088}\x{308A}\x{3082}\x{5E78}\x{798F}\x{3067}\x{3042}" + text run at (768,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (768,32) size 18x0 + LayoutText {#text} at (796,0) size 18x272 + text run at (796,0) width 272: "\x{3000}\x{4E16}\x{306B}\x{4F4F}\x{3080}\x{3053}\x{3068}\x{4E8C}\x{5341}\x{5E74}\x{306B}\x{3057}\x{3066}\x{3001}\x{4F4F}\x{3080}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (794,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7532}\x{6590}" + LayoutText {#text} at (796,304) size 46x496 + text run at (796,304) width 192: "\x{3042}\x{308B}\x{4E16}\x{3068}\x{77E5}\x{3063}\x{305F}\x{3002}\x{4E8C}\x{5341}\x{4E94}\x{5E74}" + text run at (824,0) width 96: "\x{306B}\x{3057}\x{3066}\x{660E}\x{6697}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (822,95) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3072}\x{3087}\x{3046}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{8868}\x{88CF}" + LayoutText {#text} at (824,130) size 46x498 + text run at (824,130) width 368: "\x{306E}\x{3054}\x{3068}\x{304F}\x{3001}\x{65E5}\x{306E}\x{3042}\x{305F}\x{308B}\x{6240}\x{306B}\x{306F}\x{304D}\x{3063}\x{3068}\x{5F71}\x{304C}\x{3055}\x{3059}\x{3068}\x{609F}\x{3063}" + text run at (852,0) width 80: "\x{305F}\x{3002}\x{4E09}\x{5341}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (850,79) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3053}\x{3093}\x{306B}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4ECA}\x{65E5}" + LayoutText {#text} at (852,114) size 18x288 + text run at (852,114) width 288: "\x{306F}\x{3053}\x{3046}\x{601D}\x{3046}\x{3066}\x{3044}\x{308B}\x{3002}\x{2015}\x{2015}\x{559C}\x{3073}\x{306E}\x{6DF1}\x{304D}\x{3068}\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (850,398) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6182}" + LayoutText {#text} at (852,421) size 46x501 + text run at (852,421) width 80: "\x{3044}\x{3088}\x{3044}\x{3088}\x{6DF1}" + text run at (880,0) width 32: "\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (878,28) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{306E}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{697D}" + LayoutText {#text} at (880,51) size 46x499 + text run at (880,51) width 448: "\x{307F}\x{306E}\x{5927}\x{3044}\x{306A}\x{308B}\x{307B}\x{3069}\x{82E6}\x{3057}\x{307F}\x{3082}\x{5927}\x{304D}\x{3044}\x{3002}\x{3053}\x{308C}\x{3092}\x{5207}\x{308A}\x{653E}\x{305D}\x{3046}\x{3068}\x{3059}\x{308B}\x{3068}" + text run at (908,0) width 96: "\x{8EAB}\x{304C}\x{6301}\x{3066}\x{306C}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (906,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7247}" + LayoutText {#text} at (908,112) size 46x496 + text run at (908,112) width 384: "\x{3065}\x{3051}\x{3088}\x{3046}\x{3068}\x{3059}\x{308C}\x{3070}\x{4E16}\x{304C}\x{7ACB}\x{305F}\x{306C}\x{3002}\x{91D1}\x{306F}\x{5927}\x{4E8B}\x{3060}\x{3001}\x{5927}\x{4E8B}\x{306A}\x{3082}" + text run at (936,0) width 32: "\x{306E}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,32) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3075}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6B96}" + LayoutText {#text} at (936,48) size 18x48 + text run at (936,48) width 48: "\x{3048}\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,96) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5BDD}" + LayoutText {#text} at (936,112) size 18x16 + text run at (936,112) width 16: "\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,128) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9593}" + LayoutText {#text} at (936,144) size 46x496 + text run at (936,144) width 352: "\x{3082}\x{5FC3}\x{914D}\x{3060}\x{308D}\x{3046}\x{3002}\x{604B}\x{306F}\x{3046}\x{308C}\x{3057}\x{3044}\x{3001}\x{5B09}\x{3057}\x{3044}\x{604B}\x{304C}\x{7A4D}\x{3082}\x{308C}" + text run at (964,0) width 464: "\x{3070}\x{3001}\x{604B}\x{3092}\x{305B}\x{306C}\x{6614}\x{304C}\x{304B}\x{3048}\x{3063}\x{3066}\x{604B}\x{3057}\x{304B}\x{308D}\x{3002}\x{95A3}\x{50DA}\x{306E}\x{80A9}\x{306F}\x{6570}\x{767E}\x{4E07}\x{4EBA}\x{306E}\x{8DB3}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (962,463) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{3055}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{652F}" + LayoutText {#text} at (964,480) size 46x496 + text run at (964,480) width 16: "\x{3048}" + text run at (992,0) width 64: "\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (990,64) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305B}\x{306A}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{80CC}\x{4E2D}" + LayoutText {#text} at (992,96) size 46x496 + text run at (992,96) width 400: "\x{306B}\x{306F}\x{91CD}\x{3044}\x{5929}\x{4E0B}\x{304C}\x{304A}\x{3076}\x{3055}\x{3063}\x{3066}\x{3044}\x{308B}\x{3002}\x{3046}\x{307E}\x{3044}\x{7269}\x{3082}\x{98DF}\x{308F}\x{306D}\x{3070}\x{60DC}" + text run at (1020,0) width 128: "\x{3057}\x{3044}\x{3002}\x{5C11}\x{3057}\x{98DF}\x{3048}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1018,128) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{98FD}" + LayoutText {#text} at (1020,144) size 18x16 + text run at (1020,144) width 16: "\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1018,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (1020,176) size 18x288 + text run at (1020,176) width 288: "\x{3089}\x{306C}\x{3002}\x{5B58}\x{5206}\x{98DF}\x{3048}\x{3070}\x{3042}\x{3068}\x{304C}\x{4E0D}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{2026}\x{2026}" + LayoutBR {BR} at (1020,464) size 18x0 + LayoutText {#text} at (1048,0) size 18x16 + text run at (1048,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1046,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{4F59}" + LayoutText {#text} at (1048,32) size 18x16 + text run at (1048,32) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (1046,44) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{3093}\x{304C}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{8003}" + LayoutText {#text} at (1048,76) size 18x256 + text run at (1048,76) width 256: "\x{304C}\x{3053}\x{3053}\x{307E}\x{3067}\x{6F02}\x{6D41}\x{3057}\x{3066}\x{6765}\x{305F}\x{6642}\x{306B}\x{3001}\x{4F59}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1046,332) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3046}\x{305D}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{53F3}\x{8DB3}" + LayoutText {#text} at (1048,364) size 18x48 + text run at (1048,364) width 48: "\x{306F}\x{7A81}\x{7136}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1046,411) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3059}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5750}" + LayoutText {#text} at (1048,428) size 46x492 + text run at (1048,428) width 64: "\x{308A}\x{306E}\x{308F}\x{308B}" + text run at (1076,0) width 16: "\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1074,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{304F}\x{3044}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{89D2}\x{77F3}" + LayoutText {#text} at (1076,50) size 18x16 + text run at (1076,50) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1074,65) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306F}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7AEF}" + LayoutText {#text} at (1076,82) size 18x48 + text run at (1076,82) width 48: "\x{3092}\x{8E0F}\x{307F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1074,130) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{640D}" + LayoutText {#text} at (1076,146) size 18x80 + text run at (1076,146) width 80: "\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1074,225) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3078}\x{3044}\x{3053}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5E73}\x{8861}" + LayoutText {#text} at (1076,260) size 46x500 + text run at (1076,260) width 240: "\x{3092}\x{4FDD}\x{3064}\x{305F}\x{3081}\x{306B}\x{3001}\x{3059}\x{308F}\x{3084}\x{3068}\x{524D}\x{306B}\x{98DB}\x{3073}" + text run at (1104,0) width 48: "\x{51FA}\x{3057}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1102,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3055}\x{305D}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5DE6}\x{8DB3}" + LayoutText {#text} at (1104,80) size 18x32 + text run at (1104,80) width 32: "\x{304C}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1102,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{305D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4ED5}\x{640D}" + LayoutText {#text} at (1104,144) size 18x32 + text run at (1104,144) width 32: "\x{3058}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1102,176) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{57CB}" + LayoutText {#text} at (1104,192) size 18x16 + text run at (1104,192) width 16: "\x{3081}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1102,207) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3042}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5408}" + LayoutText {#text} at (1104,224) size 18x256 + text run at (1104,224) width 256: "\x{305B}\x{3092}\x{3059}\x{308B}\x{3068}\x{5171}\x{306B}\x{3001}\x{4F59}\x{306E}\x{8170}\x{306F}\x{5177}\x{5408}\x{3088}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1102,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307B}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65B9}" + LayoutText {#text} at (1132,0) size 18x144 + text run at (1132,0) width 144: "\x{4E09}\x{5C3A}\x{307B}\x{3069}\x{306A}\x{5CA9}\x{306E}\x{4E0A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5378}" + LayoutText {#text} at (1132,160) size 18x208 + text run at (1132,160) width 208: "\x{308A}\x{305F}\x{3002}\x{80A9}\x{306B}\x{304B}\x{3051}\x{305F}\x{7D75}\x{306E}\x{5177}\x{7BB1}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{814B}" + LayoutText {#text} at (1132,384) size 18x64 + text run at (1132,384) width 64: "\x{306E}\x{4E0B}\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,447) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8E8D}" + LayoutText {#text} at (1132,464) size 46x496 + text run at (1132,464) width 32: "\x{308A}\x{51FA}" + text run at (1160,0) width 144: "\x{3057}\x{305F}\x{3060}\x{3051}\x{3067}\x{3001}\x{5E78}\x{3044}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1158,143) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4F55}" + LayoutText {#text} at (1160,160) size 18x128 + text run at (1160,160) width 128: "\x{306E}\x{4E8B}\x{3082}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}" + LayoutBR {BR} at (1160,288) size 18x0 + LayoutText {#text} at (1188,0) size 18x240 + text run at (1188,0) width 240: "\x{3000}\x{7ACB}\x{3061}\x{4E0A}\x{304C}\x{308B}\x{6642}\x{306B}\x{5411}\x{3046}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1186,238.98) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307F}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8DEF}" + LayoutText {#text} at (1188,255) size 46x496 + text run at (1188,255) width 240: "\x{304B}\x{3089}\x{5DE6}\x{306E}\x{65B9}\x{306B}\x{30D0}\x{30B1}\x{30C4}\x{3092}\x{4F0F}\x{305B}\x{305F}\x{3088}\x{3046}" + text run at (1216,0) width 48: "\x{306A}\x{5CF0}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1214,47) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305D}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8073}" + LayoutText {#text} at (1216,64) size 18x112 + text run at (1216,64) width 112: "\x{3048}\x{3066}\x{3044}\x{308B}\x{3002}\x{6749}\x{304B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1214,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3072}\x{306E}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6A9C}" + LayoutText {#text} at (1216,195) size 18x112 + text run at (1216,195) width 112: "\x{304B}\x{5206}\x{304B}\x{3089}\x{306A}\x{3044}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1214,307) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306D}\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6839}\x{5143}" + LayoutText {#text} at (1216,339) size 18x32 + text run at (1216,339) width 32: "\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1214,367) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3044}\x{305F}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{9802}" + LayoutText {#text} at (1216,390) size 46x502 + text run at (1216,390) width 112: "\x{304D}\x{307E}\x{3067}\x{3053}\x{3068}\x{3054}\x{3068}" + text run at (1244,0) width 16: "\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1242,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3042}\x{304A}\x{3050}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{84BC}\x{9ED2}" + LayoutText {#text} at (1244,50) size 18x240 + text run at (1244,50) width 240: "\x{3044}\x{4E2D}\x{306B}\x{3001}\x{5C71}\x{685C}\x{304C}\x{8584}\x{8D64}\x{304F}\x{3060}\x{3093}\x{3060}\x{3089}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1242,290) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305F}\x{306A}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{68DA}\x{5F15}" + LayoutText {#text} at (1244,322) size 18x48 + text run at (1244,322) width 48: "\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,370) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{7D9A}" + LayoutText {#text} at (1244,386) size 18x16 + text run at (1244,386) width 16: "\x{304E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,402) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3081}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{76EE}" + LayoutText {#text} at (1244,418) size 18x16 + text run at (1244,418) width 16: "\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,433) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3057}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{78BA}" + LayoutText {#text} at (1244,450) size 46x498 + text run at (1244,450) width 48: "\x{3068}\x{898B}\x{3048}" + text run at (1272,0) width 64: "\x{306C}\x{304F}\x{3089}\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,63) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3082}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{9744}" + LayoutText {#text} at (1272,80) size 18x144 + text run at (1272,80) width 144: "\x{304C}\x{6FC3}\x{3044}\x{3002}\x{5C11}\x{3057}\x{624B}\x{524D}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1270,223) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3052}\x{3084}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{79BF}\x{5C71}" + LayoutText {#text} at (1272,258) size 18x64 + text run at (1272,258) width 64: "\x{304C}\x{4E00}\x{3064}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,321) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3050}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7FA4}" + LayoutText {#text} at (1272,338) size 18x96 + text run at (1272,338) width 96: "\x{3092}\x{306C}\x{304D}\x{3093}\x{3067}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,433) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{3086}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7709}" + LayoutText {#text} at (1272,450) size 18x16 + text run at (1272,450) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1270,465) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305B}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{903C}" + LayoutText {#text} at (1300,0) size 18x32 + text run at (1300,0) width 32: "\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,32) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{79BF}" + LayoutText {#text} at (1300,48) size 18x128 + text run at (1300,48) width 128: "\x{3052}\x{305F}\x{5074}\x{9762}\x{306F}\x{5DE8}\x{4EBA}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,175) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{306E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65A7}" + LayoutText {#text} at (1300,192) size 18x16 + text run at (1300,192) width 16: "\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,207) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3051}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{524A}" + LayoutText {#text} at (1300,224) size 46x496 + text run at (1300,224) width 272: "\x{308A}\x{53BB}\x{3063}\x{305F}\x{304B}\x{3001}\x{92ED}\x{3069}\x{304D}\x{5E73}\x{9762}\x{3092}\x{3084}\x{3051}\x{306B}\x{8C37}\x{306E}" + text run at (1328,0) width 32: "\x{5E95}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1326,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{57CB}" + LayoutText {#text} at (1328,48) size 18x80 + text run at (1328,48) width 80: "\x{3081}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1326,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3066}\x{3063}\x{307A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5929}\x{8FBA}" + LayoutText {#text} at (1328,162) size 18x336 + text run at (1328,162) width 336: "\x{306B}\x{4E00}\x{672C}\x{898B}\x{3048}\x{308B}\x{306E}\x{306F}\x{8D64}\x{677E}\x{3060}\x{308D}\x{3046}\x{3002}\x{679D}\x{306E}\x{9593}\x{306E}\x{7A7A}\x{3055}\x{3048}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (1354,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3063}\x{304D}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5224}\x{7136}" + LayoutText {#text} at (1356,35) size 18x448 + text run at (1356,35) width 448: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{884C}\x{304F}\x{624B}\x{306F}\x{4E8C}\x{4E01}\x{307B}\x{3069}\x{3067}\x{5207}\x{308C}\x{3066}\x{3044}\x{308B}\x{304C}\x{3001}\x{9AD8}\x{3044}\x{6240}\x{304B}\x{3089}\x{8D64}\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1382,0) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3051}\x{3063}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6BDB}\x{5E03}" + LayoutText {#text} at (1384,32) size 46x496 + text run at (1384,32) width 464: "\x{304C}\x{52D5}\x{3044}\x{3066}\x{6765}\x{308B}\x{306E}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}\x{767B}\x{308C}\x{3070}\x{3042}\x{3059}\x{3053}\x{3078}\x{51FA}\x{308B}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{8DEF}\x{306F}\x{3059}" + text run at (1412,0) width 48: "\x{3053}\x{3076}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1410,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306A}\x{3093}\x{304E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96E3}\x{7FA9}" + LayoutText {#text} at (1412,80) size 18x32 + text run at (1412,80) width 32: "\x{3060}\x{3002}" + LayoutBR {BR} at (1412,112) size 18x0 + LayoutText {#text} at (1440,0) size 18x208 + text run at (1440,0) width 208: "\x{3000}\x{571F}\x{3092}\x{306A}\x{3089}\x{3059}\x{3060}\x{3051}\x{306A}\x{3089}\x{3055}\x{307B}\x{3069}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1438,207.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{3066}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{624B}\x{9593}" + LayoutText {#text} at (1440,239) size 18x17 + text run at (1440,239) width 16: "\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1438,255.98) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5165}" + LayoutText {#text} at (1440,271) size 46x496 + text run at (1440,271) width 224: "\x{308B}\x{307E}\x{3044}\x{304C}\x{3001}\x{571F}\x{306E}\x{4E2D}\x{306B}\x{306F}\x{5927}\x{304D}\x{306A}\x{77F3}" + text run at (1468,0) width 96: "\x{304C}\x{3042}\x{308B}\x{3002}\x{571F}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1466,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E73}" + LayoutText {#text} at (1468,112) size 46x496 + text run at (1468,112) width 384: "\x{3089}\x{306B}\x{3057}\x{3066}\x{3082}\x{77F3}\x{306F}\x{5E73}\x{3089}\x{306B}\x{306A}\x{3089}\x{306C}\x{3002}\x{77F3}\x{306F}\x{5207}\x{308A}\x{7815}\x{3044}\x{3066}\x{3082}\x{3001}\x{5CA9}" + text run at (1496,0) width 128: "\x{306F}\x{59CB}\x{672B}\x{304C}\x{3064}\x{304B}\x{306C}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1494,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307B}\x{308A}\x{304F}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6398}\x{5D29}" + LayoutText {#text} at (1496,162) size 18x96 + text run at (1496,162) width 96: "\x{3057}\x{305F}\x{571F}\x{306E}\x{4E0A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1494,257) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3086}\x{3046}\x{305C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{60A0}\x{7136}" + LayoutText {#text} at (1496,292) size 18x16 + text run at (1496,292) width 16: "\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1494,304) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305D}\x{3070}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5CD9}" + LayoutText {#text} at (1496,327) size 46x503 + text run at (1496,327) width 176: "\x{3063}\x{3066}\x{3001}\x{543E}\x{3089}\x{306E}\x{305F}\x{3081}\x{306B}\x{9053}\x{3092}" + text run at (1524,0) width 32: "\x{8B72}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1522,32) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3051}\x{3057}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{666F}\x{8272}" + LayoutText {#text} at (1524,64) size 46x480 + text run at (1524,64) width 416: "\x{306F}\x{306A}\x{3044}\x{3002}\x{5411}\x{3046}\x{3067}\x{805E}\x{304B}\x{306C}\x{4E0A}\x{306F}\x{4E57}\x{308A}\x{8D8A}\x{3059}\x{304B}\x{3001}\x{5EFB}\x{3089}\x{306A}\x{3051}\x{308C}\x{3070}\x{306A}\x{3089}" + text run at (1552,0) width 32: "\x{3093}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1550,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3044}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5DCC}" + LayoutText {#text} at (1552,48) size 18x112 + text run at (1552,48) width 112: "\x{306E}\x{306A}\x{3044}\x{6240}\x{3067}\x{3055}\x{3048}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1550,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6B69}" + LayoutText {#text} at (1552,176) size 18x304 + text run at (1552,176) width 304: "\x{308B}\x{304D}\x{3088}\x{304F}\x{306F}\x{306A}\x{3044}\x{3002}\x{5DE6}\x{53F3}\x{304C}\x{9AD8}\x{304F}\x{3063}\x{3066}\x{3001}\x{4E2D}\x{5FC3}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1550,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{307C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7AAA}" + LayoutText {#text} at (1580,0) size 18x128 + text run at (1580,0) width 128: "\x{3093}\x{3067}\x{3001}\x{307E}\x{308B}\x{3067}\x{4E00}\x{9593}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1578,127) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306F}\x{3070}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E45}" + LayoutText {#text} at (1580,144) size 18x64 + text run at (1580,144) width 64: "\x{3092}\x{4E09}\x{89D2}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1578,208) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{7A7F}" + LayoutText {#text} at (1580,224) size 18x128 + text run at (1580,224) width 128: "\x{3063}\x{3066}\x{3001}\x{305D}\x{306E}\x{9802}\x{70B9}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1578,351) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307E}\x{3093}\x{306A}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{771F}\x{4E2D}" + LayoutText {#text} at (1580,386) size 18x16 + text run at (1580,386) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1578,398) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3064}\x{3089}\x{306C}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{8CAB}" + LayoutText {#text} at (1580,421) size 46x501 + text run at (1580,421) width 80: "\x{3044}\x{3066}\x{3044}\x{308B}\x{3068}" + text run at (1608,0) width 320: "\x{8A55}\x{3057}\x{3066}\x{3082}\x{3088}\x{3044}\x{3002}\x{8DEF}\x{3092}\x{884C}\x{304F}\x{3068}\x{4E91}\x{308F}\x{3093}\x{3088}\x{308A}\x{5DDD}\x{5E95}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1606,319) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6E09}" + LayoutText {#text} at (1608,336) size 18x160 + text run at (1608,336) width 160: "\x{308B}\x{3068}\x{4E91}\x{3046}\x{65B9}\x{304C}\x{9069}\x{5F53}\x{3060}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1634,0) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{56FA}" + LayoutText {#text} at (1636,17) size 18x256 + text run at (1636,17) width 256: "\x{3088}\x{308A}\x{6025}\x{3050}\x{65C5}\x{3067}\x{306A}\x{3044}\x{304B}\x{3089}\x{3001}\x{3076}\x{3089}\x{3076}\x{3089}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1634,272) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306A}\x{306A}\x{307E}\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E03}\x{66F2}" + LayoutText {#text} at (1636,307) size 18x96 + text run at (1636,307) width 96: "\x{308A}\x{3078}\x{304B}\x{304B}\x{308B}\x{3002}" + LayoutBR {BR} at (1636,403) size 18x0 + LayoutText {#text} at (1664,0) size 18x144 + text run at (1664,0) width 144: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{8DB3}\x{306E}\x{4E0B}\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1662,143.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1664,175) size 18x161 + text run at (1664,175) width 160: "\x{306E}\x{58F0}\x{304C}\x{3057}\x{51FA}\x{3057}\x{305F}\x{3002}\x{8C37}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1662,335.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898B}\x{4E0B}" + LayoutText {#text} at (1664,367) size 46x496 + text run at (1664,367) width 128: "\x{3057}\x{305F}\x{304C}\x{3001}\x{3069}\x{3053}\x{3067}\x{9CF4}" + text run at (1692,0) width 480: "\x{3044}\x{3066}\x{308B}\x{304B}\x{5F71}\x{3082}\x{5F62}\x{3082}\x{898B}\x{3048}\x{306C}\x{3002}\x{305F}\x{3060}\x{58F0}\x{3060}\x{3051}\x{304C}\x{660E}\x{3089}\x{304B}\x{306B}\x{805E}\x{3048}\x{308B}\x{3002}\x{305B}\x{3063}\x{305B}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1690,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305B}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5FD9}" + LayoutText {#text} at (1720,0) size 18x48 + text run at (1720,0) width 48: "\x{3057}\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1718,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305F}\x{3048}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7D76}\x{9593}" + LayoutText {#text} at (1720,80) size 18x128 + text run at (1720,80) width 128: "\x{306A}\x{304F}\x{9CF4}\x{3044}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1718,208) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{307B}\x{3046}\x{3044}\x{304F}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{65B9}\x{5E7E}\x{91CC}" + LayoutText {#text} at (1720,256) size 18x112 + text run at (1720,256) width 112: "\x{306E}\x{7A7A}\x{6C17}\x{304C}\x{4E00}\x{9762}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1718,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{86A4}" + LayoutText {#text} at (1720,384) size 46x496 + text run at (1720,384) width 112: "\x{306B}\x{523A}\x{3055}\x{308C}\x{3066}\x{3044}\x{305F}" + text run at (1748,0) width 304: "\x{305F}\x{307E}\x{308C}\x{306A}\x{3044}\x{3088}\x{3046}\x{306A}\x{6C17}\x{304C}\x{3059}\x{308B}\x{3002}\x{3042}\x{306E}\x{9CE5}\x{306E}\x{9CF4}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1746,304) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{97F3}" + LayoutText {#text} at (1748,320) size 90x496 + text run at (1748,320) width 176: "\x{306B}\x{306F}\x{77AC}\x{6642}\x{306E}\x{4F59}\x{88D5}\x{3082}\x{306A}\x{3044}\x{3002}" + text run at (1770,0) width 496: "\x{306E}\x{3069}\x{304B}\x{306A}\x{6625}\x{306E}\x{65E5}\x{3092}\x{9CF4}\x{304D}\x{5C3D}\x{304F}\x{3057}\x{3001}\x{9CF4}\x{304D}\x{3042}\x{304B}\x{3057}\x{3001}\x{307E}\x{305F}\x{9CF4}\x{304D}\x{66AE}\x{3089}\x{3055}\x{306A}\x{3051}\x{308C}\x{3070}" + text run at (1792,0) width 496: "\x{6C17}\x{304C}\x{6E08}\x{307E}\x{3093}\x{3068}\x{898B}\x{3048}\x{308B}\x{3002}\x{305D}\x{306E}\x{4E0A}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}\x{3066}\x{884C}\x{304F}\x{3001}\x{3044}\x{3064}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}" + text run at (1820,0) width 432: "\x{3066}\x{884C}\x{304F}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{304D}\x{3063}\x{3068}\x{96F2}\x{306E}\x{4E2D}\x{3067}\x{6B7B}\x{306C}\x{306B}\x{76F8}\x{9055}\x{306A}\x{3044}\x{3002}\x{767B}\x{308A}\x{8A70}\x{3081}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1818,432) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3042}\x{3052}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{63DA}\x{53E5}" + LayoutText {#text} at (1820,464) size 46x496 + text run at (1820,464) width 32: "\x{306F}\x{3001}" + text run at (1848,0) width 80: "\x{6D41}\x{308C}\x{3066}\x{96F2}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1846,80) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5165}" + LayoutText {#text} at (1848,96) size 18x48 + text run at (1848,96) width 48: "\x{3063}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1846,140) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{3060}\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6F02}" + LayoutText {#text} at (1848,163) size 46x499 + text run at (1848,163) width 336: "\x{3046}\x{3066}\x{3044}\x{308B}\x{3046}\x{3061}\x{306B}\x{5F62}\x{306F}\x{6D88}\x{3048}\x{3066}\x{306A}\x{304F}\x{306A}\x{3063}\x{3066}\x{3001}\x{305F}\x{3060}\x{58F0}" + text run at (1876,0) width 80: "\x{3060}\x{3051}\x{304C}\x{7A7A}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1874,79) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{88E1}" + LayoutText {#text} at (1876,96) size 18x176 + text run at (1876,96) width 176: "\x{306B}\x{6B8B}\x{308B}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{3002}" + LayoutBR {BR} at (1876,272) size 18x0 + LayoutText {#text} at (1904,0) size 18x16 + text run at (1904,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1902,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3044}\x{308F}\x{304B}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5DCC}\x{89D2}" + LayoutText {#text} at (1904,50) size 18x128 + text run at (1904,50) width 128: "\x{3092}\x{92ED}\x{3069}\x{304F}\x{5EFB}\x{3063}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1902,178) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3042}\x{3093}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6309}\x{6469}" + LayoutText {#text} at (1904,210) size 18x32 + text run at (1904,210) width 32: "\x{306A}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x52 + LayoutRubyRun (anonymous) at (1902,241) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{307E}\x{3063}\x{3055}\x{304B}\x{3055}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{771F}\x{9006}\x{69D8}" + LayoutText {#text} at (1904,294) size 18x144 + text run at (1904,294) width 144: "\x{306B}\x{843D}\x{3064}\x{308B}\x{3068}\x{3053}\x{308D}\x{3092}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1902,437) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304D}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{969B}" + LayoutText {#text} at (1904,454) size 46x502 + text run at (1904,454) width 48: "\x{3069}\x{304F}\x{53F3}" + text run at (1932,0) width 112: "\x{3078}\x{5207}\x{308C}\x{3066}\x{3001}\x{6A2A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1930,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898B}\x{4E0B}" + LayoutText {#text} at (1932,144) size 18x48 + text run at (1932,144) width 48: "\x{3059}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1930,192) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{83DC}" + LayoutText {#text} at (1932,208) size 46x496 + text run at (1932,208) width 288: "\x{306E}\x{82B1}\x{304C}\x{4E00}\x{9762}\x{306B}\x{898B}\x{3048}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{3042}\x{3059}\x{3053}\x{3078}\x{843D}" + text run at (1960,0) width 240: "\x{3061}\x{308B}\x{306E}\x{304B}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{3044}\x{3044}\x{3084}\x{3001}\x{3042}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1958,240) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3053}\x{304C}\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9EC4}\x{91D1}" + LayoutText {#text} at (1960,272) size 46x496 + text run at (1960,272) width 224: "\x{306E}\x{539F}\x{304B}\x{3089}\x{98DB}\x{3073}\x{4E0A}\x{304C}\x{3063}\x{3066}\x{304F}\x{308B}\x{306E}\x{304B}" + text run at (1988,0) width 240: "\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{6B21}\x{306B}\x{306F}\x{843D}\x{3061}\x{308B}\x{96F2}\x{96C0}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1986,239) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3042}\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4E0A}" + LayoutText {#text} at (1988,256) size 18x16 + text run at (1988,256) width 16: "\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1986,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1988,304) size 46x496 + text run at (1988,304) width 192: "\x{304C}\x{5341}\x{6587}\x{5B57}\x{306B}\x{3059}\x{308C}\x{9055}\x{3046}\x{306E}\x{304B}\x{3068}" + text run at (2016,0) width 400: "\x{601D}\x{3063}\x{305F}\x{3002}\x{6700}\x{5F8C}\x{306B}\x{3001}\x{843D}\x{3061}\x{308B}\x{6642}\x{3082}\x{3001}\x{4E0A}\x{308B}\x{6642}\x{3082}\x{3001}\x{307E}\x{305F}\x{5341}\x{6587}\x{5B57}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (2014,400) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{64E6}" + LayoutText {#text} at (2016,416) size 40x496 + text run at (2016,416) width 80: "\x{308C}\x{9055}\x{3046}\x{3068}\x{304D}" + text run at (2038,0) width 320: "\x{306B}\x{3082}\x{5143}\x{6C17}\x{3088}\x{304F}\x{9CF4}\x{304D}\x{3064}\x{3065}\x{3051}\x{308B}\x{3060}\x{308D}\x{3046}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}" + LayoutBR {BR} at (2038,320) size 18x0 + LayoutText {#text} at (2066,0) size 18x192 + text run at (2066,0) width 192: "\x{3000}\x{6625}\x{306F}\x{7720}\x{304F}\x{306A}\x{308B}\x{3002}\x{732B}\x{306F}\x{9F20}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (2064,191.98) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6355}" + LayoutText {#text} at (2066,207) size 46x496 + text run at (2066,207) width 288: "\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}\x{3001}\x{4EBA}\x{9593}\x{306F}\x{501F}\x{91D1}\x{306E}\x{3042}\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}" + text run at (2094,0) width 128: "\x{308B}\x{3002}\x{6642}\x{306B}\x{306F}\x{81EA}\x{5206}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (2092,124) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305F}\x{307E}\x{3057}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{9B42}" + LayoutText {#text} at (2094,156) size 18x16 + text run at (2094,156) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (2092,171) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3044}\x{3069}\x{3053}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C45}\x{6240}" + LayoutText {#text} at (2094,206) size 46x494 + text run at (2094,206) width 288: "\x{3055}\x{3048}\x{5FD8}\x{308C}\x{3066}\x{6B63}\x{4F53}\x{306A}\x{304F}\x{306A}\x{308B}\x{3002}\x{305F}\x{3060}\x{83DC}\x{306E}\x{82B1}\x{3092}" + text run at (2122,0) width 160: "\x{9060}\x{304F}\x{671B}\x{3093}\x{3060}\x{3068}\x{304D}\x{306B}\x{773C}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (2120,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3055}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9192}" + LayoutText {#text} at (2122,176) size 18x320 + text run at (2122,176) width 320: "\x{3081}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{58F0}\x{3092}\x{805E}\x{3044}\x{305F}\x{3068}\x{304D}\x{306B}\x{9B42}\x{306E}\x{3042}\x{308A}\x{304B}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (2148,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3093}\x{305C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5224}\x{7136}" + LayoutText {#text} at (2150,35) size 62x499 + text run at (2150,35) width 464: "\x{3059}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{9CF4}\x{304F}\x{306E}\x{306F}\x{53E3}\x{3067}\x{9CF4}\x{304F}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3001}\x{9B42}\x{5168}\x{4F53}\x{304C}\x{9CF4}\x{304F}\x{306E}\x{3060}\x{3002}" + text run at (2172,0) width 496: "\x{9B42}\x{306E}\x{6D3B}\x{52D5}\x{304C}\x{58F0}\x{306B}\x{3042}\x{3089}\x{308F}\x{308C}\x{305F}\x{3082}\x{306E}\x{306E}\x{3046}\x{3061}\x{3067}\x{3001}\x{3042}\x{308C}\x{307B}\x{3069}\x{5143}\x{6C17}\x{306E}\x{3042}\x{308B}\x{3082}\x{306E}\x{306F}" + text run at (2194,0) width 464: "\x{306A}\x{3044}\x{3002}\x{3042}\x{3042}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{3053}\x{3046}\x{601D}\x{3063}\x{3066}\x{3001}\x{3053}\x{3046}\x{6109}\x{5FEB}\x{306B}\x{306A}\x{308B}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (2194,464) size 18x0 + LayoutText {#text} at (2216,0) size 46x496 + text run at (2216,0) width 496: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{8A69}\x{3092}\x{601D}\x{3044}\x{51FA}\x{3057}\x{3066}\x{3001}\x{53E3}\x{306E}\x{3046}\x{3061}\x{3067}\x{899A}\x{3048}\x{305F}\x{3068}\x{3053}" + text run at (2244,0) width 48: "\x{308D}\x{3060}\x{3051}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (2242,45) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3042}\x{3093}\x{3057}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{6697}\x{8AA6}" + LayoutText {#text} at (2244,87) size 40x503 + text run at (2244,87) width 416: "\x{3057}\x{3066}\x{898B}\x{305F}\x{304C}\x{3001}\x{899A}\x{3048}\x{3066}\x{3044}\x{308B}\x{3068}\x{3053}\x{308D}\x{306F}\x{4E8C}\x{4E09}\x{53E5}\x{3057}\x{304B}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}\x{305D}" + text run at (2266,0) width 256: "\x{306E}\x{4E8C}\x{4E09}\x{53E5}\x{306E}\x{306A}\x{304B}\x{306B}\x{3053}\x{3093}\x{306A}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (2266,256) size 18x0 + LayoutBlockFlow {DIV} at (2286,32) size 106x472 + LayoutText {#text} at (2,0) size 18x191 + text run at (2,0) width 191: "\x{3000}\x{3000}We look before and after" + LayoutBR {BR} at (2,190) size 18x1 + LayoutText {#text} at (24,0) size 18x225 + text run at (24,0) width 225: "\x{3000}\x{3000}\x{3000}\x{3000}And pine for what is not:" + LayoutBR {BR} at (24,224) size 18x1 + LayoutText {#text} at (46,0) size 18x174 + text run at (46,0) width 174: "\x{3000}\x{3000}Our sincerest laughter" + LayoutBR {BR} at (46,173) size 18x1 + LayoutText {#text} at (68,0) size 18x234 + text run at (68,0) width 234: "\x{3000}\x{3000}\x{3000}\x{3000}With some pain is fraught;" + LayoutBR {BR} at (68,234) size 18x0 + LayoutText {#text} at (88,0) size 18x363 + text run at (88,0) width 363: "Our sweetest songs are those that tell of saddest thought." + LayoutBR {BR} at (88,362) size 18x1 + LayoutBlockFlow (anonymous) at (2392,0) size 1714x504 + LayoutText {#text} at (10,0) size 18x112 + text run at (10,0) width 112: "\x{300C}\x{524D}\x{3092}\x{307F}\x{3066}\x{306F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (8,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3057}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F8C}" + LayoutText {#text} at (10,128) size 18x96 + text run at (10,128) width 96: "\x{3048}\x{3092}\x{898B}\x{3066}\x{306F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (8,224) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3082}\x{306E}\x{307B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7269}\x{6B32}" + LayoutText {#text} at (10,256) size 46x496 + text run at (10,256) width 240: "\x{3057}\x{3068}\x{3001}\x{3042}\x{3053}\x{304C}\x{308B}\x{308B}\x{304B}\x{306A}\x{308F}\x{308C}\x{3002}\x{8179}\x{304B}" + text run at (38,0) width 448: "\x{3089}\x{306E}\x{3001}\x{7B11}\x{3068}\x{3044}\x{3048}\x{3069}\x{3001}\x{82E6}\x{3057}\x{307F}\x{306E}\x{3001}\x{305D}\x{3053}\x{306B}\x{3042}\x{308B}\x{3079}\x{3057}\x{3002}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (36,447) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304D}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6975}" + LayoutText {#text} at (38,464) size 46x496 + text run at (38,464) width 32: "\x{307F}\x{306E}" + text run at (66,0) width 176: "\x{6B4C}\x{306B}\x{3001}\x{60B2}\x{3057}\x{3055}\x{306E}\x{3001}\x{6975}\x{307F}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (64,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304A}\x{3082}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{60F3}" + LayoutText {#text} at (66,195) size 18x16 + text run at (66,195) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (64,210) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3053}\x{3082}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7C60}" + LayoutText {#text} at (66,227) size 18x96 + text run at (66,227) width 96: "\x{308B}\x{3068}\x{305E}\x{77E5}\x{308C}\x{300D}" + LayoutBR {BR} at (66,323) size 18x0 + LayoutText {#text} at (88,0) size 46x496 + text run at (88,0) width 496: "\x{3000}\x{306A}\x{308B}\x{307B}\x{3069}\x{3044}\x{304F}\x{3089}\x{8A69}\x{4EBA}\x{304C}\x{5E78}\x{798F}\x{3067}\x{3082}\x{3001}\x{3042}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{3088}\x{3046}\x{306B}\x{601D}\x{3044}\x{5207}\x{3063}\x{3066}\x{3001}\x{4E00}" + text run at (116,0) width 320: "\x{5FC3}\x{4E0D}\x{4E71}\x{306B}\x{3001}\x{524D}\x{5F8C}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3001}\x{308F}\x{304C}\x{559C}\x{3073}\x{3092}\x{6B4C}\x{3046}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (114,319) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{3051}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8A33}" + LayoutText {#text} at (116,336) size 46x496 + text run at (116,336) width 160: "\x{306B}\x{306F}\x{884C}\x{304F}\x{307E}\x{3044}\x{3002}\x{897F}\x{6D0B}\x{306E}" + text run at (144,0) width 256: "\x{8A69}\x{306F}\x{7121}\x{8AD6}\x{306E}\x{4E8B}\x{3001}\x{652F}\x{90A3}\x{306E}\x{8A69}\x{306B}\x{3082}\x{3001}\x{3088}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (142,255) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3070}\x{3093}\x{3053}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E07}\x{659B}" + LayoutText {#text} at (144,290) size 18x16 + text run at (144,290) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (142,302) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6101}" + LayoutText {#text} at (144,325) size 46x501 + text run at (144,325) width 176: "\x{306A}\x{3069}\x{3068}\x{4E91}\x{3046}\x{5B57}\x{304C}\x{3042}\x{308B}\x{3002}\x{8A69}" + text run at (172,0) width 112: "\x{4EBA}\x{3060}\x{304B}\x{3089}\x{4E07}\x{659B}\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (170,111) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{308D}\x{3046}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7D20}\x{4EBA}" + LayoutText {#text} at (172,146) size 18x48 + text run at (172,146) width 48: "\x{306A}\x{3089}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (170,193) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3054}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5408}" + LayoutText {#text} at (172,210) size 46x498 + text run at (172,210) width 288: "\x{3067}\x{6E08}\x{3080}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{3002}\x{3057}\x{3066}\x{898B}\x{308B}\x{3068}\x{8A69}\x{4EBA}\x{306F}\x{5E38}" + text run at (200,0) width 160: "\x{306E}\x{4EBA}\x{3088}\x{308A}\x{3082}\x{82E6}\x{52B4}\x{6027}\x{3067}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (198,159) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307C}\x{3093}\x{3053}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{51E1}\x{9AA8}" + LayoutText {#text} at (200,194) size 46x498 + text run at (200,194) width 304: "\x{306E}\x{500D}\x{4EE5}\x{4E0A}\x{306B}\x{795E}\x{7D4C}\x{304C}\x{92ED}\x{654F}\x{306A}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{3093}\x{3002}\x{8D85}" + text run at (228,0) width 208: "\x{4FD7}\x{306E}\x{559C}\x{3073}\x{3082}\x{3042}\x{308D}\x{3046}\x{304C}\x{3001}\x{7121}\x{91CF}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (226,204) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{306A}\x{3057}\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{60B2}" + LayoutText {#text} at (228,236) size 40x492 + text run at (228,236) width 256: "\x{3082}\x{591A}\x{304B}\x{308D}\x{3046}\x{3002}\x{305D}\x{3093}\x{306A}\x{3089}\x{3070}\x{8A69}\x{4EBA}\x{306B}\x{306A}\x{308B}" + text run at (250,0) width 112: "\x{306E}\x{3082}\x{8003}\x{3048}\x{7269}\x{3060}\x{3002}" + LayoutBR {BR} at (250,112) size 18x0 + LayoutText {#text} at (278,0) size 18x128 + text run at (278,0) width 128: "\x{3000}\x{3057}\x{3070}\x{3089}\x{304F}\x{306F}\x{8DEF}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (276,123.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{3044}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5E73}" + LayoutText {#text} at (278,146) size 18x65 + text run at (278,146) width 64: "\x{3067}\x{3001}\x{53F3}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x49 + LayoutRubyRun (anonymous) at (276,210.98) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{305E}\x{3046}\x{304D}\x{3084}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{96D1}\x{6728}\x{5C71}" + LayoutText {#text} at (278,258) size 46x499 + text run at (278,258) width 240: "\x{3001}\x{5DE6}\x{306F}\x{83DC}\x{306E}\x{82B1}\x{306E}\x{898B}\x{3064}\x{3065}\x{3051}\x{3067}\x{3042}\x{308B}\x{3002}" + text run at (306,0) width 96: "\x{8DB3}\x{306E}\x{4E0B}\x{306B}\x{6642}\x{3005}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (304,96) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,1) size 10x46 + text run at (2,1) width 45: "\x{305F}\x{3093}\x{307D}\x{307D}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{84B2}\x{516C}\x{82F1}" + LayoutText {#text} at (306,144) size 18x112 + text run at (306,144) width 112: "\x{3092}\x{8E0F}\x{307F}\x{3064}\x{3051}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (304,252) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306E}\x{3053}\x{304E}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{92F8}" + LayoutText {#text} at (306,284) size 46x492 + text run at (306,284) width 208: "\x{306E}\x{3088}\x{3046}\x{306A}\x{8449}\x{304C}\x{9060}\x{616E}\x{306A}\x{304F}\x{56DB}\x{65B9}\x{3078}" + text run at (334,0) width 144: "\x{306E}\x{3057}\x{3066}\x{771F}\x{4E2D}\x{306B}\x{9EC4}\x{8272}\x{306A}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (332,143) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{73E0}" + LayoutText {#text} at (334,160) size 68x496 + text run at (334,160) width 336: "\x{3092}\x{64C1}\x{8B77}\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{306B}\x{6C17}\x{3092}\x{3068}\x{3089}\x{308C}\x{3066}\x{3001}\x{8E0F}\x{307F}" + text run at (356,0) width 496: "\x{3064}\x{3051}\x{305F}\x{3042}\x{3068}\x{3067}\x{3001}\x{6C17}\x{306E}\x{6BD2}\x{306A}\x{4E8B}\x{3092}\x{3057}\x{305F}\x{3068}\x{3001}\x{632F}\x{308A}\x{5411}\x{3044}\x{3066}\x{898B}\x{308B}\x{3068}\x{3001}\x{9EC4}\x{8272}\x{306A}\x{73E0}\x{306F}" + text run at (384,0) width 160: "\x{4F9D}\x{7136}\x{3068}\x{3057}\x{3066}\x{92F8}\x{306E}\x{306A}\x{304B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (382,160) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3061}\x{3093}\x{3056}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{93AE}\x{5EA7}" + LayoutText {#text} at (384,192) size 18x80 + text run at (384,192) width 80: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (382,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306E}\x{3093}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5451}\x{6C17}" + LayoutText {#text} at (384,304) size 40x496 + text run at (384,304) width 192: "\x{306A}\x{3082}\x{306E}\x{3060}\x{3002}\x{307E}\x{305F}\x{8003}\x{3048}\x{3092}\x{3064}\x{3065}" + text run at (406,0) width 48: "\x{3051}\x{308B}\x{3002}" + LayoutBR {BR} at (406,48) size 18x0 + LayoutText {#text} at (434,0) size 18x64 + text run at (434,0) width 64: "\x{3000}\x{8A69}\x{4EBA}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (432,59.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6182}" + LayoutText {#text} at (434,82) size 18x241 + text run at (434,82) width 240: "\x{306F}\x{3064}\x{304D}\x{3082}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{304C}\x{3001}\x{3042}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (432,322.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (434,354) size 18x145 + text run at (434,354) width 144: "\x{3092}\x{805E}\x{304F}\x{5FC3}\x{6301}\x{306B}\x{306A}\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (460,0) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{3058}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5FAE}\x{5875}" + LayoutText {#text} at (462,32) size 18x16 + text run at (462,32) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (460,48) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{82E6}" + LayoutText {#text} at (462,64) size 18x336 + text run at (462,64) width 336: "\x{3082}\x{306A}\x{3044}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{3092}\x{898B}\x{3066}\x{3082}\x{3001}\x{305F}\x{3060}\x{3046}\x{308C}\x{3057}\x{304F}\x{3066}\x{80F8}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (460,399) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8E8D}" + LayoutText {#text} at (462,416) size 68x496 + text run at (462,416) width 64: "\x{308B}\x{3070}\x{304B}\x{308A}" + text run at (484,0) width 496: "\x{3060}\x{3002}\x{84B2}\x{516C}\x{82F1}\x{3082}\x{305D}\x{306E}\x{901A}\x{308A}\x{3001}\x{685C}\x{3082}\x{2015}\x{2015}\x{685C}\x{306F}\x{3044}\x{3064}\x{304B}\x{898B}\x{3048}\x{306A}\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}\x{3053}\x{3046}\x{5C71}" + text run at (512,0) width 128: "\x{306E}\x{4E2D}\x{3078}\x{6765}\x{3066}\x{81EA}\x{7136}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (510,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3044}\x{3076}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{666F}\x{7269}" + LayoutText {#text} at (512,162) size 46x498 + text run at (512,162) width 336: "\x{306B}\x{63A5}\x{3059}\x{308C}\x{3070}\x{3001}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{805E}\x{304F}\x{3082}\x{306E}\x{3082}\x{9762}\x{767D}\x{3044}\x{3002}\x{9762}" + text run at (540,0) width 384: "\x{767D}\x{3044}\x{3060}\x{3051}\x{3067}\x{5225}\x{6BB5}\x{306E}\x{82E6}\x{3057}\x{307F}\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{8D77}\x{308B}\x{3068}\x{3059}\x{308C}\x{3070}\x{8DB3}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (538,384) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304F}\x{305F}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8349}\x{81E5}" + LayoutText {#text} at (540,416) size 18x48 + text run at (540,416) width 48: "\x{308C}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (538,463) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65E8}" + LayoutText {#text} at (540,480) size 40x496 + text run at (540,480) width 16: "\x{3044}" + text run at (562,0) width 272: "\x{3082}\x{306E}\x{304C}\x{98DF}\x{3079}\x{3089}\x{308C}\x{306C}\x{304F}\x{3089}\x{3044}\x{306E}\x{4E8B}\x{3060}\x{308D}\x{3046}\x{3002}" + LayoutBR {BR} at (562,272) size 18x0 + LayoutText {#text} at (590,0) size 18x416 + text run at (590,0) width 416: "\x{3000}\x{3057}\x{304B}\x{3057}\x{82E6}\x{3057}\x{307F}\x{306E}\x{306A}\x{3044}\x{306E}\x{306F}\x{306A}\x{305C}\x{3060}\x{308D}\x{3046}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{3092}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (588,415) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3077}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E45}" + LayoutText {#text} at (590,432) size 18x16 + text run at (590,432) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (588,448) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (590,464) size 46x496 + text run at (590,464) width 32: "\x{3068}\x{3057}" + text run at (618,0) width 16: "\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89B3}" + LayoutText {#text} at (618,32) size 18x32 + text run at (618,32) width 32: "\x{3001}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,63) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5DFB}" + LayoutText {#text} at (618,80) size 18x208 + text run at (618,80) width 208: "\x{306E}\x{8A69}\x{3068}\x{3057}\x{3066}\x{8AAD}\x{3080}\x{304B}\x{3089}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,288) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (618,304) size 18x160 + text run at (618,304) width 160: "\x{3067}\x{3042}\x{308A}\x{8A69}\x{3067}\x{3042}\x{308B}\x{4EE5}\x{4E0A}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (616,464) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3058}\x{3081}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5730}\x{9762}" + LayoutText {#text} at (646,0) size 18x368 + text run at (646,0) width 368: "\x{3092}\x{8CB0}\x{3063}\x{3066}\x{3001}\x{958B}\x{62D3}\x{3059}\x{308B}\x{6C17}\x{306B}\x{3082}\x{306A}\x{3089}\x{306D}\x{3070}\x{3001}\x{9244}\x{9053}\x{3092}\x{304B}\x{3051}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (644,367) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3072}\x{3068}\x{3082}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E00}\x{5132}" + LayoutText {#text} at (646,402) size 18x48 + text run at (646,402) width 48: "\x{3051}\x{3059}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (644,447) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3051}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E86}\x{898B}" + LayoutText {#text} at (674,0) size 18x256 + text run at (674,0) width 256: "\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{2015}\x{2015}\x{8179}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (672,256) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (674,272) size 68x496 + text run at (674,272) width 224: "\x{3057}\x{306B}\x{3082}\x{306A}\x{3089}\x{306C}\x{3001}\x{6708}\x{7D66}\x{306E}\x{88DC}\x{3044}\x{306B}\x{3082}" + text run at (696,0) width 496: "\x{306A}\x{3089}\x{306C}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{666F}\x{8272}\x{3068}\x{3057}\x{3066}\x{306E}\x{307F}\x{3001}\x{4F59}\x{304C}\x{5FC3}\x{3092}\x{697D}\x{307E}\x{305B}\x{3064}\x{3064}\x{3042}\x{308B}\x{304B}\x{3089}\x{82E6}\x{52B4}" + text run at (724,0) width 64: "\x{3082}\x{5FC3}\x{914D}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (722,60) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3068}\x{3082}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{4F34}" + LayoutText {#text} at (724,83) size 18x288 + text run at (724,83) width 288: "\x{308F}\x{306C}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{81EA}\x{7136}\x{306E}\x{529B}\x{306F}\x{3053}\x{3053}\x{306B}\x{304A}\x{3044}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (722,370) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3063}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5C0A}" + LayoutText {#text} at (724,387) size 46x499 + text run at (724,387) width 112: "\x{3068}\x{3044}\x{3002}\x{543E}\x{4EBA}\x{306E}\x{6027}" + text run at (752,0) width 80: "\x{60C5}\x{3092}\x{77AC}\x{523B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (750,80) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{3046}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9676}\x{51B6}" + LayoutText {#text} at (752,112) size 18x32 + text run at (752,112) width 32: "\x{3057}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (750,143) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3085}\x{3093}\x{3053}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{9187}\x{4E4E}" + LayoutText {#text} at (752,178) size 40x498 + text run at (752,178) width 320: "\x{3068}\x{3057}\x{3066}\x{9187}\x{306A}\x{308B}\x{8A69}\x{5883}\x{306B}\x{5165}\x{3089}\x{3057}\x{3080}\x{308B}\x{306E}\x{306F}\x{81EA}\x{7136}\x{3067}\x{3042}" + text run at (774,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (774,32) size 18x0 + LayoutText {#text} at (796,0) size 46x496 + text run at (796,0) width 496: "\x{3000}\x{604B}\x{306F}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5B5D}\x{3082}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5FE0}\x{541B}\x{611B}\x{56FD}\x{3082}\x{7D50}\x{69CB}\x{3060}\x{308D}\x{3046}\x{3002}\x{3057}" + text run at (824,0) width 112: "\x{304B}\x{3057}\x{81EA}\x{8EAB}\x{304C}\x{305D}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (822,108) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304D}\x{3087}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5C40}" + LayoutText {#text} at (824,131) size 18x112 + text run at (824,131) width 112: "\x{306B}\x{5F53}\x{308C}\x{3070}\x{5229}\x{5BB3}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (822,243) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3064}\x{3080}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{65CB}\x{98A8}" + LayoutText {#text} at (824,275) size 18x16 + text run at (824,275) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (822,291) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6372}" + LayoutText {#text} at (824,307) size 46x499 + text run at (824,307) width 192: "\x{304D}\x{8FBC}\x{307E}\x{308C}\x{3066}\x{3001}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{4E8B}" + text run at (852,0) width 192: "\x{306B}\x{3082}\x{3001}\x{7D50}\x{69CB}\x{306A}\x{4E8B}\x{306B}\x{3082}\x{3001}\x{76EE}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (850,191) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7729}" + LayoutText {#text} at (852,208) size 46x496 + text run at (852,208) width 288: "\x{3093}\x{3067}\x{3057}\x{307E}\x{3046}\x{3002}\x{3057}\x{305F}\x{304C}\x{3063}\x{3066}\x{3069}\x{3053}\x{306B}\x{8A69}\x{304C}\x{3042}\x{308B}" + text run at (880,0) width 80: "\x{304B}\x{81EA}\x{8EAB}\x{306B}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (878,80) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3052}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89E3}" + LayoutText {#text} at (880,96) size 18x80 + text run at (880,96) width 80: "\x{3057}\x{304B}\x{306D}\x{308B}\x{3002}" + LayoutBR {BR} at (880,176) size 18x0 + LayoutText {#text} at (902,0) size 46x496 + text run at (902,0) width 496: "\x{3000}\x{3053}\x{308C}\x{304C}\x{308F}\x{304B}\x{308B}\x{305F}\x{3081}\x{306B}\x{306F}\x{3001}\x{308F}\x{304B}\x{308B}\x{3060}\x{3051}\x{306E}\x{4F59}\x{88D5}\x{306E}\x{3042}\x{308B}\x{7B2C}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}" + text run at (930,0) width 336: "\x{305F}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}\x{3066}\x{3070}\x{3053}\x{305D}\x{829D}\x{5C45}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (928,336) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89B3}" + LayoutText {#text} at (930,352) size 68x496 + text run at (930,352) width 144: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{5C0F}\x{8AAC}\x{3082}\x{898B}" + text run at (952,0) width 496: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{829D}\x{5C45}\x{3092}\x{898B}\x{3066}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{5C0F}\x{8AAC}\x{3092}\x{8AAD}\x{3093}\x{3067}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{81EA}\x{5DF1}\x{306E}" + text run at (980,0) width 48: "\x{5229}\x{5BB3}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (978,47) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{68DA}" + LayoutText {#text} at (980,64) size 18x416 + text run at (980,64) width 416: "\x{3078}\x{4E0A}\x{3052}\x{3066}\x{3044}\x{308B}\x{3002}\x{898B}\x{305F}\x{308A}\x{8AAD}\x{3093}\x{3060}\x{308A}\x{3059}\x{308B}\x{9593}\x{3060}\x{3051}\x{306F}\x{8A69}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (980,480) size 18x0 + LayoutText {#text} at (1008,0) size 18x304 + text run at (1008,0) width 304: "\x{3000}\x{305D}\x{308C}\x{3059}\x{3089}\x{3001}\x{666E}\x{901A}\x{306E}\x{829D}\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{306F}\x{4EBA}\x{60C5}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1006,303) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{306C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{514D}" + LayoutText {#text} at (1008,320) size 68x496 + text run at (1008,320) width 176: "\x{304B}\x{308C}\x{306C}\x{3002}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}" + text run at (1030,0) width 496: "\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{3044}\x{3064}\x{304B}\x{305D}\x{306E}\x{4E2D}\x{306B}\x{540C}\x{5316}\x{3057}" + text run at (1058,0) width 384: "\x{3066}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1056,384) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{308A}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{53D6}\x{67C4}" + LayoutText {#text} at (1058,416) size 18x64 + text run at (1058,416) width 64: "\x{306F}\x{5229}\x{617E}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1056,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4EA4}" + LayoutText {#text} at (1086,0) size 18x112 + text run at (1086,0) width 112: "\x{3089}\x{306C}\x{3068}\x{4E91}\x{3046}\x{70B9}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1084,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5B58}" + LayoutText {#text} at (1086,128) size 18x304 + text run at (1086,128) width 304: "\x{3059}\x{308B}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{304C}\x{3001}\x{4EA4}\x{3089}\x{306C}\x{3060}\x{3051}\x{306B}\x{305D}\x{306E}\x{4ED6}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (1084,429) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3058}\x{3087}\x{3046}\x{3057}\x{3087}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{60C5}\x{7DD2}" + LayoutText {#text} at (1086,471) size 46x503 + text run at (1086,471) width 32: "\x{306F}\x{5E38}" + text run at (1114,0) width 272: "\x{3088}\x{308A}\x{306F}\x{4F59}\x{8A08}\x{306B}\x{6D3B}\x{52D5}\x{3059}\x{308B}\x{3060}\x{308D}\x{3046}\x{3002}\x{305D}\x{308C}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1112,271) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3044}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5ACC}" + LayoutText {#text} at (1114,288) size 18x32 + text run at (1114,288) width 32: "\x{3060}\x{3002}" + LayoutBR {BR} at (1114,320) size 18x0 + LayoutText {#text} at (1136,0) size 46x480 + text run at (1136,0) width 480: "\x{3000}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{306B}\x{3064}\x{304D}\x{3082}\x{306E}" + text run at (1164,0) width 192: "\x{3060}\x{3002}\x{4F59}\x{3082}\x{4E09}\x{5341}\x{5E74}\x{306E}\x{9593}\x{305D}\x{308C}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1162,192) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3068}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4ED5}\x{901A}" + LayoutText {#text} at (1164,224) size 18x48 + text run at (1164,224) width 48: "\x{3057}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1162,271) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3042}\x{304D}\x{3042}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{98FD}\x{3005}" + LayoutText {#text} at (1164,306) size 18x48 + text run at (1164,306) width 48: "\x{3057}\x{305F}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1162,354) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{98FD}" + LayoutText {#text} at (1164,370) size 68x498 + text run at (1164,370) width 128: "\x{304D}\x{98FD}\x{304D}\x{3057}\x{305F}\x{4E0A}\x{306B}\x{829D}" + text run at (1186,0) width 496: "\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{540C}\x{3058}\x{523A}\x{6FC0}\x{3092}\x{7E70}\x{308A}\x{8FD4}\x{3057}\x{3066}\x{306F}\x{5927}\x{5909}\x{3060}\x{3002}\x{4F59}\x{304C}\x{6B32}\x{3059}\x{308B}\x{8A69}\x{306F}\x{305D}\x{3093}\x{306A}\x{4E16}" + text run at (1214,0) width 96: "\x{9593}\x{7684}\x{306E}\x{4EBA}\x{60C5}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1212,96) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{3053}\x{3076}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9F13}\x{821E}" + LayoutText {#text} at (1214,128) size 46x496 + text run at (1214,128) width 368: "\x{3059}\x{308B}\x{3088}\x{3046}\x{306A}\x{3082}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{4FD7}\x{5FF5}\x{3092}\x{653E}\x{68C4}\x{3057}\x{3066}\x{3001}\x{3057}\x{3070}\x{3089}" + text run at (1242,0) width 48: "\x{304F}\x{3067}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1240,47) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3093}\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5875}\x{754C}" + LayoutText {#text} at (1242,82) size 90x498 + text run at (1242,82) width 416: "\x{3092}\x{96E2}\x{308C}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{5091}\x{4F5C}\x{3067}\x{3082}\x{4EBA}\x{60C5}\x{3092}" + text run at (1264,0) width 496: "\x{96E2}\x{308C}\x{305F}\x{829D}\x{5C45}\x{306F}\x{306A}\x{3044}\x{3001}\x{7406}\x{975E}\x{3092}\x{7D76}\x{3057}\x{305F}\x{5C0F}\x{8AAC}\x{306F}\x{5C11}\x{304B}\x{308D}\x{3046}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{4E16}\x{9593}\x{3092}" + text run at (1286,0) width 496: "\x{51FA}\x{308B}\x{4E8B}\x{304C}\x{51FA}\x{6765}\x{306C}\x{306E}\x{304C}\x{5F7C}\x{3089}\x{306E}\x{7279}\x{8272}\x{3067}\x{3042}\x{308B}\x{3002}\x{3053}\x{3068}\x{306B}\x{897F}\x{6D0B}\x{306E}\x{8A69}\x{306B}\x{306A}\x{308B}\x{3068}\x{3001}\x{4EBA}" + text run at (1314,0) width 208: "\x{4E8B}\x{304C}\x{6839}\x{672C}\x{306B}\x{306A}\x{308B}\x{304B}\x{3089}\x{3044}\x{308F}\x{3086}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1312,208) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8A69}\x{6B4C}" + LayoutText {#text} at (1314,240) size 18x160 + text run at (1314,240) width 160: "\x{306E}\x{7D14}\x{7C8B}\x{306A}\x{308B}\x{3082}\x{306E}\x{3082}\x{3053}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1312,396) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304D}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5883}" + LayoutText {#text} at (1314,419) size 18x16 + text run at (1314,419) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1312,435) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (1314,467) size 68x499 + text run at (1314,467) width 32: "\x{3059}\x{308B}" + text run at (1336,0) width 496: "\x{4E8B}\x{3092}\x{77E5}\x{3089}\x{306C}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{540C}\x{60C5}\x{3060}\x{3068}\x{304B}\x{3001}\x{611B}\x{3060}\x{3068}\x{304B}\x{3001}\x{6B63}\x{7FA9}\x{3060}\x{3068}\x{304B}\x{3001}\x{81EA}\x{7531}\x{3060}" + text run at (1364,0) width 48: "\x{3068}\x{304B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1362,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3046}\x{304D}\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6D6E}\x{4E16}" + LayoutText {#text} at (1364,80) size 18x16 + text run at (1364,80) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1362,96) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{304B}\x{3093}\x{3053}\x{3046}\x{3070}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{52E7}\x{5DE5}\x{5834}" + LayoutText {#text} at (1364,144) size 18x160 + text run at (1364,144) width 160: "\x{306B}\x{3042}\x{308B}\x{3082}\x{306E}\x{3060}\x{3051}\x{3067}\x{7528}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1362,303) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3079}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F01}" + LayoutText {#text} at (1364,320) size 46x496 + text run at (1364,320) width 176: "\x{3058}\x{3066}\x{3044}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{8A69}\x{7684}\x{306B}" + text run at (1392,0) width 144: "\x{306A}\x{3063}\x{3066}\x{3082}\x{5730}\x{9762}\x{306E}\x{4E0A}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1390,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{99B3}" + LayoutText {#text} at (1392,160) size 18x112 + text run at (1392,160) width 112: "\x{3051}\x{3066}\x{3042}\x{308B}\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1390,271) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305C}\x{306B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{92AD}" + LayoutText {#text} at (1392,288) size 46x496 + text run at (1392,288) width 208: "\x{306E}\x{52D8}\x{5B9A}\x{3092}\x{5FD8}\x{308C}\x{308B}\x{3072}\x{307E}\x{304C}\x{306A}\x{3044}\x{3002}" + text run at (1420,0) width 80: "\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1418,80) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1420,112) size 18x256 + text run at (1420,112) width 256: "\x{3092}\x{805E}\x{3044}\x{3066}\x{5606}\x{606F}\x{3057}\x{305F}\x{306E}\x{3082}\x{7121}\x{7406}\x{306F}\x{306A}\x{3044}\x{3002}" + LayoutBR {BR} at (1420,368) size 18x0 + LayoutText {#text} at (1448,0) size 18x160 + text run at (1448,0) width 160: "\x{3000}\x{3046}\x{308C}\x{3057}\x{3044}\x{4E8B}\x{306B}\x{6771}\x{6D0B}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1446,159.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8A69}\x{6B4C}" + LayoutText {#text} at (1448,191) size 18x65 + text run at (1448,191) width 64: "\x{306F}\x{305D}\x{3053}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1446,255.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (1448,287) size 18x113 + text run at (1448,287) width 112: "\x{3057}\x{305F}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x43 + LayoutRubyRun (anonymous) at (1446,396.98) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{304F}\x{3092}\x{3068}\x{308B}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{63A1}\x{83CA}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x53 + LayoutRubyRun (anonymous) at (1474,0) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3068}\x{3046}\x{308A}\x{306E}\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{6771}\x{7C6C}\x{4E0B}" + LayoutText {#text} at (1476,53) size 18x16 + text run at (1476,53) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x59 + LayoutRubyRun (anonymous) at (1474,65) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{3086}\x{3046}\x{305C}\x{3093}\x{3068}\x{3057}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,7) size 18x48 + text run at (2,7) width 47: "\x{60A0}\x{7136}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x61 + LayoutRubyRun (anonymous) at (1474,128) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{306A}\x{3093}\x{3056}\x{3093}\x{3092}\x{307F}\x{308B}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x59 + LayoutText {#text} at (2,2) size 18x59 + text run at (2,2) width 58: "\x{898B}\x{5357}\x{5C71}" + LayoutText {#text} at (1476,189) size 18x128 + text run at (1476,189) width 128: "\x{3002}\x{305F}\x{3060}\x{305D}\x{308C}\x{304E}\x{308A}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1474,316) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{88CF}" + LayoutText {#text} at (1476,333) size 46x493 + text run at (1476,333) width 160: "\x{306B}\x{6691}\x{82E6}\x{3057}\x{3044}\x{4E16}\x{306E}\x{4E2D}\x{3092}\x{307E}" + text run at (1504,0) width 368: "\x{308B}\x{3067}\x{5FD8}\x{308C}\x{305F}\x{5149}\x{666F}\x{304C}\x{51FA}\x{3066}\x{304F}\x{308B}\x{3002}\x{57A3}\x{306E}\x{5411}\x{3046}\x{306B}\x{96A3}\x{308A}\x{306E}\x{5A18}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1502,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{305E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8997}" + LayoutText {#text} at (1504,384) size 46x496 + text run at (1504,384) width 112: "\x{3044}\x{3066}\x{308B}\x{8A33}\x{3067}\x{3082}\x{306A}" + text run at (1532,0) width 64: "\x{3051}\x{308C}\x{3070}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1530,63) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306A}\x{3093}\x{3056}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5357}\x{5C71}" + LayoutText {#text} at (1532,98) size 18x320 + text run at (1532,98) width 320: "\x{306B}\x{89AA}\x{53CB}\x{304C}\x{5949}\x{8077}\x{3057}\x{3066}\x{3044}\x{308B}\x{6B21}\x{7B2C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{8D85}\x{7136}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x70 + LayoutRubyRun (anonymous) at (1530,417) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3057}\x{3085}\x{3063}\x{305B}\x{3051}\x{3093}\x{3066}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{51FA}\x{4E16}\x{9593}\x{7684}" + LayoutText {#text} at (1532,488) size 46x504 + text run at (1532,488) width 16: "\x{306B}" + text run at (1560,0) width 320: "\x{5229}\x{5BB3}\x{640D}\x{5F97}\x{306E}\x{6C57}\x{3092}\x{6D41}\x{3057}\x{53BB}\x{3063}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x23 + LayoutRubyRun (anonymous) at (1558,316) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3072}\x{3068}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{72EC}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x87 + LayoutRubyRun (anonymous) at (1558,343) size 22x90 + LayoutRubyText {RT} at (-10,0) size 13x90 + LayoutText {#text} at (2,0) size 10x90 + text run at (2,0) width 90: "\x{3086}\x{3046}\x{3053}\x{3046}\x{306E}\x{3046}\x{3061}\x{306B}\x{3056}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x90 + LayoutInline {RB} at (0,0) size 18x84 + LayoutText {#text} at (2,3) size 18x84 + text run at (2,3) width 83: "\x{5750}\x{5E7D}\x{7BC1}\x{88CF}" + LayoutText {#text} at (1560,430) size 18x16 + text run at (1560,430) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x63 + LayoutRubyRun (anonymous) at (1586,0) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{304D}\x{3093}\x{3092}\x{3060}\x{3093}\x{3058}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,7) size 18x48 + text run at (2,7) width 47: "\x{5F3E}\x{7434}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x77 + LayoutRubyRun (anonymous) at (1586,63) size 22x81 + LayoutRubyText {RT} at (-10,0) size 13x81 + LayoutText {#text} at (2,0) size 10x81 + text run at (2,0) width 81: "\x{307E}\x{305F}\x{3061}\x{3087}\x{3046}\x{3057}\x{3087}\x{3046}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x81 + LayoutInline {RB} at (0,0) size 18x71 + LayoutText {#text} at (2,5) size 18x71 + text run at (2,5) width 70: "\x{5FA9}\x{9577}\x{562F}" + LayoutText {#text} at (1588,140) size 18x16 + text run at (1588,140) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (1586,155) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{3093}\x{308A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6DF1}\x{6797}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1586,191) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{3072}\x{3068}\x{3057}\x{3089}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{4EBA}\x{4E0D}\x{77E5}" + LayoutText {#text} at (1588,239) size 18x16 + text run at (1588,239) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x68 + LayoutRubyRun (anonymous) at (1586,251) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3081}\x{3044}\x{3052}\x{3064}\x{304D}\x{305F}\x{308A}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,4) size 18x64 + text run at (2,4) width 64: "\x{660E}\x{6708}\x{6765}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (1586,323) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3042}\x{3044}\x{3066}\x{3089}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{76F8}\x{7167}" + LayoutText {#text} at (1588,365) size 46x493 + text run at (1588,365) width 128: "\x{3002}\x{305F}\x{3060}\x{4E8C}\x{5341}\x{5B57}\x{306E}\x{3046}" + text run at (1616,0) width 32: "\x{3061}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1614,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3086}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{512A}" + LayoutText {#text} at (1616,48) size 18x16 + text run at (1616,48) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x52 + LayoutRubyRun (anonymous) at (1614,63) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3079}\x{3064}\x{3051}\x{3093}\x{3053}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{5225}\x{4E7E}\x{5764}" + LayoutText {#text} at (1616,116) size 18x16 + text run at (1616,116) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (1614,129) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{5EFA}\x{7ACB}" + LayoutText {#text} at (1616,171) size 18x160 + text run at (1616,171) width 160: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{3053}\x{306E}\x{4E7E}\x{5764}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1614,331) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304F}\x{3069}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{529F}\x{5FB3}" + LayoutText {#text} at (1616,363) size 18x32 + text run at (1616,363) width 32: "\x{306F}\x{300C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1614,395) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{307B}\x{3068}\x{3068}\x{304E}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{4E0D}\x{5982}\x{5E30}" + LayoutText {#text} at (1616,443) size 46x475 + text run at (1616,443) width 32: "\x{300D}\x{3084}" + text run at (1644,0) width 16: "\x{300C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (1642,16) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,0) size 10x64 + text run at (2,0) width 63: "\x{3053}\x{3093}\x{3058}\x{304D}\x{3084}\x{3057}\x{3083}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{91D1}\x{8272}\x{591C}\x{53C9}" + LayoutText {#text} at (1644,80) size 46x496 + text run at (1644,80) width 416: "\x{300D}\x{306E}\x{529F}\x{5FB3}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{6C7D}\x{8239}\x{3001}\x{6C7D}\x{8ECA}\x{3001}\x{6A29}\x{5229}\x{3001}\x{7FA9}\x{52D9}\x{3001}\x{9053}\x{5FB3}\x{3001}\x{793C}\x{7FA9}" + text run at (1672,0) width 96: "\x{3067}\x{75B2}\x{308C}\x{679C}\x{3066}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1670,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F8C}" + LayoutText {#text} at (1672,112) size 40x496 + text run at (1672,112) width 384: "\x{306B}\x{3001}\x{3059}\x{3079}\x{3066}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3050}\x{3063}\x{3059}\x{308A}\x{5BDD}\x{8FBC}\x{3080}\x{3088}\x{3046}\x{306A}\x{529F}\x{5FB3}\x{3067}\x{3042}" + text run at (1694,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (1694,32) size 18x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png new file mode 100644 index 0000000..baae611 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt new file mode 100644 index 0000000..99fd303 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt
@@ -0,0 +1,25 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 772x600 + LayoutBlockFlow {HTML} at (0,0) size 772x600 + LayoutBlockFlow {BODY} at (8,8) size 756x584 + LayoutInline {SPAN} at (0,0) size 219x580 [border: (2px solid #000000)] + LayoutText {#text} at (20,4) size 211x580 + text run at (20,4) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}" + text run at (83,0) width 555: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (146,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (209,0) width 127: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + LayoutText {#text} at (209,130) size 22x8 + text run at (209,130) width 8: " " + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (272,0) size 22x0 + LayoutInline {SPAN} at (0,0) size 414x583 [border: (5px solid #000000)] + LayoutText {#text} at (335,7) size 400x583 + text run at (335,7) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}" + text run at (398,0) width 562: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (461,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (524,0) width 573: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}" + text run at (587,0) width 575: "\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}" + text run at (650,0) width 583: "\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}" + text run at (713,0) width 278: "\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt new file mode 100644 index 0000000..8d243d15 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt
@@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 541x600 + LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)] + LayoutBlockFlow {DIV} at (5,105) size 495x400 + LayoutText {#text} at (5,0) size 484x392 + text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}" + text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}" + text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}" + text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}" + text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}" + text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}" + text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}" + text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}" + text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}" + text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}" + text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" +selection start: position 5 of child 0 {#text} of child 1 {DIV} of body +selection end: position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt new file mode 100644 index 0000000..c0cc83c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt
@@ -0,0 +1,17 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 409x600 + LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)] + LayoutText {#text} at (10,5) size 352x553 + text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}" + text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}" + text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}" + text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}" + text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt new file mode 100644 index 0000000..8dad730 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt
@@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (259,0) size 541x600 + LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)] + LayoutBlockFlow {DIV} at (5,105) size 495x400 + LayoutText {#text} at (5,0) size 484x392 + text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}" + text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}" + text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}" + text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}" + text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}" + text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}" + text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}" + text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}" + text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}" + text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}" + text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" +selection start: position 5 of child 0 {#text} of child 1 {DIV} of body +selection end: position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt new file mode 100644 index 0000000..10f00dda --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt
@@ -0,0 +1,17 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (391,0) size 409x600 + LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)] + LayoutText {#text} at (10,5) size 352x553 + text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}" + text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}" + text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}" + text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}" + text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png new file mode 100644 index 0000000..d945c22b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt new file mode 100644 index 0000000..2e58825 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt
@@ -0,0 +1,140 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {FORM} at (0,0) size 784x194 + LayoutBlockFlow {HR} at (0,0) size 602x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,10) size 600x184 + LayoutTableSection {TBODY} at (0,0) size 600x184 + LayoutTableRow {TR} at (0,2) size 600x44 + LayoutTableCell {TD} at (2,2) size 594x44 [r=0 c=0 rs=1 cs=3] + LayoutImage {IMG} at (7.50,1) size 579x42 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,48) size 600x55 + LayoutTableCell {TD} at (2,57) size 594x36 [bgcolor=#99CCCC] [r=1 c=0 rs=1 cs=3] + LayoutInline {FONT} at (0,0) size 128x15 + LayoutInline {B} at (0,0) size 128x15 + LayoutText {#text} at (67,3) size 128x15 + text run at (67,3) width 128: "Search the Web with" + LayoutText {#text} at (194,1) size 5x18 + text run at (194,1) width 5: " " + LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 81x18 + LayoutText (anonymous) at (8,2) size 50x13 + text run at (8,2) width 50: "Netscape" + LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (470,1) size 5x18 + text run at (470,1) width 5: " " + LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Search" + LayoutBR {BR} at (526,15) size 1x0 + LayoutInline {SMALL} at (0,0) size 568x15 + LayoutInline {A} at (0,0) size 101x15 [color=#0000EE] + LayoutText {#text} at (13,20) size 101x15 + text run at (13,20) width 101: "Classifieds< /A> " + LayoutInline {A} at (0,0) size 59x15 [color=#0000EE] + LayoutText {#text} at (113,20) size 59x15 + text run at (113,20) width 23: "Net " + text run at (135,20) width 37: "Search" + LayoutText {#text} at (171,20) size 11x15 + text run at (171,20) width 11: " " + LayoutInline {A} at (0,0) size 83x15 [color=#0000EE] + LayoutText {#text} at (181,20) size 83x15 + text run at (181,20) width 57: "Find Web " + text run at (237,20) width 27: "Sites" + LayoutText {#text} at (263,20) size 11x15 + text run at (263,20) width 4: " " + text run at (266,20) width 8: " " + LayoutInline {A} at (0,0) size 66x15 [color=#0000EE] + LayoutText {#text} at (273,20) size 66x15 + text run at (273,20) width 40: "What's " + text run at (312,20) width 27: "Cool" + LayoutText {#text} at (338,20) size 11x15 + text run at (338,20) width 11: " " + LayoutInline {A} at (0,0) size 66x15 [color=#0000EE] + LayoutText {#text} at (348,20) size 66x15 + text run at (348,20) width 66: "What's New" + LayoutText {#text} at (413,20) size 11x15 + text run at (413,20) width 11: " " + LayoutInline {A} at (0,0) size 76x15 [color=#0000EE] + LayoutText {#text} at (423,20) size 76x15 + text run at (423,20) width 76: "People Finder" + LayoutText {#text} at (498,20) size 11x15 + text run at (498,20) width 11: " " + LayoutInline {A} at (0,0) size 73x15 [color=#0000EE] + LayoutText {#text} at (508,20) size 73x15 + text run at (508,20) width 73: "Yellow Pages" + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,105) size 600x50 + LayoutTableCell {TD} at (2,114) size 159x32 [r=2 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 117x33 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 117x30 [color=#CC0033] + LayoutText {#text} at (21,1) size 117x30 + text run at (21,1) width 117: "Download Netscape" + text run at (26,16) width 107: "Communicator 4.5" + LayoutTableCell {TD} at (163,105) size 270x50 [r=2 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 232x28 [color=#0000EE] + LayoutImage {IMG} at (19,1) size 232x35 [border: (1px solid #0000EE)] + LayoutBR {BR} at (251,36) size 0x0 + LayoutInline {FONT} at (0,0) size 48x13 + LayoutText {#text} at (111,36) size 48x13 + text run at (111,36) width 48: "Click Here!" + LayoutBR {BR} at (158,46) size 1x0 + LayoutTableCell {TD} at (435,121) size 161x17 [r=2 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 131x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 131x15 [color=#0066FF] + LayoutText {#text} at (15,1) size 131x15 + text run at (15,1) width 131: "Hassle-Free Upgrades" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,157) size 600x20 + LayoutTableCell {TD} at (2,157) size 594x20 [r=3 c=0 rs=1 cs=3] + LayoutInline {A} at (0,0) size 50x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 50x15 [color=#0066FF] + LayoutInline {B} at (0,0) size 50x15 + LayoutText {#text} at (15,3) size 50x15 + text run at (15,3) width 50: "Contact" + LayoutText {#text} at (64,1) size 13x18 + text run at (64,1) width 13: " : " + LayoutInline {SMALL} at (0,0) size 503x15 + LayoutInline {A} at (0,0) size 77x15 [color=#0000EE] + LayoutText {#text} at (76,3) size 77x15 + text run at (76,3) width 77: "Address Book" + LayoutText {#text} at (152,3) size 12x15 + text run at (152,3) width 12: " - " + LayoutInline {A} at (0,0) size 65x15 [color=#0000EE] + LayoutText {#text} at (163,3) size 65x15 + text run at (163,3) width 65: "Discussions" + LayoutText {#text} at (227,3) size 12x15 + text run at (227,3) width 12: " - " + LayoutInline {A} at (0,0) size 98x15 [color=#0000EE] + LayoutText {#text} at (238,3) size 98x15 + text run at (238,3) width 98: "Instant Messenger" + LayoutText {#text} at (335,3) size 12x15 + text run at (335,3) width 12: " - " + LayoutInline {A} at (0,0) size 79x15 [color=#0000EE] + LayoutText {#text} at (346,3) size 79x15 + text run at (346,3) width 79: "Long Distance" + LayoutText {#text} at (424,3) size 12x15 + text run at (424,3) width 12: " - " + LayoutInline {A} at (0,0) size 52x15 [color=#0000EE] + LayoutText {#text} at (435,3) size 52x15 + text run at (435,3) width 52: "Members" + LayoutText {#text} at (486,3) size 12x15 + text run at (486,3) width 12: " - " + LayoutInline {A} at (0,0) size 82x15 [color=#0000EE] + LayoutText {#text} at (497,3) size 82x15 + text run at (497,3) width 82: "WebMail< /A>" + LayoutInline {A} at (0,0) size 1x18 [color=#0000EE] + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,179) size 600x3 + LayoutTableCell {TD} at (2,179) size 596x3 [bgcolor=#99CCCC] [r=4 c=0 rs=1 cs=4] + LayoutTable {TABLE} at (1,1) size 0x1 + LayoutTableSection {TBODY} at (0,0) size 0x1 + LayoutTableRow {TR} at (0,0) size 0x1 + LayoutTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1] +layer at (292,79) size 185x13 + LayoutBlockFlow {DIV} at (3,3) size 185x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png new file mode 100644 index 0000000..0a71684 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt new file mode 100644 index 0000000..b0569d1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt
@@ -0,0 +1,49 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x136 + LayoutTableSection {TBODY} at (0,0) size 784x136 + LayoutTableRow {TR} at (0,0) size 784x74 + LayoutTableCell {TD} at (0,0) size 784x74 [r=0 c=0 rs=1 cs=4] + LayoutBR {BR} at (392,1) size 0x18 + LayoutInline {FONT} at (0,0) size 732x53 + LayoutText {#text} at (26,19) size 732x35 + text run at (26,19) width 183: "The Supreme Court says " + text run at (208,19) width 550: "Wisconsin can continue using tuition vouchers to help poor parents send their" + text run at (210,37) width 223: "children to church-run schools. " + text run at (432,37) width 142: "What's your stand? " + LayoutBR {BR} at (573,51) size 1x0 + LayoutBR {BR} at (392,55) size 0x17 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,74) size 784x21 + LayoutTableCell {TD} at (0,76) size 562x17 [r=1 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 141x15 + LayoutText {#text} at (420,1) size 141x15 + text run at (420,1) width 141: "I agree with the program" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (562,74) size 72x21 [r=1 c=1 rs=1 cs=1] + LayoutBlockFlow {INPUT} at (3.89,4) size 12x13 + LayoutTableRow {TR} at (0,95) size 784x21 + LayoutTableCell {TD} at (0,97) size 562x17 [r=2 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 153x15 + LayoutText {#text} at (408,1) size 153x15 + text run at (408,1) width 153: "I think vouchers are wrong" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (562,95) size 72x21 [r=2 c=1 rs=1 cs=1] + LayoutBlockFlow {INPUT} at (3.89,4) size 12x13 + LayoutTableRow {TR} at (0,116) size 784x20 + LayoutTableCell {TD} at (0,117) size 634x17 [r=3 c=0 rs=1 cs=2] + LayoutInline {A} at (0,0) size 76x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 76x15 + LayoutText {#text} at (279,1) size 76x15 + text run at (279,1) width 76: "View Results" + LayoutInline {FONT} at (0,0) size 1x15 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2] + LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 22.45x13 + LayoutText {#text} at (0,0) size 23x13 + text run at (0,0) width 23: "vote" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png new file mode 100644 index 0000000..c782f50 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt new file mode 100644 index 0000000..8524e91a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt
@@ -0,0 +1,35 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 144x52 + LayoutTableSection {TBODY} at (0,0) size 144x52 + LayoutTableRow {TR} at (0,2) size 144x48 + LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (1,1) size 138x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (1,1) size 138x46 + LayoutTable {TABLE} at (0,0) size 138x46 + LayoutTableSection {TBODY} at (0,0) size 138x46 + LayoutTableRow {TR} at (0,2) size 138x42 + LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1] + LayoutTable (floating) {TABLE} at (1,1) size 132x40 + LayoutTableSection {TBODY} at (0,0) size 132x40 + LayoutTableRow {TR} at (0,2) size 132x36 + LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (1,1) size 126x18 + LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 109.34x13 + LayoutText {#text} at (0,0) size 110x13 + text run at (0,0) width 110: "ApplyForThisPosition" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (1,47) size 138x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png new file mode 100644 index 0000000..7bd0345 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt new file mode 100644 index 0000000..86bec78 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt
@@ -0,0 +1,44 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {H2} at (0,0) size 784x28 + LayoutText {#text} at (0,0) size 362x28 + text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page" + LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {FORM} at (0,57.91) size 784x47 + LayoutTable {TABLE} at (0,0) size 600x47 + LayoutTableSection {TBODY} at (0,0) size 600x47 + LayoutTableRow {TR} at (0,2) size 600x21 + LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1] + LayoutInline {B} at (0,0) size 95x18 + LayoutText {#text} at (1,1) size 95x18 + text run at (1,1) width 95: "Trigger URL:" + LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1] + LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 37.27x13 + LayoutText {#text} at (0,0) size 38x13 + text run at (0,0) width 38: "Trigger" + LayoutTableRow {TR} at (0,25) size 600x20 + LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1] + LayoutInline {B} at (0,0) size 104x18 + LayoutText {#text} at (1,1) size 104x18 + text run at (1,1) width 104: "Run Test Case:" + LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1] + LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 253x18 + LayoutText (anonymous) at (8,2) size 70x13 + text run at (8,2) width 70: "a_abortinstall" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 64.64x13 + LayoutText {#text} at (0,0) size 65x13 + text run at (0,0) width 65: "Trigger case" +layer at (122,72) size 395x13 + LayoutBlockFlow {DIV} at (3,3) size 395x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 94: "http://jimbob/jars/"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png new file mode 100644 index 0000000..fb45699 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt new file mode 100644 index 0000000..47cb4dd8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt
@@ -0,0 +1,146 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 287x18 + text run at (0,0) width 287: "border=\"0\" cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,18) size 784x32 [bgcolor=#DDDD33] + LayoutTableSection {TBODY} at (0,0) size 784x32 + LayoutTableRow {TR} at (0,0) size 784x32 + LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,50) size 784x18 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,68) size 784x32 [bgcolor=#CCCCFF] + LayoutTableSection {TBODY} at (0,0) size 784x32 + LayoutTableRow {TR} at (0,0) size 784x32 + LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,100) size 784x18 + LayoutText {#text} at (0,0) size 105x18 + text run at (0,0) width 105: "cellpadding=\"0\"" + LayoutTable {TABLE} at (0,118) size 784x36 [bgcolor=#FF9999] + LayoutTableSection {TBODY} at (0,0) size 784x36 + LayoutTableRow {TR} at (0,2) size 784x32 + LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,154) size 784x18 + LayoutText {#text} at (0,0) size 181x18 + text run at (0,0) width 181: "border=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,172) size 784x36 [bgcolor=#AAEEBB] + LayoutTableSection {TBODY} at (0,0) size 784x36 + LayoutTableRow {TR} at (0,2) size 784x32 + LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,208) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 77x18 + text run at (30,0) width 77: " border=\"0\"" + LayoutTable {TABLE} at (0,226) size 784x38 [bgcolor=#FFCCEE] + LayoutTableSection {TBODY} at (0,0) size 784x38 + LayoutTableRow {TR} at (0,2) size 784x34 + LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,264) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 109x18 + text run at (30,0) width 109: " cellpadding=\"1\"" + LayoutTable {TABLE} at (0,282) size 784x38 [bgcolor=#66DDFF] + LayoutTableSection {TBODY} at (0,0) size 784x38 + LayoutTableRow {TR} at (0,2) size 784x34 + LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,320) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 291x18 + text run at (30,0) width 291: " border=\"1\" cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,338) size 784x36 [bgcolor=#EEEEEE] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x34 + LayoutTableRow {TR} at (0,0) size 782x34 + LayoutTableCell {TD} at (0,16) size 14x2 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (14,0) size 754x34 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,16) size 14x2 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,374) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 183x18 + text run at (30,0) width 183: " border=\"1\" cellspacing=\"0\"" + LayoutTable {TABLE} at (0,392) size 784x38 [bgcolor=#FFCC66] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x36 + LayoutTableRow {TR} at (0,0) size 782x36 + LayoutTableCell {TD} at (0,16) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,0) size 750x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (766,16) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,430) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 77x18 + text run at (30,0) width 77: " border=\"1\"" + LayoutTable {TABLE} at (0,448) size 784x42 [bgcolor=#CCFF33] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x40 + LayoutTableRow {TR} at (0,2) size 782x36 + LayoutTableCell {TD} at (2,18) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (20,2) size 742x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (764,18) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] +layer at (20,26) size 760x32 clip at (21,27) size 758x30 + LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 754x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (20,76) size 760x32 clip at (21,77) size 758x30 + LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 754x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,128) size 752x32 clip at (25,129) size 750x30 + LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,182) size 752x32 clip at (25,183) size 750x30 + LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,237) size 746x32 clip at (28,238) size 744x30 + LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,293) size 746x32 clip at (28,294) size 744x30 + LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,348) size 752x32 clip at (25,349) size 750x30 + LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,403) size 746x32 clip at (28,404) size 744x30 + LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (31,461) size 738x32 clip at (32,462) size 736x30 + LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 732x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png new file mode 100644 index 0000000..045bb950 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt new file mode 100644 index 0000000..7c7ced6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -0,0 +1,120 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x553 + LayoutBlockFlow {HTML} at (0,0) size 800x553 + LayoutBlockFlow {BODY} at (57,64) size 686x425 [bgcolor=#99FFCC] [border: (3px solid #000000)] + LayoutBlockFlow {P} at (3,3) size 680x64 + LayoutText {#text} at (0,6) size 632x51 + text run at (0,6) width 593: "These links are in an element with display table-row, and the li elements " + text run at (592,6) width 40: "have" + text run at (0,38) width 155: "display: table-cell. " + text run at (154,38) width 131: "They disappear:" + LayoutTable (anonymous) at (3,67) size 304x19 + LayoutTableSection (anonymous) at (0,0) size 304x19 + LayoutTableRow {UL} at (0,0) size 304x19 [bgcolor=#00CC99] + LayoutTableCell {LI} at (0,0) size 76x19 [r=0 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 54x19 [color=#0000EE] + LayoutText {#text} at (11,0) size 54x19 + text run at (11,0) width 54: "people" + LayoutTableCell {LI} at (76,0) size 76x19 [r=0 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 52x19 [color=#0000EE] + LayoutText {#text} at (12,0) size 52x19 + text run at (12,0) width 52: "places" + LayoutTableCell {LI} at (152,0) size 76x19 [r=0 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 76x19 [color=#0000EE] + LayoutText {#text} at (0,0) size 76x19 + text run at (0,0) width 76: "members" + LayoutTableCell {LI} at (228,0) size 76x19 [r=0 c=3 rs=1 cs=1] + LayoutInline {A} at (0,0) size 38x19 [color=#0000EE] + LayoutText {#text} at (19,0) size 38x19 + text run at (19,0) width 38: "links" + LayoutBlockFlow {DIV} at (3,86) size 680x336 + LayoutBlockFlow (anonymous) at (16,16) size 648x19 + LayoutText {#text} at (0,0) size 510x19 + text run at (0,0) width 227: "This text is not in the form. " + text run at (226,0) width 284: "The form should be indented 40px." + LayoutBlockFlow {FORM} at (96,35) size 568x285 + LayoutBlockFlow {P} at (0,0) size 568x64 + LayoutText {#text} at (0,6) size 541x51 + text run at (0,6) width 195: "This is text in the form. " + text run at (194,6) width 230: "It should be indented 40px. " + text run at (423,6) width 118: "The form itself" + text run at (0,38) width 373: "has the same table-row/table-cell problem as " + text run at (372,38) width 55: "above." + LayoutBlockFlow {P} at (0,64) size 568x63 + LayoutTable {SPAN} at (0,3) size 137x60 + LayoutTableSection (anonymous) at (0,0) size 137x60 + LayoutTableRow {SPAN} at (0,0) size 137x28 + LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 137x16 + text run at (0,6) width 137: "First Name (required)" + LayoutTableRow (anonymous) at (0,28) size 137x32 + LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (137,6) size 6x19 + text run at (137,6) width 6: " " + LayoutTable {SPAN} at (142.63,3) size 137x60 + LayoutTableSection (anonymous) at (0,0) size 137x60 + LayoutTableRow {SPAN} at (0,0) size 137x28 + LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 137x16 + text run at (0,6) width 137: "Last Name (required)" + LayoutTableRow (anonymous) at (0,28) size 137x32 + LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,127) size 568x63 + LayoutTable {SPAN} at (0,3) size 251x60 + LayoutTableSection (anonymous) at (0,0) size 251x60 + LayoutTableRow {SPAN} at (0,0) size 251x28 + LayoutTableCell (anonymous) at (0,0) size 251x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 93x16 + text run at (0,6) width 93: "Email Address" + LayoutTableRow (anonymous) at (0,28) size 251x32 + LayoutTableCell (anonymous) at (0,28) size 251x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 251x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,190) size 568x63 + LayoutTable {SPAN} at (0,3) size 107x60 + LayoutTableSection (anonymous) at (0,0) size 107x60 + LayoutTableRow {SPAN} at (0,0) size 107x28 + LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 105x16 + text run at (0,6) width 105: "Company Name" + LayoutTableRow (anonymous) at (0,28) size 107x32 + LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (107,6) size 6x19 + text run at (107,6) width 6: " " + LayoutTable {SPAN} at (112.63,3) size 107x60 + LayoutTableSection (anonymous) at (0,0) size 107x60 + LayoutTableRow {SPAN} at (0,0) size 107x28 + LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 27x16 + text run at (0,6) width 27: "Title" + LayoutTableRow (anonymous) at (0,28) size 107x32 + LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,253) size 568x32 + LayoutButton {INPUT} at (0,9) size 55.89x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 39.89x13 + LayoutText {#text} at (0,0) size 40x13 + text run at (0,0) width 40: "Submit!" + LayoutText {#text} at (55,6) size 7x19 + text run at (55,6) width 7: " " + LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 56.97x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 57: "Clear Form" + LayoutText {#text} at (0,0) size 0x0 +layer at (159,291) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (302,291) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (159,354) size 245x13 + LayoutBlockFlow {DIV} at (3,3) size 245x13 +layer at (159,417) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (272,417) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png new file mode 100644 index 0000000..325e09d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt new file mode 100644 index 0000000..057baa2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -0,0 +1,120 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (0,0) size 785x658.50 + LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06 + LayoutBlockFlow {H1} at (0,0) size 769x37 + LayoutText {#text} at (0,0) size 311x37 + text run at (0,0) width 311: "Generic Table Tests - 1" + LayoutBlockFlow {P} at (0,58.44) size 769x18 + LayoutText {#text} at (0,0) size 397x18 + text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail " + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (396,0) size 186x18 + text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (581,0) size 5x18 + text run at (581,0) width 5: "." + LayoutBlockFlow {DL} at (0,92.44) size 769x36 + LayoutBlockFlow {DT} at (0,0) size 769x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (40,18) size 729x18 + LayoutText {#text} at (0,0) size 697x18 + text run at (0,0) width 697: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model, and multiple classes." + LayoutBlockFlow {P} at (0,144.44) size 769x98 [border: (5px double #FF0000)] + LayoutBlockFlow (anonymous) at (13,13) size 743x18 + LayoutText {#text} at (0,0) size 239x18 + text run at (0,0) width 239: "If this paragraph breaks the line here:" + LayoutTable {SPAN} at (13,31) size 60x18 + LayoutTableSection (anonymous) at (0,0) size 60x18 + LayoutTableRow (anonymous) at (0,0) size 60x18 + LayoutTableCell (anonymous) at (0,0) size 60x18 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 60x18 + text run at (0,0) width 60: "and here:" + LayoutBlockFlow (anonymous) at (13,49) size 743x36 + LayoutText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "then your browser " + LayoutInline {EM} at (0,0) size 83x18 + LayoutText {#text} at (120,0) size 83x18 + text run at (120,0) width 83: "does support" + LayoutText {#text} at (202,0) size 165x18 + text run at (202,0) width 165: " table values on 'display'. " + LayoutInline {STRONG} at (0,0) size 715x36 + LayoutText {#text} at (366,0) size 715x36 + text run at (366,0) width 349: "If this paragraphs flows without any undue breaks," + text run at (0,18) width 459: "then you should mark your browser as not supporting table values!" + LayoutBlockFlow {H2} at (0,262.34) size 769x28 + LayoutText {#text} at (0,0) size 218x28 + text run at (0,0) width 218: "1. Table -> Table Cell" + LayoutBlockFlow {P} at (0,310.25) size 769x36 + LayoutText {#text} at (0,0) size 762x36 + text run at (0,0) width 762: "Below there should be a gray bar, spanning the width of the BODY, with the text \"Left\" to the left and the text \"Right\"," + text run at (0,18) width 222: "on the same line, flush to the right." + LayoutTable {DIV} at (0,362.25) size 769x18 [bgcolor=#C0C0C0] + LayoutTableSection (anonymous) at (0,0) size 769x18 + LayoutTableRow (anonymous) at (0,0) size 769x18 + LayoutTableCell {DIV} at (0,0) size 329x18 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 27x18 + text run at (0,0) width 27: "Left" + LayoutTableCell {DIV} at (329,0) size 440x18 [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (404,0) size 36x18 + text run at (404,0) width 36: "Right" + LayoutBlockFlow {H2} at (0,400.16) size 769x28 + LayoutText {#text} at (0,0) size 156x28 + text run at (0,0) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (0,448.06) size 769x19 + LayoutBlockFlow {P} at (0,0) size 769x19 + LayoutText {#text} at (0,0) size 267x18 + text run at (0,0) width 267: "How does your browser fare on this test? " + LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 238x18 + LayoutText (anonymous) at (8,2) size 138x13 + text run at (8,2) width 138: "The test renders correctly." + LayoutText {#text} at (504,0) size 5x18 + text run at (504,0) width 5: " " + LayoutInline {LABEL} at (0,0) size 204x18 + LayoutText {#text} at (508,0) size 73x18 + text run at (508,0) width 73: "Comment: " + LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (711,0) size 5x18 + text run at (711,0) width 5: " " + LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,501.06) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 73x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 73x18 + text run at (63,0) width 73: "Table Tests" + LayoutText {#text} at (135,0) size 5x18 + text run at (135,0) width 5: "." + LayoutBlockFlow {P} at (0,535.06) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 99x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 99x18 + text run at (63,0) width 99: "Evil Tests Page" + LayoutText {#text} at (161,0) size 5x18 + text run at (161,0) width 5: "." + LayoutBlockFlow {P} at (0,569.06) size 769x18 + LayoutText {#text} at (0,0) size 177x18 + text run at (0,0) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (176,0) size 79x18 + text run at (176,0) width 79: "Ian Hickson" + LayoutText {#text} at (254,0) size 10x18 + text run at (254,0) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (263,0) size 125x18 + text run at (263,0) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (387,0) size 10x18 + text run at (387,0) width 10: ")." + LayoutBlockFlow {P} at (0,603.06) size 769x18 + LayoutText {#text} at (0,0) size 185x18 + text run at (0,0) width 185: "Last updated in March 1999." +layer at (591,473) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png new file mode 100644 index 0000000..6a8402f9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt new file mode 100644 index 0000000..07df1f8f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -0,0 +1,243 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 2582 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 785x2582 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (0,0) size 785x2582.22 + LayoutBlockFlow {BODY} at (8,21.44) size 769x2544.78 [bgcolor=#FFFFFF] + LayoutBlockFlow {H1} at (0,0) size 769x37 + LayoutText {#text} at (0,0) size 361x37 + text run at (0,0) width 361: "Table Inheritance Tests - 1" + LayoutBlockFlow {P} at (0,58.44) size 769x18 + LayoutText {#text} at (0,0) size 397x18 + text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail " + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (396,0) size 186x18 + text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (581,0) size 5x18 + text run at (581,0) width 5: "." + LayoutBlockFlow {DL} at (0,92.44) size 769x36 + LayoutBlockFlow {DT} at (0,0) size 769x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (40,18) size 729x18 + LayoutText {#text} at (0,0) size 560x18 + text run at (0,0) width 560: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model." + LayoutBlockFlow {H2} at (0,148.34) size 769x28 + LayoutText {#text} at (0,0) size 104x28 + text run at (0,0) width 104: "0. Control" + LayoutBlockFlow {P} at (0,196.25) size 769x18 + LayoutText {#text} at (0,0) size 410x18 + text run at (0,0) width 410: "The following four tests should look identical, namely, like this:" + LayoutBlockFlow {DIV} at (0,230.25) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {P} at (0,320.25) size 769x72 + LayoutText {#text} at (0,0) size 768x72 + text run at (0,0) width 756: "There are some minor exceptions, however. The x.1 tests should fill the viewport width, the other tests need not. Also," + text run at (0,18) width 766: "browsers attempting to have backwards compatability with the buggy behaviour of legacy browsers may omit to inherit" + text run at (0,36) width 768: "the color and font-size in 1.1, which will make 1.1 (but only 1.1) unreadable. That is the problem with not following the" + text run at (0,54) width 39: "specs." + LayoutBlockFlow {H2} at (0,412.16) size 769x28 + LayoutText {#text} at (0,0) size 170x28 + text run at (0,0) width 170: "1. HTML Tables" + LayoutBlockFlow {H3} at (0,460.06) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "1.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,500.78) size 769x80 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {TABLE} at (0,0) size 769x80 + LayoutTableSection {TBODY} at (0,0) size 769x80 + LayoutTableRow {TR} at (0,2) size 769x76 + LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 761x74 + text run at (1,1) width 761: "This text should be white on black, bold, twice the" + text run at (1,38) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,599.50) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "1.2 Styles set directly on TABLE" + LayoutTable {TABLE} at (0,640.22) size 769x80 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection {TBODY} at (0,0) size 769x80 + LayoutTableRow {TR} at (0,2) size 769x76 + LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 761x74 + text run at (1,1) width 761: "This text should be white on black, bold, twice the" + text run at (1,38) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,740.13) size 769x28 + LayoutText {#text} at (0,0) size 226x28 + text run at (0,0) width 226: "2. Explicit CSS Tables" + LayoutBlockFlow {H3} at (0,788.03) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "2.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,828.75) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {DIV} at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,921.47) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "2.2 Styles set directly on TABLE" + LayoutTable {DIV} at (0,962.19) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1054.91) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "2.3 Styles set directly on ROW" + LayoutTable {DIV} at (0,1095.63) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1188.34) size 769x22 + LayoutText {#text} at (0,0) size 248x22 + text run at (0,0) width 248: "2.4 Styles set directly on CELL" + LayoutTable {DIV} at (0,1229.06) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1322.97) size 769x28 + LayoutText {#text} at (0,0) size 381x28 + text run at (0,0) width 381: "3. Implicit CSS Tables (table explicit)" + LayoutBlockFlow {H3} at (0,1370.88) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "3.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,1411.59) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {DIV} at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1504.31) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "3.2 Styles set directly on TABLE" + LayoutTable {DIV} at (0,1545.03) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1638.94) size 769x28 + LayoutText {#text} at (0,0) size 370x28 + text run at (0,0) width 370: "4. Implicit CSS Tables (row explicit)" + LayoutBlockFlow {H3} at (0,1686.84) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "4.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,1727.56) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable (anonymous) at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1820.28) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "4.2 Styles set directly on ROW" + LayoutTable (anonymous) at (0,1861) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1954.91) size 769x28 + LayoutText {#text} at (0,0) size 365x28 + text run at (0,0) width 365: "5. Implicit CSS Tables (cell explicit)" + LayoutBlockFlow {H3} at (0,2002.81) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "5.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,2043.53) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable (anonymous) at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,2136.25) size 769x22 + LayoutText {#text} at (0,0) size 248x22 + text run at (0,0) width 248: "5.2 Styles set directly on CELL" + LayoutTable (anonymous) at (0,2176.97) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,2270.88) size 769x28 + LayoutText {#text} at (0,0) size 156x28 + text run at (0,0) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (0,2318.78) size 769x38 + LayoutBlockFlow {P} at (0,0) size 769x38 + LayoutText {#text} at (0,0) size 267x18 + text run at (0,0) width 267: "How does your browser fare on this test? " + LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 458x18 + LayoutText (anonymous) at (8,2) size 427x13 + text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables." + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {LABEL} at (0,0) size 203x18 + LayoutText {#text} at (0,19) size 72x18 + text run at (0,19) width 72: "Comment: " + LayoutTextControl {INPUT} at (71.55,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (202,19) size 5x18 + text run at (202,19) width 5: " " + LayoutButton {INPUT} at (206.55,20) size 52.47x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,2372.78) size 769x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,2390.78) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 73x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 73x18 + text run at (63,0) width 73: "Table Tests" + LayoutText {#text} at (135,0) size 5x18 + text run at (135,0) width 5: "." + LayoutBlockFlow {P} at (0,2424.78) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 99x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 99x18 + text run at (63,0) width 99: "Evil Tests Page" + LayoutText {#text} at (161,0) size 5x18 + text run at (161,0) width 5: "." + LayoutBlockFlow {P} at (0,2458.78) size 769x18 + LayoutText {#text} at (0,0) size 63x18 + text run at (0,0) width 63: "Bugzilla: " + LayoutInline {A} at (0,0) size 64x18 [color=#0000EE] + LayoutText {#text} at (62,0) size 64x18 + text run at (62,0) width 64: "Bug 1044" + LayoutBlockFlow {P} at (0,2492.78) size 769x18 + LayoutText {#text} at (0,0) size 177x18 + text run at (0,0) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (176,0) size 79x18 + text run at (176,0) width 79: "Ian Hickson" + LayoutText {#text} at (254,0) size 10x18 + text run at (254,0) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (263,0) size 125x18 + text run at (263,0) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (387,0) size 10x18 + text run at (387,0) width 10: ")." + LayoutBlockFlow {P} at (0,2526.78) size 769x18 + LayoutText {#text} at (0,0) size 185x18 + text run at (0,0) width 185: "Last updated in March 1999." +layer at (83,2362) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png new file mode 100644 index 0000000..2ebdacb --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt new file mode 100644 index 0000000..ed36ede --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt
@@ -0,0 +1,22 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutTable {TABLE} at (0,0) size 66x46 + LayoutTableSection {THEAD} at (0,0) size 66x24 + LayoutTableRow {TR} at (0,2) size 66x20 + LayoutTableCell {TD} at (2,2) size 62x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 60x18 + text run at (1,1) width 60: "The head" + LayoutTableSection {TBODY} at (0,24) size 66x22 + LayoutTableRow {TR} at (0,0) size 66x20 + LayoutTableCell {TD} at (2,0) size 62x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 59x18 + text run at (1,1) width 59: "First row" + LayoutBlockFlow {FORM} at (0,46) size 784x18 + LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 29.69x13 + LayoutText {#text} at (0,0) size 30x13 + text run at (0,0) width 30: "insert" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png new file mode 100644 index 0000000..9be97bc9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png new file mode 100644 index 0000000..a7dde3e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt new file mode 100644 index 0000000..d8e9be2a4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt
@@ -0,0 +1,15 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (192,0) size 400x44 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 398x42 + LayoutTableRow {TR} at (0,2) size 398x38 + LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 390x18 + LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutText (anonymous) at (8,2) size 23x13 + text run at (8,2) width 23: "Test" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png new file mode 100644 index 0000000..3ffdc42 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png new file mode 100644 index 0000000..723437da --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt new file mode 100644 index 0000000..fb6b805 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt
@@ -0,0 +1,56 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 497x18 + text run at (0,0) width 497: "BUG: Inside a cell, \"height:x%\" is ignored. It looks like 'auto' is used instead." + LayoutBR {BR} at (496,14) size 1x0 + LayoutListItem {LI} at (0,18) size 784x18 + LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet + LayoutText {#text} at (30,0) size 265x18 + text run at (30,0) width 265: "Absolute units work correctly (eg. 50px)." + LayoutListItem {LI} at (0,36) size 784x490 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet + LayoutText {#text} at (30,0) size 183x18 + text run at (30,0) width 183: "\"width:x%\" works correctly." + LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,36) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,11) size 780x77 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,144) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,154) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,262) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,272) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,11) size 780x77.19 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (1,1) size 622.39x75.19 [bgcolor=#FFFFE0] + LayoutText {#text} at (0,0) size 232x18 + text run at (0,0) width 232: "BUG: the height of the P is not 80%" + LayoutBlockFlow {HR} at (0,380) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,390) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (1,1) size 622.39x80 [bgcolor=#FFFFE0] + LayoutText {#text} at (0,0) size 226x18 + text run at (0,0) width 226: "OK: the height of the P is 80 pixels" +layer at (11,92) size 622x75 clip at (12,93) size 620x73 + LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 616.39x13 + LayoutText {#text} at (0,0) size 219x13 + text run at (0,0) width 219: "BUG: the height of the textarea is not 80%" +layer at (11,208) size 622x80 clip at (12,209) size 620x78 + LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 616.39x13 + LayoutText {#text} at (0,0) size 216x13 + text run at (0,0) width 216: "OK: the height of the textarea is 80 pixels"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png new file mode 100644 index 0000000..3f112728 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt new file mode 100644 index 0000000..fdc2a5f4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt
@@ -0,0 +1,38 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF] + LayoutBlockFlow {FORM} at (0,0) size 784x24 + LayoutTable {TABLE} at (0,0) size 784x24 + LayoutTableSection {TBODY} at (0,0) size 784x24 + LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF] + LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1] + LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 47.33x13 + LayoutText {#text} at (0,0) size 48x13 + text run at (0,0) width 48: "Select all" + LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1] + LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 33.53x13 + LayoutText {#text} at (0,0) size 34x13 + text run at (0,0) width 34: "Delete" + LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1.27,1) size 78.45x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 62.45x13 + LayoutText {#text} at (0,0) size 63x13 + text run at (0,0) width 63: "Empty trash" + LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1] + LayoutText {#text} at (1,1) size 4x18 + text run at (1,1) width 4: " " + LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1] + LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 44.72x13 + LayoutText {#text} at (0,0) size 45x13 + text run at (0,0) width 45: "Move to:" + LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1] + LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 107x18 + LayoutText (anonymous) at (8,2) size 76x13 + text run at (8,2) width 76: "Choose folder " + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png new file mode 100644 index 0000000..e41f46d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png new file mode 100644 index 0000000..6751598 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt new file mode 100644 index 0000000..3d83b492 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt
@@ -0,0 +1,35 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 270x18 + text run at (0,0) width 270: "The select should not contain blank items " + LayoutBR {BR} at (269,14) size 1x0 + LayoutBlockFlow {FORM} at (0,18) size 784x19 + LayoutInline {B} at (0,0) size 47x18 + LayoutText {#text} at (0,0) size 47x18 + text run at (0,0) width 47: "Search" + LayoutText {#text} at (46,0) size 5x18 + text run at (46,0) width 5: " " + LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (169,0) size 5x18 + text run at (169,0) width 5: " " + LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 75x18 + LayoutText (anonymous) at (8,2) size 32x13 + text run at (8,2) width 32: "Excite" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,53) size 784x36 + LayoutBR {BR} at (0,0) size 0x18 + LayoutText {#text} at (0,18) size 270x18 + text run at (0,18) width 270: "The select should not contain blank items " + LayoutBR {BR} at (269,32) size 1x0 + LayoutBlockFlow {FORM} at (0,89) size 784x18 + LayoutMenuList {SELECT} at (0,0) size 218x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 218x18 + LayoutText (anonymous) at (8,2) size 55x13 + text run at (8,2) width 55: "Quick Link" +layer at (62,29) size 113x13 + LayoutBlockFlow {DIV} at (3,3) size 113x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png new file mode 100644 index 0000000..960233a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png new file mode 100644 index 0000000..e23513f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt new file mode 100644 index 0000000..988e2fe --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt
@@ -0,0 +1,201 @@ +layer at (0,0) size 800x600 scrollHeight 604 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x604 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x604 + LayoutBlockFlow {BODY} at (8,8) size 784x588 [bgcolor=#FFFFFF] + LayoutTable {TABLE} at (0,0) size 308x52 [border: (1px outset #808080)] + LayoutTableCol {COLGROUP} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableSection {TBODY} at (1,1) size 306x50 + LayoutTableRow {TR} at (0,2) size 306x22 + LayoutTableRow {TR} at (0,26) size 306x22 + LayoutTable {TABLE} at (0,52) size 308x52 [border: (1px outset #808080)] + LayoutTableCol {COLGROUP} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableSection {TBODY} at (1,1) size 306x50 + LayoutTableRow {TR} at (0,2) size 306x22 + LayoutTableRow {TR} at (0,26) size 306x22 + LayoutTable {TABLE} at (0,104) size 300x52 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x50 + LayoutTableRow {TR} at (0,2) size 298x22 + LayoutTableRow {TR} at (0,26) size 298x22 + LayoutTable {TABLE} at (0,156) size 300x52 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x50 + LayoutTableRow {TR} at (0,2) size 298x22 + LayoutTableRow {TR} at (0,26) size 298x22 + LayoutTable {TABLE} at (0,208) size 300x53 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x51 + LayoutTableRow {TR} at (0,2) size 298x23 + LayoutTableRow {TR} at (0,27) size 298x22 + LayoutTable {TABLE} at (0,261) size 300x53 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x51 + LayoutTableRow {TR} at (0,2) size 298x23 + LayoutTableRow {TR} at (0,27) size 298x22 + LayoutTable {TABLE} at (0,314) size 300x94 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x92 + LayoutTableRow {TR} at (0,2) size 298x46 + LayoutTableRow {TR} at (0,50) size 298x40 + LayoutTable {TABLE} at (0,498) size 300x90 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x88 + LayoutTableRow {TR} at (0,2) size 298x60 + LayoutTableRow {TR} at (0,64) size 298x22 +layer at (11,11) size 200x22 clip at (12,12) size 198x20 + LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,11) size 100x22 clip at (214,12) size 98x20 + LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,35) size 200x22 clip at (12,36) size 198x20 + LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,35) size 100x22 clip at (214,36) size 98x20 + LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,63) size 200x22 clip at (12,64) size 198x20 + LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,63) size 100x22 clip at (214,64) size 98x20 + LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,87) size 200x22 clip at (12,88) size 198x20 + LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,87) size 100x22 clip at (214,88) size 98x20 + LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,115) size 233x22 clip at (12,116) size 231x20 + LayoutTableCell {TD} at (2,2) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (246,115) size 59x22 clip at (247,116) size 57x20 + LayoutTableCell {TD} at (237,2) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,139) size 233x22 clip at (12,140) size 231x20 + LayoutTableCell {TD} at (2,26) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (246,139) size 59x22 clip at (247,140) size 57x20 + LayoutTableCell {TD} at (237,26) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,167) size 154x22 clip at (12,168) size 152x20 + LayoutTableCell {TD} at (2,2) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,167) size 138x22 clip at (168,168) size 136x20 + LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,191) size 154x22 clip at (12,192) size 152x20 + LayoutTableCell {TD} at (2,26) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,191) size 138x22 clip at (168,192) size 136x20 + LayoutTableCell {TD} at (158,26) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,219) size 154x23 clip at (12,220) size 152x21 scrollWidth 201 + LayoutTableCell {TD} at (2,2) size 154x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 150x19 + LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 184x13 + LayoutText {#text} at (75,0) size 34x13 + text run at (75,0) width 34: "button" +layer at (167,219) size 138x23 clip at (168,220) size 136x21 + LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,244) size 154x22 clip at (12,245) size 152x20 + LayoutTableCell {TD} at (2,27) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,244) size 138x22 clip at (168,245) size 136x20 + LayoutTableCell {TD} at (158,27) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,272) size 280x23 clip at (12,273) size 278x21 + LayoutTableCell {TD} at (2,2) size 280x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 276x19 + LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 184x13 + LayoutText {#text} at (75,0) size 34x13 + text run at (75,0) width 34: "button" +layer at (293,272) size 12x23 clip at (294,273) size 10x21 + LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,297) size 280x22 clip at (12,298) size 278x20 + LayoutTableCell {TD} at (2,27) size 280x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (293,297) size 12x22 clip at (294,298) size 10x20 + LayoutTableCell {TD} at (284,27) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,325) size 172x46 clip at (12,326) size 170x44 scrollWidth 216 + LayoutTableCell {TD} at (2,2) size 172x46 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {DIV} at (11,11) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 21x18 + text run at (3,3) width 21: "div" +layer at (185,325) size 120x46 clip at (186,326) size 118x44 + LayoutTableCell {TD} at (176,5) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (11,373) size 172x40 clip at (12,374) size 170x38 + LayoutTableCell {TD} at (2,50) size 172x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (185,373) size 120x40 clip at (186,374) size 118x38 + LayoutTableCell {TD} at (176,50) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (8,416) size 300x90 clip at (9,417) size 298x88 + LayoutTable {TABLE} at (0,408) size 300x90 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x88 + LayoutTableRow {TR} at (0,2) size 298x60 + LayoutTableRow {TR} at (0,64) size 298x22 +layer at (11,419) size 154x60 clip at (12,420) size 152x58 scrollWidth 207 + LayoutTableCell {TD} at (2,2) size 154x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 28x18 + text run at (3,3) width 28: "para" +layer at (167,419) size 138x60 clip at (168,420) size 136x58 + LayoutTableCell {TD} at (158,21) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,481) size 154x22 clip at (12,482) size 152x20 + LayoutTableCell {TD} at (2,64) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,481) size 138x22 clip at (168,482) size 136x20 + LayoutTableCell {TD} at (158,64) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,509) size 254x60 clip at (12,510) size 252x58 + LayoutTableCell {TD} at (2,2) size 254x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 28x18 + text run at (3,3) width 28: "para" +layer at (267,509) size 38x60 clip at (268,510) size 36x58 + LayoutTableCell {TD} at (258,21) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,571) size 254x22 clip at (12,572) size 252x20 + LayoutTableCell {TD} at (2,64) size 254x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (267,571) size 38x22 clip at (268,572) size 36x20 + LayoutTableCell {TD} at (258,64) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png new file mode 100644 index 0000000..ce84b733 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt new file mode 100644 index 0000000..41ab6b65a5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -0,0 +1,53 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x111 [bgcolor=#00FFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x109 + LayoutTableRow {TR} at (0,2) size 782x105 + LayoutTableCell {TD} at (2,2) size 453x105 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 449x101 [bgcolor=#FF00FF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 447x99 + LayoutTableRow {TR} at (0,2) size 447x95 + LayoutTableCell {TD} at (2,2) size 443x95 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 203x18 + text run at (2,2) width 203: "Mozilla To Be Dually-Licensed" + LayoutBR {BR} at (204,16) size 1x0 + LayoutText {#text} at (2,35) size 208x18 + text run at (2,35) width 208: "Plans are underway to make the " + LayoutInline {FONT} at (0,0) size 101x37 [color=#0000FF] + LayoutText {#text} at (209,20) size 101x37 + text run at (209,20) width 101: "Mozilla" + LayoutText {#text} at (309,35) size 404x58 + text run at (309,35) width 97: " code available" + text run at (2,57) width 52: "under a " + text run at (53,57) width 157: "dual MPL/GPL license. " + text run at (209,57) width 181: "See the for more info. We're" + text run at (2,75) width 326: "gathering contributor input now, in the newsgroup." + LayoutBR {BR} at (327,89) size 1x0 + LayoutTableCell {TD} at (457,25) size 323x58 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 319x54 + text run at (2,2) width 273: "This status update contains information on" + text run at (2,20) width 319: "MailNews, XML/DOM, XPToolkit, Architecture," + text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..." + LayoutBlockFlow (anonymous) at (0,111) size 784x37 + LayoutBR {BR} at (0,0) size 0x18 + LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutText {#text} at (0,0) size 36x13 + text run at (0,0) width 36: "Reload" + LayoutText {#text} at (51,18) size 9x18 + text run at (51,18) width 9: " " + LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 + LayoutText {#text} at (0,0) size 67x13 + text run at (0,0) width 67: "Change Font" + LayoutText {#text} at (141,18) size 9x18 + text run at (141,18) width 9: " " + LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (161,140) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png new file mode 100644 index 0000000..cf44ad9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt new file mode 100644 index 0000000..6457d29 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -0,0 +1,41 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x65 [bgcolor=#00FFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x63 + LayoutTableRow {TR} at (0,2) size 782x59 + LayoutTableCell {TD} at (2,2) size 304x59 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 100x37 [color=#0000FF] + LayoutText {#text} at (2,2) size 100x37 + text run at (2,2) width 100: "Mozilla" + LayoutText {#text} at (101,17) size 279x40 + text run at (101,17) width 152: " code available under a " + text run at (253,17) width 28: "dual" + text run at (2,39) width 124: "MPL/GPL license. " + text run at (125,39) width 141: "See the for more info." + LayoutBR {BR} at (265,53) size 1x0 + LayoutTableCell {TD} at (308,20) size 472x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 245x18 + text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar" + LayoutBlockFlow (anonymous) at (0,65) size 784x37 + LayoutBR {BR} at (0,0) size 0x18 + LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutText {#text} at (0,0) size 36x13 + text run at (0,0) width 36: "Reload" + LayoutText {#text} at (51,18) size 9x18 + text run at (51,18) width 9: " " + LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 + LayoutText {#text} at (0,0) size 67x13 + text run at (0,0) width 67: "Change Font" + LayoutText {#text} at (141,18) size 9x18 + text run at (141,18) width 9: " " + LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (161,94) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png new file mode 100644 index 0000000..611822a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png new file mode 100644 index 0000000..27884584 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png new file mode 100644 index 0000000..c7e38c02 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt new file mode 100644 index 0000000..50a06f5a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 245x18 + text run at (0,0) width 245: "The tables left position should be 250." + LayoutBlockFlow {P} at (0,34) size 784x19 + LayoutText {#text} at (0,0) size 36x18 + text run at (0,0) width 36: "Left: " + LayoutTextControl {INPUT} at (35.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,69) size 784x19 + LayoutText {#text} at (0,0) size 34x18 + text run at (0,0) width 34: "Top: " + LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,104) size 784x18 + LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 27.94x13 + LayoutText {#text} at (0,0) size 28x13 + text run at (0,0) width 28: "Move" +layer at (46,45) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 31x13 + text run at (0,0) width 31: "120px" +layer at (44,80) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 31x13 + text run at (0,0) width 31: "120px" +layer at (250,120) size 30x48 + LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 28x46 + LayoutTableRow {TR} at (0,2) size 28x20 + LayoutTableCell {TD} at (2,2) size 24x20 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 22x18 + text run at (1,1) width 22: "foo" + LayoutTableRow {TR} at (0,24) size 28x20 + LayoutTableCell {TD} at (2,24) size 24x20 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 21x18 + text run at (1,1) width 21: "bar"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png new file mode 100644 index 0000000..8924635 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt new file mode 100644 index 0000000..a641299 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt
@@ -0,0 +1,22 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x80 + LayoutBlockFlow {HTML} at (0,0) size 800x80 + LayoutBlockFlow {BODY} at (8,8) size 784x64 + LayoutBlockFlow {FORM} at (0,0) size 784x38 + LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 134.98x13 + LayoutText {#text} at (0,0) size 135x13 + text run at (0,0) width 135: "(1) Fill cell with long string" + LayoutBR {BR} at (150,0) size 1x18 + LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 141.39x13 + LayoutText {#text} at (0,0) size 142x13 + text run at (0,0) width 142: "(2) Fill cell with short string" + LayoutBR {BR} at (157,19) size 1x18 + LayoutTable {TABLE} at (0,38) size 83x26 + LayoutTableSection {TBODY} at (0,0) size 83x26 + LayoutTableRow {TR} at (0,2) size 83x22 + LayoutTableCell {TD} at (2,2) size 79x22 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 15x18 + text run at (2,2) width 15: "aa"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png new file mode 100644 index 0000000..7e5b6606 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt new file mode 100644 index 0000000..c1d148d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt
@@ -0,0 +1,30 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x106 + LayoutBlockFlow {HTML} at (0,0) size 800x106 + LayoutBlockFlow {BODY} at (8,8) size 784x90 + LayoutBlockFlow {FORM} at (0,0) size 784x36 + LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 234.20x13 + LayoutText {#text} at (0,0) size 235x13 + text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)" + LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 238.75x13 + LayoutText {#text} at (0,0) size 239x13 + text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)" + LayoutTable {TABLE} at (0,36) size 34x54 + LayoutTableSection {TBODY} at (0,0) size 34x54 + LayoutTableRow {TR} at (0,2) size 34x24 + LayoutTableCell {TD} at (2,2) size 14x24 [border: (2px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "1" + LayoutTableCell {TD} at (18,2) size 14x24 [border: (2px solid #000000)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2" + LayoutTableRow {TR} at (0,28) size 34x24 + LayoutTableCell {TD} at (2,28) size 14x24 [border: (2px solid #000000)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2" + LayoutTableCell {TD} at (18,28) size 14x24 [border: (2px solid #000000)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png new file mode 100644 index 0000000..43c0b03 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt new file mode 100644 index 0000000..08cdda66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt
@@ -0,0 +1,30 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x114 + LayoutBlockFlow {HTML} at (0,0) size 800x114 + LayoutBlockFlow {BODY} at (8,8) size 784x98 + LayoutBlockFlow {FORM} at (0,0) size 784x36 + LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 160.41x13 + LayoutText {#text} at (0,0) size 161x13 + text run at (0,0) width 161: "[Step 1] Set cell height to 60px" + LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 161.55x13 + LayoutText {#text} at (0,0) size 162x13 + text run at (0,0) width 162: "[Step 2] Set cell height to 20px" + LayoutTable {TABLE} at (0,36) size 42x62 + LayoutTableSection {TBODY} at (0,0) size 42x62 + LayoutTableRow {TR} at (0,2) size 42x28 + LayoutTableCell {TD} at (2,2) size 18x28 [border: (4px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "1" + LayoutTableCell {TD} at (22,2) size 18x28 [border: (4px solid #000000)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2" + LayoutTableRow {TR} at (0,32) size 42x28 + LayoutTableCell {TD} at (2,32) size 18x28 [border: (4px solid #000000)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2" + LayoutTableCell {TD} at (22,32) size 18x28 [border: (4px solid #000000)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png new file mode 100644 index 0000000..a5e8a71 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt new file mode 100644 index 0000000..2cf3d99 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt
@@ -0,0 +1,60 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 470x142 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 468x140 + LayoutTableRow {TR} at (0,0) size 468x140 + LayoutTableCell {TD} at (0,0) size 468x140 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (1,1) size 466x138 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 464x136 + LayoutTableRow {TR} at (0,1) size 464x28 + LayoutTableCell {TD} at (1,1) size 140x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 130x18 + text run at (5,5) width 130: "General Preferences" + LayoutTableCell {TD} at (142,1) size 147x28 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 137x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 137x18 + text run at (5,5) width 137: "Groups / Permissions" + LayoutTableCell {TD} at (290,1) size 72x28 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 62x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 62x18 + text run at (5,5) width 62: "Password" + LayoutTableCell {TD} at (363,1) size 49x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutInline {A} at (0,0) size 39x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 39x18 + text run at (5,5) width 39: "Email" + LayoutTableCell {TD} at (413,1) size 50x28 [border: (1px inset #808080)] [r=0 c=4 rs=1 cs=1] + LayoutText {#text} at (5,5) size 40x18 + text run at (5,5) width 40: "Views" + LayoutTableRow {TR} at (0,30) size 464x105 + LayoutTableCell {TD} at (1,30) size 462x105 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=5] + LayoutBlockFlow (anonymous) at (5,5) size 452x18 + LayoutBR {BR} at (226,0) size 0x18 + LayoutTable {TABLE} at (93,23) size 276x77 + LayoutTableSection {TBODY} at (0,0) size 276x77 + LayoutTableRow {TR} at (0,2) size 276x73 + LayoutTableCell {TD} at (2,2) size 272x73 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (1,1) size 270x55 + LayoutTable {TABLE} at (0,0) size 270x55 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 268x53 + LayoutTableRow {TR} at (0,0) size 268x53 + LayoutTableCell {TD} at (0,0) size 268x53 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (1,1) size 266x18 + LayoutText {#text} at (78,0) size 110x18 + text run at (78,0) width 110: "User Preferences" + LayoutTable {TABLE} at (1,19) size 266x33 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 264x31 + LayoutTableRow {TR} at (0,1) size 264x29 + LayoutTableCell {TH} at (1,1) size 120x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {NOBR} at (0,0) size 110x18 + LayoutText {#text} at (5,5) size 110x18 + text run at (5,5) width 110: "Email Address :" + LayoutTableCell {TD} at (122,1) size 141x29 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTextControl {INPUT} at (5,5) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (241,97) size 125x13 scrollWidth 189 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 188x13 + text run at (0,0) width 188: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png new file mode 100644 index 0000000..0c046792 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt new file mode 100644 index 0000000..7fd1795 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt
@@ -0,0 +1,26 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutTable {TABLE} at (0,0) size 379x28 [border: (3px outset #808080)] + LayoutTableSection {TBODY} at (3,3) size 373x22 + LayoutTableRow {TR} at (0,0) size 373x22 + LayoutTableCell {TD} at (0,0) size 69x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 65x18 + text run at (2,2) width 65: "fieldLabel" + LayoutTableCell {TD} at (69,0) size 304x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 107x18 + text run at (2,2) width 107: " InspectionText" + LayoutBlockFlow {FORM} at (0,28) size 784x19 + LayoutButton {INPUT} at (0,1) size 85.78x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 69.78x13 + LayoutText {#text} at (0,0) size 70x13 + text run at (0,0) width 70: "change width" + LayoutText {#text} at (85,0) size 5x18 + text run at (85,0) width 5: " " + LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 158.59x13 + LayoutText {#text} at (0,0) size 159x13 + text run at (0,0) width 159: "change width with table reflow" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png new file mode 100644 index 0000000..def1f45 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt new file mode 100644 index 0000000..953c9062 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt
@@ -0,0 +1,16 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 480x18 + text run at (0,0) width 480: "This test case creates a TR element then tries to assign to the cells property" + LayoutBlockFlow {P} at (0,34) size 784x19 + LayoutText {#text} at (0,0) size 42x18 + text run at (0,0) width 42: "Crash " + LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 72.69x13 + LayoutText {#text} at (0,0) size 73x13 + text run at (0,0) width 73: "TR.cells = null" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png new file mode 100644 index 0000000..1468154f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt new file mode 100644 index 0000000..1ad87e4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt
@@ -0,0 +1,80 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF] + LayoutBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 775x36 + text run at (0,0) width 441: "Click on a link on the left hand column. Also note the overlap of the " + text run at (440,0) width 335: "text box with the submit button. (And, removing the" + text run at (0,18) width 156: "font tag that is wrapped " + text run at (155,18) width 239: "around the text box clears up layout)." + LayoutBlockFlow (anonymous) at (0,52) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 + LayoutBlockFlow {FORM} at (0,70) size 784x136 + LayoutBlockFlow {CENTER} at (0,0) size 784x136 + LayoutTable {TABLE} at (92,0) size 600x136 [bgcolor=#EEEEEE] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 598x134 + LayoutTableRow {TR} at (0,3) size 598x128 + LayoutTableCell {TD} at (3,3) size 124x128 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (4,4) size 116x120 [bgcolor=#FFFFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 114x118 + LayoutTableRow {TR} at (0,2) size 114x27 + LayoutTableCell {TD} at (2,3) size 110x24 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 62x18 [color=#660099] + LayoutInline {B} at (0,0) size 62x18 + LayoutText {#text} at (3,3) size 62x18 + text run at (3,3) width 62: "Netscape" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,31) size 114x27 + LayoutTableCell {TD} at (2,32) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 58x18 [color=#660099] + LayoutInline {B} at (0,0) size 58x18 + LayoutText {#text} at (3,3) size 58x18 + text run at (3,3) width 58: "Infoseek" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,60) size 114x27 + LayoutTableCell {TD} at (2,61) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 79x18 [color=#660099] + LayoutInline {B} at (0,0) size 79x18 + LayoutText {#text} at (3,3) size 79x18 + text run at (3,3) width 79: "LookSmart" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,89) size 114x27 + LayoutTableCell {TD} at (2,90) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 66x18 [color=#660099] + LayoutInline {B} at (0,0) size 66x18 + LayoutText {#text} at (3,3) size 66x18 + text run at (3,3) width 66: "Directory" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (130,27) size 465x79 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTable {TABLE} at (4,4) size 457x71 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 455x69 + LayoutTableRow {TR} at (0,4) size 455x29 + LayoutTableCell {TD} at (4,4) size 341x29 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=3] + LayoutInline {FONT} at (0,0) size 257x15 + LayoutText {#text} at (0,0) size 0x0 + LayoutTextControl {INPUT} at (5,5) size 257x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Search" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,37) size 455x28 + LayoutTableCell {TD} at (4,37) size 110x28 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (118,37) size 111x28 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (233,37) size 112x28 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (349,37) size 102x28 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" +layer at (248,123) size 251x13 + LayoutBlockFlow {DIV} at (3,3) size 251x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png new file mode 100644 index 0000000..3750390 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png new file mode 100644 index 0000000..a59487b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png new file mode 100644 index 0000000..c64b5a37 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt new file mode 100644 index 0000000..0c0ae7c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt
@@ -0,0 +1,45 @@ +layer at (0,0) size 800x600 scrollWidth 984 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)] + LayoutTableSection {TBODY} at (2,2) size 972x135 + LayoutTableRow {TR} at (0,2) size 972x131 + LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)] + LayoutTableSection {TBODY} at (2,2) size 202x123 + LayoutTableRow {TR} at (0,2) size 202x83 + LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 139x27 + LayoutTableRow {TR} at (0,2) size 139x23 + LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 190x44 + LayoutTableRow {TR} at (0,2) size 190x40 + LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 171x36 + text run at (2,2) width 171: "THIS TABLE NEEDS TO" + text run at (2,20) width 67: "BE HERE" + LayoutTableRow {TR} at (0,87) size 202x34 + LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 190x26 + LayoutTableRow {TR} at (0,2) size 190x22 + LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 182x18 + LayoutText (anonymous) at (8,2) size 151x13 + text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 752x36 + text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE" + text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\"" +layer at (29,29) size 125x13 scrollWidth 132 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 131x13 + text run at (0,0) width 131: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png new file mode 100644 index 0000000..dda01e2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt new file mode 100644 index 0000000..09f5606d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -0,0 +1,41 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {BLOCKQUOTE} at (40,0) size 704x115 + LayoutBlockFlow {CENTER} at (0,0) size 704x115 + LayoutTable {TABLE} at (297.50,0) size 109x80 [border: (2px none #808080)] + LayoutTableSection {TBODY} at (2,2) size 104x75 + LayoutTableRow {TR} at (0,0) size 104x25 + LayoutTableCell {TD} at (0,0) size 37x25 [border: (3px groove #0000FF)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 29x18 + text run at (4,4) width 29: "EST" + LayoutTableCell {TD} at (37,0) size 67x25 [border: (3px groove #0000FF)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "9:00 a.m." + LayoutTableRow {TR} at (0,25) size 104x25 + LayoutTableCell {TD} at (0,25) size 37x25 [border: (3px groove #0000FF)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 30x18 + text run at (4,4) width 30: "CST" + LayoutTableCell {TD} at (37,25) size 67x25 [border: (3px groove #0000FF)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "8:00 a.m." + LayoutTableRow {TR} at (0,50) size 104x25 + LayoutTableCell {TD} at (0,50) size 37x25 [border: (3px groove #0000FF)] [r=2 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 28x18 + text run at (4,4) width 28: "PST" + LayoutTableCell {TD} at (37,50) size 67x25 [border: (3px groove #0000FF)] [r=2 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "6:00 a.m." + LayoutBlockFlow {P} at (0,96) size 704x19 + LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 45.28x13 + LayoutText {#text} at (0,0) size 46x13 + text run at (0,0) width 46: "separate" + LayoutText {#text} at (351,0) size 5x18 + text run at (351,0) width 5: " " + LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 43.02x13 + LayoutText {#text} at (0,0) size 43x13 + text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png new file mode 100644 index 0000000..d30f0a4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png new file mode 100644 index 0000000..b23a51b2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt new file mode 100644 index 0000000..17fdcb0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt
@@ -0,0 +1,105 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 191x18 + text run at (0,0) width 191: "outer width=400 align=center" + LayoutTable {TABLE} at (192,18) size 400x44 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 398x42 + LayoutTableRow {TR} at (0,2) size 398x38 + LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 390x18 + LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutText (anonymous) at (8,2) size 23x13 + text run at (8,2) width 23: "Test" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,62) size 784x18 + LayoutText {#text} at (0,0) size 301x18 + text run at (0,0) width 301: "outer width=400 inner width=200 align=center" + LayoutTable {TABLE} at (0,80) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 392x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (96,2) size 200x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 198x26 + LayoutTableRow {TR} at (0,2) size 198x22 + LayoutTableCell {TD} at (2,2) size 194x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,120) size 784x18 + LayoutText {#text} at (0,0) size 186x18 + text run at (0,0) width 186: "outer auto inner align=center" + LayoutTable {TABLE} at (0,138) size 44x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 40x36 + LayoutTableRow {TR} at (0,2) size 40x32 + LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,178) size 784x18 + LayoutText {#text} at (0,0) size 220x18 + text run at (0,0) width 220: "outer width=50 inner align=center" + LayoutTable {TABLE} at (0,196) size 44x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 40x36 + LayoutTableRow {TR} at (0,2) size 40x32 + LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,236) size 784x18 + LayoutText {#text} at (0,0) size 232x18 + text run at (0,0) width 232: "outer width=50 inner margin-left:50" + LayoutTable {TABLE} at (0,254) size 94x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 90x36 + LayoutTableRow {TR} at (0,2) size 90x32 + LayoutTableCell {TD} at (2,2) size 86x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (52,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,294) size 784x18 + LayoutText {#text} at (0,0) size 228x18 + text run at (0,0) width 228: "outer width=400 inner align=center" + LayoutTable {TABLE} at (0,312) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 117x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (42.50,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutTableCell {TD} at (121,7) size 273x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 80x18 + text run at (2,2) width 80: "x x x x x x x" + LayoutBlockFlow (anonymous) at (0,352) size 784x18 + LayoutText {#text} at (0,0) size 228x18 + text run at (0,0) width 228: "outer width=400 inner align=center" + LayoutTable {TABLE} at (0,370) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 168x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (54,2) size 60x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 58x26 + LayoutTableRow {TR} at (0,2) size 58x22 + LayoutTableCell {TD} at (2,2) size 54x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 16x18 + text run at (2,2) width 16: "50" + LayoutTableCell {TD} at (172,7) size 222x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 80x18 + text run at (2,2) width 80: "x x x x x x x" + LayoutBlockFlow (anonymous) at (0,410) size 784x18 + LayoutText {#text} at (0,0) size 20x18 + text run at (0,0) width 20: "-->"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png new file mode 100644 index 0000000..58e6a13 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt new file mode 100644 index 0000000..7da4bf3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt
@@ -0,0 +1,69 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow {FORM} at (0,0) size 784x19 + LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 92x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 61: "append cell" + LayoutText {#text} at (92,0) size 53x18 + text run at (92,0) width 53: " tbody " + LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (185,0) size 42x18 + text run at (185,0) width 42: " row " + LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (267,0) size 36x18 + text run at (267,0) width 36: " col " + LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (343,0) size 76x18 + text run at (343,0) width 76: " row span " + LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (459,0) size 69x18 + text run at (459,0) width 69: " col span " + LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (568,0) size 21x18 + text run at (568,0) width 21: " " + LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 24.53x13 + LayoutText {#text} at (0,0) size 25x13 + text run at (0,0) width 25: "Do It" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,35) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 + LayoutTable {TABLE} at (0,53) size 64x52 [bgcolor=#FFA500] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 62x50 + LayoutTableRow {TR} at (0,2) size 62x22 + LayoutTableCell {TD} at (2,2) size 28x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 23x18 + text run at (2,2) width 23: "c11" + LayoutTableRow {TR} at (0,26) size 62x22 + LayoutTableCell {TD} at (2,26) size 28x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 24x18 + text run at (2,2) width 24: "c21" + LayoutTableCell {TD} at (32,26) size 28x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 24x18 + text run at (2,2) width 24: "c22" + LayoutBlockFlow (anonymous) at (0,105) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 +layer at (155,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (237,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (314,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (429,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 6x13 + text run at (0,0) width 6: "1" +layer at (539,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 6x13 + text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png new file mode 100644 index 0000000..af44f4b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png new file mode 100644 index 0000000..02e2d6b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png new file mode 100644 index 0000000..3d3b6c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png new file mode 100644 index 0000000..0edb31b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png new file mode 100644 index 0000000..2ad1279 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png new file mode 100644 index 0000000..fc3fd5b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png new file mode 100644 index 0000000..a84f408 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt new file mode 100644 index 0000000..fe2063ce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -0,0 +1,68 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 600x276 [bgcolor=#FFC0CB] + LayoutTableSection {TBODY} at (0,0) size 600x276 + LayoutTableRow {TR} at (0,0) size 600x18 + LayoutTableCell {TD} at (0,0) size 600x18 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=3] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "1" + LayoutTableRow {TR} at (0,18) size 600x18 + LayoutTableCell {TD} at (0,18) size 600x18 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=3] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "2" + LayoutTableRow {TR} at (0,36) size 600x0 + LayoutTableCell {TD} at (0,36) size 155x18 [bgcolor=#00FFFF] [r=2 c=0 rs=40 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "3" + LayoutTableRow {TR} at (0,36) size 600x24 + LayoutTableCell {TD} at (155,36) size 445x24 [bgcolor=#FFA500] [r=3 c=1 rs=1 cs=1] + LayoutTable {TABLE} at (0,0) size 440x24 + LayoutTableSection {TBODY} at (0,0) size 440x24 + LayoutTableRow {TR} at (0,2) size 440x20 + LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 77.73x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 78: "Submit Criteria" + LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (1,1) size 8x18 + text run at (1,1) width 8: "4" + LayoutTableRow {TR} at (0,60) size 600x18 + LayoutTableCell {TD} at (155,60) size 445x18 [bgcolor=#FF0000] [r=4 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "5" + LayoutTableRow {TR} at (0,78) size 600x36 + LayoutTableCell {TD} at (155,78) size 445x36 [bgcolor=#FFFF00] [r=5 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 436x36 + text run at (0,0) width 263: "If you have entered your feature criteria, " + text run at (262,0) width 174: "press the \"Submit Criteria\"" + text run at (0,18) width 88: "button above." + LayoutTableRow {TR} at (0,114) size 600x18 + LayoutTableCell {TD} at (155,114) size 445x18 [bgcolor=#D3D3D3] [r=6 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "6" + LayoutTableRow {TR} at (0,132) size 600x54 + LayoutTableCell {TD} at (155,132) size 445x54 [r=7 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 433x54 + text run at (0,0) width 267: "If you want to do a radius search instead, " + text run at (266,0) width 167: "press the \"Radius Search\"" + text run at (0,18) width 49: "button. " + text run at (48,18) width 287: "This will allow you to select a starting point " + text run at (334,18) width 71: "and enter a" + text run at (0,36) width 204: "radius with new feature criteria." + LayoutTableRow {TR} at (0,186) size 600x18 + LayoutTableCell {TD} at (155,186) size 445x18 [r=8 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 4x18 + text run at (0,0) width 4: " " + LayoutTableRow {TR} at (0,204) size 600x72 + LayoutTableCell {TD} at (155,204) size 445x72 [r=9 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 419x72 + text run at (0,0) width 419: "All information provided is deemed reliable but is not guaranteed" + text run at (0,18) width 93: "and should be " + text run at (92,18) width 291: "independently verified. The price shown may" + text run at (0,36) width 206: "represent the top or bottom of a " + text run at (205,36) width 168: "price range listing and not" + text run at (0,54) width 193: "necessarily a fixed price offer."
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png new file mode 100644 index 0000000..bd530e3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt new file mode 100644 index 0000000..2f1fd4ef --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -0,0 +1,180 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 1444 + LayoutView at (0,0) size 800x600 +layer at (8,8) size 769x1428 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (8,8) size 769x1428 [border: (16px solid #00FF00)] + LayoutTable (anonymous) at (16,16) size 737x1396 + LayoutTableSection (anonymous) at (0,0) size 737x1396 + LayoutTableRow (anonymous) at (0,0) size 737x1396 + LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)] + LayoutText {#text} at (1,1) size 188x54 + text run at (1,1) width 188: "Evil Tests: Rendering BODY" + text run at (1,19) width 163: "and HEAD as children of" + text run at (1,37) width 67: "HTML - 2" + LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)] + LayoutText {#text} at (1,1) size 206x252 + text run at (1,1) width 83: "/* Layout */ " + text run at (83,1) width 112: "HTML { display:" + text run at (1,19) width 194: "block; border: 1em lime solid;" + text run at (1,37) width 98: "margin: 8px; } " + text run at (98,37) width 99: "HEAD, BODY" + text run at (1,55) width 181: "{ display: table-cell; border:" + text run at (1,73) width 76: "solid thick; " + text run at (76,73) width 93: "padding: 1em;" + text run at (1,91) width 102: "margin: 1em; } " + text run at (102,91) width 74: "HEAD > *," + text run at (1,109) width 181: "BODY > * { display: block;" + text run at (1,127) width 178: "border: thin dotted; margin:" + text run at (1,145) width 60: "1em 0; } " + text run at (60,145) width 105: "/* Formatting */" + text run at (1,163) width 142: "HTML { color: black;" + text run at (1,181) width 140: "background: green; } " + text run at (140,181) width 57: "HEAD {" + text run at (1,199) width 206: "color: white; background: red; }" + text run at (1,217) width 151: "BODY { color: yellow;" + text run at (1,235) width 124: "background: teal; }" + LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1] + LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 152x37 + text run at (1,1) width 152: "Rendering " + LayoutInline {CODE} at (0,0) size 63x30 + LayoutText {#text} at (153,6) size 63x30 + text run at (153,6) width 63: "BODY" + LayoutText {#text} at (215,1) size 68x37 + text run at (215,1) width 68: " and " + LayoutInline {CODE} at (0,0) size 63x30 + LayoutText {#text} at (283,6) size 63x30 + text run at (283,6) width 63: "HEAD" + LayoutText {#text} at (345,1) size 381x74 + text run at (345,1) width 37: " as" + text run at (1,38) width 156: "children of " + LayoutInline {CODE} at (0,0) size 64x30 + LayoutText {#text} at (156,43) size 64x30 + text run at (156,43) width 64: "HTML" + LayoutText {#text} at (219,38) size 43x37 + text run at (219,38) width 43: " - 2" + LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 393x18 + text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail" + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (1,19) size 186x18 + text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (186,19) size 5x18 + text run at (186,19) width 5: "." + LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {DT} at (1,1) size 442x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (41,19) size 402x72 + LayoutText {#text} at (0,0) size 392x54 + text run at (0,0) width 392: "Browsers that are subjected to this test should support the the" + text run at (0,18) width 388: "background, padding, margin, border and color properties of" + text run at (0,36) width 160: "CSS, and in addition the " + LayoutInline {CODE} at (0,0) size 63x15 + LayoutText {#text} at (160,38) size 63x15 + text run at (160,38) width 63: "overflow" + LayoutText {#text} at (222,36) size 400x36 + text run at (222,36) width 178: " property and fixed position" + text run at (0,54) width 109: "stuff from CSS2." + LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 440x56 + text run at (1,1) width 440: "1. Making the BODY and the HEAD into a" + text run at (1,29) width 51: "table" + LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 264x18 + text run at (1,1) width 264: "This is really evil, but completely valid..." + LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 430x108 + text run at (1,1) width 426: "This document should have two cells, side by side: one on the left," + text run at (1,19) width 426: "the other on the right. The one on the left should be red with white" + text run at (1,37) width 430: "writing and a thick white border. It should contain four dotted lines" + text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box" + text run at (1,73) width 403: "containing the document title, and another dotted bordered box" + text run at (1,91) width 286: "containing the stylesheet, also shown below:" + LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 39x15 + text run at (1,1) width 39: " ..." + text run at (40,1) width 0: " " + LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 419x36 + text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be" + text run at (1,19) width 40: "white." + LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 424x36 + text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you" + text run at (1,19) width 278: "are reading now should be in this right cell." + LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 413x36 + text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I" + text run at (1,19) width 37: "think." + LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 439x72 + text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --" + text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there" + text run at (1,37) width 414: "should be a blank line between each such box. No box should be" + text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other." + LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 417x36 + text run at (1,1) width 417: "The cells should be the same height, and they should have grown" + text run at (1,19) width 229: "vertically to accommodate this text." + LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 437x54 + text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light" + text run at (1,19) width 437: "green. The cells should be separated from each other and from these" + text run at (1,37) width 230: "outer borders by 1em of dark green." + LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 429x36 + text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you" + text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis." + LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 156x28 + text run at (1,1) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (1,17) size 442x56 + LayoutText {#text} at (0,0) size 263x18 + text run at (0,0) width 263: "How does your browser fare on this test?" + LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 442x18 + LayoutText (anonymous) at (8,2) size 210x13 + text run at (8,2) width 210: "Document renders exactly as described." + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {LABEL} at (0,0) size 203x18 + LayoutText {#text} at (0,37) size 72x18 + text run at (0,37) width 72: "Comment: " + LayoutTextControl {INPUT} at (71.55,37) size 131x19 [color=#000000] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (202,37) size 5x18 + text run at (202,37) width 5: " " + LayoutButton {INPUT} at (206.55,38) size 52.47x18 [color=#000000] [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)] + LayoutInline {A} at (0,0) size 162x18 [color=#0000EE] + LayoutText {#text} at (1,1) size 162x18 + text run at (1,1) width 162: "Up to the Evil Tests Page" + LayoutText {#text} at (162,1) size 5x18 + text run at (162,1) width 5: "." + LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 177x18 + text run at (1,1) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (177,1) size 79x18 + text run at (177,1) width 79: "Ian Hickson" + LayoutText {#text} at (255,1) size 10x18 + text run at (255,1) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (264,1) size 125x18 + text run at (264,1) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (388,1) size 10x18 + text run at (388,1) width 10: ")." + LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 172x18 + text run at (1,1) width 172: "Last updated in June 1999." +layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png new file mode 100644 index 0000000..70f68db --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt new file mode 100644 index 0000000..f3cd060a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -0,0 +1,46 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 259x240 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 257x238 + LayoutTableRow {TR} at (0,2) size 257x22 + LayoutTableCell {TD} at (2,11) size 41x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (45,2) size 76x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 1" + LayoutTableCell {TD} at (123,2) size 54x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 2" + LayoutTableCell {TD} at (179,2) size 76x22 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 3" + LayoutTableRow {TR} at (0,26) size 257x78 + LayoutTableCell {TD} at (2,54) size 41x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 1" + LayoutTableCell {TD} at (45,26) size 210x210 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=3] + LayoutBlockFlow (floating) {DIV} at (2,2) size 206x206 [border: (3px solid #FF0000)] + LayoutText {#text} at (83,3) size 40x18 + text run at (83,3) width 40: "tjosan" + LayoutTableRow {TR} at (0,106) size 257x50 + LayoutTableCell {TD} at (2,120) size 41x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 2" + LayoutTableRow {TR} at (0,158) size 257x78 + LayoutTableCell {TD} at (2,186) size 41x22 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 3" + LayoutBlockFlow (anonymous) at (0,240) size 784x19 + LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 37.80x13 + LayoutText {#text} at (0,0) size 38x13 + text run at (0,0) width 38: "expand" + LayoutText {#text} at (53,0) size 5x18 + text run at (53,0) width 5: " " + LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 26.28x13 + LayoutText {#text} at (0,0) size 27x13 + text run at (0,0) width 27: "sizes" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png new file mode 100644 index 0000000..2f496d96 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png new file mode 100644 index 0000000..63487bc --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt new file mode 100644 index 0000000..a3a1d3c2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -0,0 +1,83 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {CENTER} at (0,0) size 784x132 + LayoutTable {TABLE} at (339,0) size 106x80 + LayoutTableSection {THEAD} at (0,0) size 106x20 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 29x18 + text run at (1,1) width 29: "EST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "1am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "8pm" + LayoutTableSection {TBODY} at (0,20) size 106x40 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 30x18 + text run at (1,1) width 30: "CST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "2am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "9pm" + LayoutTableRow {TR} at (0,20) size 106x20 + LayoutTableCell {TD} at (0,20) size 35x20 [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 33x18 + text run at (1,1) width 33: "MST" + LayoutTableCell {TD} at (35,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "3am" + LayoutTableCell {TD} at (66,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 37x18 + text run at (2,1) width 37: "10pm" + LayoutTableSection {TFOOT} at (0,60) size 106x20 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 28x18 + text run at (1,1) width 28: "PST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "4am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 36x18 + text run at (2,1) width 36: "11pm" + LayoutBlockFlow {P} at (0,96) size 784x36 + LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 + LayoutText {#text} at (0,0) size 58x13 + text run at (0,0) width 18: "No " + text run at (17,0) width 41: "borders" + LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 44: "Exterior " + text run at (43,0) width 35: "border" + LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 17: "All " + text run at (16,0) width 41: "borders" + LayoutBR {BR} at (512,13) size 0x0 + LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 + LayoutText {#text} at (0,0) size 83x13 + text run at (0,0) width 43: "Column " + text run at (42,0) width 41: "borders" + LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 + LayoutText {#text} at (0,0) size 81x13 + text run at (0,0) width 41: "Groups " + text run at (40,0) width 41: "borders" + LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 32: "Table " + text run at (31,0) width 63: "row borders" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png new file mode 100644 index 0000000..730816b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt new file mode 100644 index 0000000..8eb2c06 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -0,0 +1,83 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {CENTER} at (0,0) size 784x134 + LayoutTable {TABLE} at (338,0) size 108x82 [border: none] + LayoutTableSection {THEAD} at (0,0) size 107x21 + LayoutTableRow {TR} at (0,0) size 107x21 + LayoutTableCell {TD} at (0,0) size 36x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 29x18 + text run at (2,2) width 29: "EST" + LayoutTableCell {TD} at (36,0) size 31x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 28x18 + text run at (2,2) width 28: "1am" + LayoutTableCell {TD} at (67,0) size 40x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,2) size 29x18 + text run at (2,2) width 29: "8pm" + LayoutTableSection {TBODY} at (0,21) size 107x40 + LayoutTableRow {TR} at (0,0) size 107x20 + LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 30x18 + text run at (2,1) width 30: "CST" + LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "2am" + LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "9pm" + LayoutTableRow {TR} at (0,20) size 107x20 + LayoutTableCell {TD} at (0,20) size 36x20 [border: none none none (1px solid #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 33x18 + text run at (2,1) width 33: "MST" + LayoutTableCell {TD} at (36,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "3am" + LayoutTableCell {TD} at (67,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 37x18 + text run at (2,1) width 37: "10pm" + LayoutTableSection {TFOOT} at (0,61) size 107x20 + LayoutTableRow {TR} at (0,0) size 107x20 + LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "PST" + LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "4am" + LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 36x18 + text run at (2,1) width 36: "11pm" + LayoutBlockFlow {P} at (0,98) size 784x36 + LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 + LayoutText {#text} at (0,0) size 58x13 + text run at (0,0) width 18: "No " + text run at (17,0) width 41: "borders" + LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 44: "Exterior " + text run at (43,0) width 35: "border" + LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 17: "All " + text run at (16,0) width 41: "borders" + LayoutBR {BR} at (512,13) size 0x0 + LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 + LayoutText {#text} at (0,0) size 83x13 + text run at (0,0) width 43: "Column " + text run at (42,0) width 41: "borders" + LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 + LayoutText {#text} at (0,0) size 81x13 + text run at (0,0) width 41: "Groups " + text run at (40,0) width 41: "borders" + LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 32: "Table " + text run at (31,0) width 63: "row borders" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png new file mode 100644 index 0000000..20d9f95 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt index 2c9b570..29a7ff7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@ LayoutBlockFlow (anonymous) at (0,36) size 784x19 LayoutMenuList {SELECT} at (0,1) size 118x18 [bgcolor=#F8F8F8] LayoutBlockFlow (anonymous) at (0,0) size 118x21 - LayoutText (anonymous) at (8,2) size 79x13 - text run at (8,2) width 79 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText (anonymous) at (8,2) size 87x13 + text run at (8,2) width 87 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)] LayoutBlockFlow {P} at (0,327) size 784x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt index 3918302..bc1b99e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@ LayoutText {#text} at (2,0) size 113x21 text run at (2,0) width 113 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}" LayoutBlockFlow {OPTION} at (1,113.97) size 331.80x25 - LayoutText {#text} at (2,0) size 77x21 - text run at (2,0) width 77 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" + LayoutText {#text} at (2,0) size 74x21 + text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" LayoutBlockFlow {OPTION} at (1,138.97) size 331.80x22.59 LayoutText {#text} at (2,0) size 132x21 text run at (2,0) width 132: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png new file mode 100644 index 0000000..1386b807 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt new file mode 100644 index 0000000..0123fdf --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -0,0 +1,168 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x549 + LayoutBlockFlow {HTML} at (0,0) size 800x549 + LayoutBlockFlow {BODY} at (8,16) size 784x525 + LayoutBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 758x36 + text run at (0,0) width 758: "This tests that bidirectional text is correctly rendered in popup controls. The order of the text below each popup button" + text run at (0,18) width 600: "should match the order of the select's option text, and the order of the text in the popup menu." + LayoutBlockFlow {DL} at (0,52) size 784x168 + LayoutBlockFlow {DT} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 286x18 + text run at (0,0) width 286: "1) direction: rtl; -webkit-rtl-ordering: logical" + LayoutBlockFlow {DD} at (40,18) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 100x18 + LayoutText (anonymous) at (31,2) size 61x13 + text run at (31,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + text run at (73,2) width 19: "abc" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 100x19 + LayoutText {#text} at (18,1) size 82x18 + text run at (18,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + text run at (77,1) width 23: "abc" + LayoutBlockFlow {DT} at (0,56) size 784x18 + LayoutText {#text} at (0,0) size 118x18 + text run at (0,0) width 118: "2) text-align: right" + LayoutBlockFlow {DD} at (40,74) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 200x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 200x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 19: "abc" + text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 200x19 + LayoutText {#text} at (0,1) size 82x18 + text run at (0,1) width 23: "abc" + text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutBlockFlow {DT} at (0,112) size 784x18 + LayoutText {#text} at (0,0) size 72x18 + text run at (0,0) width 72: "3) No style" + LayoutBlockFlow {DD} at (40,130) size 744x38 + LayoutBlockFlow (anonymous) at (0,0) size 744x19 + LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 100x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 19: "abc" + text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (0,19) size 100x19 + LayoutText {#text} at (0,1) size 82x18 + text run at (0,1) width 23: "abc" + text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}" + LayoutBlockFlow {HR} at (0,236) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {DIV} at (0,246) size 784x55 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 632x18 + text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking." + LayoutBlockFlow {DIV} at (0,18) size 784x18 + LayoutText {#text} at (0,0) size 99x16 + text run at (0,0) width 99 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutBlockFlow (anonymous) at (0,36) size 784x19 + LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 115x21 + LayoutText (anonymous) at (8,2) size 84x13 + text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,327) size 784x18 + LayoutText {#text} at (0,0) size 709x18 + text run at (0,0) width 709: "Verify that the alignment and writing direction of each selected item matches the one below the pop-up button." +layer at (8,377) size 784x164 + LayoutBlockFlow {DIV} at (0,361) size 784x164 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x164 +layer at (8,377) size 384x328 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x328 + LayoutBlockFlow {DIV} at (0,0) size 384x164 + LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 38: "First " + text run at (45,1) width 61 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (105,1) width 21: "03" + text run at (125,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (170,1) width 36: " fifth" + LayoutBlockFlow {DIV} at (0,23) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 32: "First " + text run at (32,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (80,1) width 17: "03" + text run at (96,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (132,1) width 32: " fifth" + LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 31: "fifth" + text run at (38,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (103,1) width 21: "03" + text run at (123,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (172,1) width 34: "First" + LayoutBlockFlow {DIV} at (0,64) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 27: "fifth" + text run at (27,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (78,1) width 17: "03" + text run at (94,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (135,1) width 29: "First" + LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,105) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (8,1) size 198x18 + text run at (8,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,146) size 352x18 + LayoutText {#text} at (1,1) size 163x16 + text run at (1,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,164) size 384x164 + LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 39: "First " + text run at (180,1) width 60 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (239,1) width 21: "03" + text run at (259,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (304,1) width 36: " fifth" + LayoutBlockFlow {DIV} at (0,23) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 33: "First " + text run at (220,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (267,1) width 18: "03" + text run at (284,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (320,1) width 31: " fifth" + LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 32: "fifth" + text run at (173,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (237,1) width 21: "03" + text run at (257,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (306,1) width 34: "First" + LayoutBlockFlow {DIV} at (0,64) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 28: "fifth" + text run at (215,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (266,1) width 17: "03" + text run at (282,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (323,1) width 28: "First" + LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,105) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)] + LayoutBlockFlow (anonymous) at (1,1) size 348x21 + LayoutText (anonymous) at (142,1) size 198x18 + text run at (142,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {DIV} at (0,146) size 352x18 + LayoutText {#text} at (188,1) size 163x16 + text run at (188,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt new file mode 100644 index 0000000..e91f5d3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt
@@ -0,0 +1,56 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 285x18 + text run at (0,0) width 285: "This tests GraphicsContext::drawBidiText()." +layer at (8,42) size 345x227 clip at (9,43) size 332x225 + LayoutListBox {SELECT} at (0,34) size 345.22x227 [bgcolor=#FFFFFF] [border: (1px solid #999999)] + LayoutBlockFlow {OPTION} at (1,1) size 332.22x22.59 + LayoutText {#text} at (2,0) size 223x21 + text run at (2,0) width 43: "First " + text run at (44,0) width 68 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}" + text run at (111,0) width 24: "03" + text run at (134,0) width 51 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (184,0) width 41: " fifth" + LayoutBlockFlow {OPTION} at (1,23.59) size 332.22x22.59 + LayoutText {#text} at (108,0) size 223x21 + text run at (108,0) width 35: "fifth" + text run at (142,0) width 73 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} " + text run at (214,0) width 24: "03" + text run at (237,0) width 56 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} (" + text run at (292,0) width 39: "First" + LayoutBlockFlow {OPTION} at (1,46.19) size 332.22x22.59 + LayoutText {#text} at (2,0) size 223x21 + text run at (2,0) width 223 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {OPTION} at (1,68.78) size 332.22x22.59 + LayoutText {#text} at (107,0) size 224x21 + text run at (107,0) width 224 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth" + LayoutBlockFlow {OPTION} at (1,91.38) size 332.22x22.59 + LayoutText {#text} at (2,0) size 112x21 + text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}" + LayoutBlockFlow {OPTION} at (1,113.97) size 332.22x25 + LayoutText {#text} at (2,0) size 74x21 + text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}" + LayoutBlockFlow {OPTION} at (1,138.97) size 332.22x22.59 + LayoutText {#text} at (2,0) size 130x21 + text run at (2,0) width 130: "Et volia\x{300}: ATSUI!" + LayoutBlockFlow {OPTION} at (1,161.56) size 332.22x22.59 + LayoutText {#text} at (2,0) size 302x21 + text run at (2,0) width 97: "Directional " + text run at (98,0) width 80 RTL override: "\x{202E}overrides" + text run at (177,0) width 127: "\x{202C} are confusing." + LayoutBlockFlow {OPTION} at (1,184.16) size 332.22x22.59 + LayoutText {#text} at (2,0) size 329x21 + text run at (2,0) width 87: "She said \x{201C}" + text run at (88,0) width 76 RTL: " \x{5D1}\x{5DE}\x{5D6}\x{5D5}\x{5D5}\x{5D3}\x{5D4}!" + text run at (163,0) width 37: "TNT" + text run at (199,0) width 25 RTL: "\x{202B}\x{5D9}\x{5E9} " + text run at (223,0) width 108: "\x{202C}\x{201D} and ran off" +layer at (8,269) size 377x18 clip at (9,270) size 364x16 + LayoutListBox {SELECT} at (0,261) size 377.11x18 [bgcolor=#FFFFFF] [border: (1px solid #999999)] + LayoutBlockFlow {OPTION} at (1,1) size 364.11x16 + LayoutText {#text} at (2,0) size 361x15 + text run at (2,0) width 361: "There are two ways to measure text: my way and the wrong way"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt new file mode 100644 index 0000000..c437d88a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
@@ -0,0 +1,2910 @@ +layer at (0,0) size 800x600 scrollX 3551.00 scrollWidth 4351 + LayoutView at (0,0) size 800x600 +layer at (-3551,0) size 4351x600 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 4351.34x600 + LayoutBlockFlow {BODY} at (60,48) size 4231.34x504 + LayoutBlockFlow {H1} at (0,0) size 48x504 + LayoutText {#text} at (5,0) size 37x64 + text run at (5,0) width 64: "\x{8349}\x{6795}" + LayoutBlockFlow {H2} at (69.44,0) size 36x504 + LayoutText {#text} at (4,0) size 28x96 + text run at (4,0) width 96: "\x{590F}\x{76EE}\x{6F31}\x{77F3}" + LayoutBlockFlow {DIV} at (125.34,0) size 4106x504 + LayoutBlockFlow (anonymous) at (0,0) size 2286x504 + LayoutBR {BR} at (0,0) size 18x0 + LayoutBR {BR} at (18,0) size 18x0 + LayoutBR {BR} at (36,0) size 18x0 + LayoutText {#text} at (56,0) size 18x144 + text run at (56,0) width 144: "\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{4E00}" + LayoutBR {BR} at (56,143) size 18x1 + LayoutBR {BR} at (76,0) size 18x0 + LayoutText {#text} at (104,0) size 18x16 + text run at (104,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (102,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3084}\x{307E}\x{307F}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C71}\x{8DEF}" + LayoutText {#text} at (104,50) size 18x208 + text run at (104,50) width 208: "\x{3092}\x{767B}\x{308A}\x{306A}\x{304C}\x{3089}\x{3001}\x{3053}\x{3046}\x{8003}\x{3048}\x{305F}\x{3002}" + LayoutBR {BR} at (104,258) size 18x0 + LayoutText {#text} at (132,0) size 18x16 + text run at (132,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{667A}" + LayoutText {#text} at (132,32) size 18x64 + text run at (132,32) width 64: "\x{306B}\x{50CD}\x{3051}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{89D2}" + LayoutText {#text} at (132,112) size 18x64 + text run at (132,112) width 64: "\x{304C}\x{7ACB}\x{3064}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (130,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3058}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{60C5}" + LayoutText {#text} at (132,195) size 18x16 + text run at (132,195) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,210) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{68F9}" + LayoutText {#text} at (132,227) size 18x176 + text run at (132,227) width 176: "\x{3055}\x{305B}\x{3070}\x{6D41}\x{3055}\x{308C}\x{308B}\x{3002}\x{610F}\x{5730}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (130,402) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3068}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{901A}" + LayoutText {#text} at (132,419) size 18x32 + text run at (132,419) width 32: "\x{305B}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (130,448) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{304F}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{7AAE}\x{5C48}" + LayoutText {#text} at (154,0) size 18x256 + text run at (154,0) width 256: "\x{3060}\x{3002}\x{3068}\x{304B}\x{304F}\x{306B}\x{4EBA}\x{306E}\x{4E16}\x{306F}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3002}" + LayoutBR {BR} at (154,256) size 18x0 + LayoutText {#text} at (182,0) size 18x112 + text run at (182,0) width 112: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3055}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (180,110.98) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3053}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{9AD8}" + LayoutText {#text} at (182,127) size 46x496 + text run at (182,127) width 368: "\x{3058}\x{308B}\x{3068}\x{3001}\x{5B89}\x{3044}\x{6240}\x{3078}\x{5F15}\x{304D}\x{8D8A}\x{3057}\x{305F}\x{304F}\x{306A}\x{308B}\x{3002}\x{3069}\x{3053}\x{3078}\x{8D8A}\x{3057}\x{3066}" + text run at (210,0) width 112: "\x{3082}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (208,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{609F}" + LayoutText {#text} at (210,128) size 18x160 + text run at (210,128) width 160: "\x{3063}\x{305F}\x{6642}\x{3001}\x{8A69}\x{304C}\x{751F}\x{308C}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (208,288) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (210,304) size 18x80 + text run at (210,304) width 80: "\x{304C}\x{51FA}\x{6765}\x{308B}\x{3002}" + LayoutBR {BR} at (210,384) size 18x0 + LayoutText {#text} at (232,0) size 18x16 + text run at (232,0) width 16: "\x{3000}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (232,16) size 18x48 + text run at (232,16) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (232,64) size 18x432 + text run at (232,64) width 432: "\x{3092}\x{4F5C}\x{3063}\x{305F}\x{3082}\x{306E}\x{306F}\x{795E}\x{3067}\x{3082}\x{306A}\x{3051}\x{308C}\x{3070}\x{9B3C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{3084}\x{306F}\x{308A}\x{5411}\x{3046}\x{4E09}\x{8ED2}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (258,0) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3069}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E21}\x{96A3}" + LayoutText {#text} at (260,42) size 18x384 + text run at (260,42) width 384: "\x{308A}\x{306B}\x{3061}\x{3089}\x{3061}\x{3089}\x{3059}\x{308B}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{304C}\x{4F5C}\x{3063}\x{305F}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (260,426) size 18x48 + text run at (260,426) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (260,474) size 40x490 + text run at (260,474) width 16: "\x{304C}" + text run at (282,0) width 352: "\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{304B}\x{3089}\x{3068}\x{3066}\x{3001}\x{8D8A}\x{3059}\x{56FD}\x{306F}\x{3042}\x{308B}\x{307E}\x{3044}\x{3002}\x{3042}\x{308C}\x{3070}" + LayoutInline {STRONG} at (0,0) size 18x64 + LayoutText {#text} at (282,352) size 18x64 + text run at (282,352) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}" + LayoutText {#text} at (282,416) size 40x496 + text run at (282,416) width 80: "\x{306E}\x{56FD}\x{3078}\x{884C}\x{304F}" + text run at (304,0) width 80: "\x{3070}\x{304B}\x{308A}\x{3060}\x{3002}" + LayoutInline {STRONG} at (0,0) size 18x64 + LayoutText {#text} at (304,80) size 18x64 + text run at (304,80) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}" + LayoutText {#text} at (304,144) size 18x48 + text run at (304,144) width 48: "\x{306E}\x{56FD}\x{306F}" + LayoutInline {STRONG} at (0,0) size 18x48 + LayoutText {#text} at (304,192) size 18x48 + text run at (304,192) width 48: "\x{4EBA}\x{306E}\x{4E16}" + LayoutText {#text} at (304,240) size 18x208 + text run at (304,240) width 208: "\x{3088}\x{308A}\x{3082}\x{306A}\x{304A}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304B}\x{308D}\x{3046}\x{3002}" + LayoutBR {BR} at (304,448) size 18x0 + LayoutText {#text} at (326,0) size 18x496 + text run at (326,0) width 496: "\x{3000}\x{8D8A}\x{3059}\x{4E8B}\x{306E}\x{306A}\x{3089}\x{306C}\x{4E16}\x{304C}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3051}\x{308C}\x{3070}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{6240}\x{3092}\x{3069}\x{308C}\x{307B}\x{3069}\x{304B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (352,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304F}\x{3064}\x{308D}\x{3052}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5BDB}\x{5BB9}" + LayoutText {#text} at (354,35) size 18x32 + text run at (354,35) width 32: "\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (352,66) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3064}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{675F}" + LayoutText {#text} at (354,83) size 18x16 + text run at (354,83) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (352,99) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9593}" + LayoutText {#text} at (354,115) size 46x499 + text run at (354,115) width 384: "\x{306E}\x{547D}\x{3092}\x{3001}\x{675F}\x{306E}\x{9593}\x{3067}\x{3082}\x{4F4F}\x{307F}\x{3088}\x{304F}\x{305B}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{3053}\x{3053}\x{306B}\x{8A69}" + text run at (382,0) width 352: "\x{4EBA}\x{3068}\x{3044}\x{3046}\x{5929}\x{8077}\x{304C}\x{51FA}\x{6765}\x{3066}\x{3001}\x{3053}\x{3053}\x{306B}\x{753B}\x{5BB6}\x{3068}\x{3044}\x{3046}\x{4F7F}\x{547D}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (380,351) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{964D}" + LayoutText {#text} at (382,368) size 46x496 + text run at (382,368) width 128: "\x{308B}\x{3002}\x{3042}\x{3089}\x{3086}\x{308B}\x{82B8}\x{8853}" + text run at (410,0) width 112: "\x{306E}\x{58EB}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (408,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306E}\x{3069}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9577}\x{9591}" + LayoutText {#text} at (410,144) size 18x208 + text run at (410,144) width 208: "\x{306B}\x{3057}\x{3001}\x{4EBA}\x{306E}\x{5FC3}\x{3092}\x{8C4A}\x{304B}\x{306B}\x{3059}\x{308B}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (408,351) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3086}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6545}" + LayoutText {#text} at (410,368) size 18x16 + text run at (410,368) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (408,383) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3063}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5C0A}" + LayoutText {#text} at (410,400) size 18x48 + text run at (410,400) width 48: "\x{3068}\x{3044}\x{3002}" + LayoutBR {BR} at (410,448) size 18x0 + LayoutText {#text} at (438,0) size 18x240 + text run at (438,0) width 240: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}\x{4E16}\x{304B}\x{3089}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (436,235.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{308F}\x{305A}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{7169}" + LayoutText {#text} at (438,258) size 46x499 + text run at (438,258) width 240: "\x{3044}\x{3092}\x{5F15}\x{304D}\x{629C}\x{3044}\x{3066}\x{3001}\x{3042}\x{308A}\x{304C}\x{305F}\x{3044}\x{4E16}\x{754C}" + text run at (466,0) width 256: "\x{3092}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{5199}\x{3059}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (464,256) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (466,272) size 46x496 + text run at (466,272) width 224: "\x{3067}\x{3042}\x{308B}\x{3002}\x{3042}\x{308B}\x{306F}\x{97F3}\x{697D}\x{3068}\x{5F6B}\x{523B}\x{3067}\x{3042}" + text run at (494,0) width 96: "\x{308B}\x{3002}\x{3053}\x{307E}\x{304B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (492,96) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{4E91}" + LayoutText {#text} at (494,112) size 46x496 + text run at (494,112) width 384: "\x{3048}\x{3070}\x{5199}\x{3055}\x{306A}\x{3044}\x{3067}\x{3082}\x{3088}\x{3044}\x{3002}\x{305F}\x{3060}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{898B}\x{308C}\x{3070}\x{3001}\x{305D}" + text run at (522,0) width 144: "\x{3053}\x{306B}\x{8A69}\x{3082}\x{751F}\x{304D}\x{3001}\x{6B4C}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (520,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6E67}" + LayoutText {#text} at (522,160) size 18x192 + text run at (522,160) width 192: "\x{304F}\x{3002}\x{7740}\x{60F3}\x{3092}\x{7D19}\x{306B}\x{843D}\x{3055}\x{306C}\x{3068}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (520,349) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{305D}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x23 + text run at (2,3) width 22: "\x{7486}" + LayoutText {#text} at (2,25) size 18x17 + text run at (2,25) width 16: "\x{93D8}" + LayoutText {#text} at (522,391) size 18x16 + text run at (522,391) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (520,406) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{97F3}" + LayoutText {#text} at (522,423) size 18x16 + text run at (522,423) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (520,438) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304D}\x{3087}\x{3046}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{80F8}\x{88CF}" + LayoutText {#text} at (522,473) size 18x16 + text run at (522,473) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (548,0) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3053}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8D77}" + LayoutText {#text} at (550,17) size 18x32 + text run at (550,17) width 32: "\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,48) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305F}\x{3093}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E39}\x{9752}" + LayoutText {#text} at (550,83) size 18x16 + text run at (550,83) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,99) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{304C}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{753B}\x{67B6}" + LayoutText {#text} at (550,131) size 18x64 + text run at (550,131) width 64: "\x{306B}\x{5411}\x{3063}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,195) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{307E}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5857}\x{62B9}" + LayoutText {#text} at (550,227) size 18x64 + text run at (550,227) width 64: "\x{305B}\x{3093}\x{3067}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (548,291) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3054}\x{3055}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4E94}\x{5F69}" + LayoutText {#text} at (550,323) size 18x16 + text run at (550,323) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,338) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3093}\x{3089}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7D62}\x{721B}" + LayoutText {#text} at (550,373) size 18x16 + text run at (550,373) width 16: "\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (548,385) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304A}\x{306E}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{81EA}" + LayoutText {#text} at (550,408) size 18x32 + text run at (550,408) width 32: "\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (548,439) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{3093}\x{304C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5FC3}\x{773C}" + LayoutText {#text} at (550,474) size 46x490 + text run at (550,474) width 16: "\x{306B}" + text run at (578,0) width 240: "\x{6620}\x{308B}\x{3002}\x{305F}\x{3060}\x{304A}\x{306E}\x{304C}\x{4F4F}\x{3080}\x{4E16}\x{3092}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (576,239) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{89B3}" + LayoutText {#text} at (578,256) size 18x64 + text run at (578,256) width 64: "\x{3058}\x{5F97}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x70 + LayoutRubyRun (anonymous) at (576,319) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{308C}\x{3044}\x{3060}\x{3044}\x{307B}\x{3046}\x{3059}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{970A}\x{53F0}\x{65B9}\x{5BF8}" + LayoutText {#text} at (578,390) size 18x80 + text run at (578,390) width 80: "\x{306E}\x{30AB}\x{30E1}\x{30E9}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x71 + LayoutRubyRun (anonymous) at (604,0) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{304E}\x{3087}\x{3046}\x{304D}\x{3053}\x{3093}\x{3060}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{6F86}\x{5B63}\x{6EB7}\x{6FC1}" + LayoutText {#text} at (606,71) size 18x208 + text run at (606,71) width 208: "\x{306E}\x{4FD7}\x{754C}\x{3092}\x{6E05}\x{304F}\x{3046}\x{3089}\x{3089}\x{304B}\x{306B}\x{53CE}\x{3081}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (604,279) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5F97}" + LayoutText {#text} at (606,295) size 18x32 + text run at (606,295) width 32: "\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (604,327) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (606,343) size 18x96 + text run at (606,343) width 96: "\x{308B}\x{3002}\x{3053}\x{306E}\x{6545}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (604,439) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3080}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7121}\x{58F0}" + LayoutText {#text} at (606,471) size 46x503 + text run at (606,471) width 32: "\x{306E}\x{8A69}" + text run at (634,0) width 128: "\x{4EBA}\x{306B}\x{306F}\x{4E00}\x{53E5}\x{306A}\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3080}\x{3057}\x{3087}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7121}\x{8272}" + LayoutText {#text} at (634,162) size 18x80 + text run at (634,162) width 80: "\x{306E}\x{753B}\x{5BB6}\x{306B}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,241) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305B}\x{3063}\x{3051}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C3A}\x{7E11}" + LayoutText {#text} at (634,276) size 18x96 + text run at (634,276) width 96: "\x{306A}\x{304D}\x{3082}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (632,371) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3093}\x{305B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4EBA}\x{4E16}" + LayoutText {#text} at (634,406) size 46x502 + text run at (634,406) width 96: "\x{3092}\x{89B3}\x{3058}\x{5F97}\x{308B}\x{306E}" + text run at (662,0) width 128: "\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (660,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307C}\x{3093}\x{306E}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7169}\x{60A9}" + LayoutText {#text} at (662,162) size 18x16 + text run at (662,162) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (660,178) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (662,210) size 18x176 + text run at (662,210) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (660,382) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3057}\x{3087}\x{3046}\x{3058}\x{3087}\x{3046}\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,4) size 18x64 + text run at (2,4) width 64: "\x{6E05}\x{6D44}\x{754C}" + LayoutText {#text} at (662,450) size 18x16 + text run at (662,450) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x50 + LayoutRubyRun (anonymous) at (688,0) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3057}\x{3085}\x{3064}\x{306B}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x44 + LayoutText {#text} at (2,5) size 18x44 + text run at (2,5) width 43: "\x{51FA}\x{5165}" + LayoutText {#text} at (690,50) size 18x224 + text run at (690,50) width 224: "\x{3057}\x{5F97}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{307E}\x{305F}\x{3053}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (688,274) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,1) size 10x61 + text run at (2,1) width 60: "\x{3075}\x{3069}\x{3046}\x{3075}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{4E0D}\x{540C}\x{4E0D}\x{4E8C}" + LayoutText {#text} at (690,338) size 18x16 + text run at (690,338) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (688,353) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3093}\x{3053}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E7E}\x{5764}" + LayoutText {#text} at (690,388) size 18x16 + text run at (690,388) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (688,401) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{5EFA}\x{7ACB}" + LayoutText {#text} at (690,443) size 46x491 + text run at (690,443) width 48: "\x{3057}\x{5F97}\x{308B}" + text run at (718,0) width 112: "\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (716,112) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,1) size 10x61 + text run at (2,1) width 60: "\x{304C}\x{308A}\x{3057}\x{3088}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{6211}\x{5229}\x{79C1}\x{617E}" + LayoutText {#text} at (718,176) size 18x16 + text run at (718,176) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (716,192) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304D}\x{306F}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898A}\x{7D46}" + LayoutText {#text} at (718,224) size 18x16 + text run at (718,224) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (716,239) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305D}\x{3046}\x{3068}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6383}\x{8569}" + LayoutText {#text} at (718,274) size 18x176 + text run at (718,274) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{2015}\x{2015}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (716,449) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305B}\x{3093}\x{304D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5343}\x{91D1}" + LayoutText {#text} at (718,484) size 46x500 + text run at (718,484) width 16: "\x{306E}" + text run at (746,0) width 80: "\x{5B50}\x{3088}\x{308A}\x{3082}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (744,77) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3070}\x{3093}\x{3058}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E07}\x{4E57}" + LayoutText {#text} at (746,119) size 18x208 + text run at (746,119) width 208: "\x{306E}\x{541B}\x{3088}\x{308A}\x{3082}\x{3001}\x{3042}\x{3089}\x{3086}\x{308B}\x{4FD7}\x{754C}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (744,326) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3061}\x{3087}\x{3046}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5BF5}\x{5150}" + LayoutText {#text} at (746,361) size 40x473 + text run at (746,361) width 112: "\x{3088}\x{308A}\x{3082}\x{5E78}\x{798F}\x{3067}\x{3042}" + text run at (768,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (768,32) size 18x0 + LayoutText {#text} at (796,0) size 18x272 + text run at (796,0) width 272: "\x{3000}\x{4E16}\x{306B}\x{4F4F}\x{3080}\x{3053}\x{3068}\x{4E8C}\x{5341}\x{5E74}\x{306B}\x{3057}\x{3066}\x{3001}\x{4F4F}\x{3080}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (794,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7532}\x{6590}" + LayoutText {#text} at (796,304) size 46x496 + text run at (796,304) width 192: "\x{3042}\x{308B}\x{4E16}\x{3068}\x{77E5}\x{3063}\x{305F}\x{3002}\x{4E8C}\x{5341}\x{4E94}\x{5E74}" + text run at (824,0) width 96: "\x{306B}\x{3057}\x{3066}\x{660E}\x{6697}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (822,95) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3072}\x{3087}\x{3046}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{8868}\x{88CF}" + LayoutText {#text} at (824,130) size 46x498 + text run at (824,130) width 368: "\x{306E}\x{3054}\x{3068}\x{304F}\x{3001}\x{65E5}\x{306E}\x{3042}\x{305F}\x{308B}\x{6240}\x{306B}\x{306F}\x{304D}\x{3063}\x{3068}\x{5F71}\x{304C}\x{3055}\x{3059}\x{3068}\x{609F}\x{3063}" + text run at (852,0) width 80: "\x{305F}\x{3002}\x{4E09}\x{5341}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (850,79) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3053}\x{3093}\x{306B}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4ECA}\x{65E5}" + LayoutText {#text} at (852,114) size 18x288 + text run at (852,114) width 288: "\x{306F}\x{3053}\x{3046}\x{601D}\x{3046}\x{3066}\x{3044}\x{308B}\x{3002}\x{2015}\x{2015}\x{559C}\x{3073}\x{306E}\x{6DF1}\x{304D}\x{3068}\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (850,398) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6182}" + LayoutText {#text} at (852,421) size 46x501 + text run at (852,421) width 80: "\x{3044}\x{3088}\x{3044}\x{3088}\x{6DF1}" + text run at (880,0) width 32: "\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (878,28) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{306E}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{697D}" + LayoutText {#text} at (880,51) size 46x499 + text run at (880,51) width 448: "\x{307F}\x{306E}\x{5927}\x{3044}\x{306A}\x{308B}\x{307B}\x{3069}\x{82E6}\x{3057}\x{307F}\x{3082}\x{5927}\x{304D}\x{3044}\x{3002}\x{3053}\x{308C}\x{3092}\x{5207}\x{308A}\x{653E}\x{305D}\x{3046}\x{3068}\x{3059}\x{308B}\x{3068}" + text run at (908,0) width 96: "\x{8EAB}\x{304C}\x{6301}\x{3066}\x{306C}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (906,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7247}" + LayoutText {#text} at (908,112) size 46x496 + text run at (908,112) width 384: "\x{3065}\x{3051}\x{3088}\x{3046}\x{3068}\x{3059}\x{308C}\x{3070}\x{4E16}\x{304C}\x{7ACB}\x{305F}\x{306C}\x{3002}\x{91D1}\x{306F}\x{5927}\x{4E8B}\x{3060}\x{3001}\x{5927}\x{4E8B}\x{306A}\x{3082}" + text run at (936,0) width 32: "\x{306E}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,32) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3075}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6B96}" + LayoutText {#text} at (936,48) size 18x48 + text run at (936,48) width 48: "\x{3048}\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,96) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5BDD}" + LayoutText {#text} at (936,112) size 18x16 + text run at (936,112) width 16: "\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (934,128) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9593}" + LayoutText {#text} at (936,144) size 46x496 + text run at (936,144) width 352: "\x{3082}\x{5FC3}\x{914D}\x{3060}\x{308D}\x{3046}\x{3002}\x{604B}\x{306F}\x{3046}\x{308C}\x{3057}\x{3044}\x{3001}\x{5B09}\x{3057}\x{3044}\x{604B}\x{304C}\x{7A4D}\x{3082}\x{308C}" + text run at (964,0) width 464: "\x{3070}\x{3001}\x{604B}\x{3092}\x{305B}\x{306C}\x{6614}\x{304C}\x{304B}\x{3048}\x{3063}\x{3066}\x{604B}\x{3057}\x{304B}\x{308D}\x{3002}\x{95A3}\x{50DA}\x{306E}\x{80A9}\x{306F}\x{6570}\x{767E}\x{4E07}\x{4EBA}\x{306E}\x{8DB3}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (962,463) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3055}\x{3055}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{652F}" + LayoutText {#text} at (964,480) size 46x496 + text run at (964,480) width 16: "\x{3048}" + text run at (992,0) width 64: "\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (990,64) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305B}\x{306A}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{80CC}\x{4E2D}" + LayoutText {#text} at (992,96) size 46x496 + text run at (992,96) width 400: "\x{306B}\x{306F}\x{91CD}\x{3044}\x{5929}\x{4E0B}\x{304C}\x{304A}\x{3076}\x{3055}\x{3063}\x{3066}\x{3044}\x{308B}\x{3002}\x{3046}\x{307E}\x{3044}\x{7269}\x{3082}\x{98DF}\x{308F}\x{306D}\x{3070}\x{60DC}" + text run at (1020,0) width 128: "\x{3057}\x{3044}\x{3002}\x{5C11}\x{3057}\x{98DF}\x{3048}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1018,128) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{98FD}" + LayoutText {#text} at (1020,144) size 18x16 + text run at (1020,144) width 16: "\x{304D}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1018,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (1020,176) size 18x288 + text run at (1020,176) width 288: "\x{3089}\x{306C}\x{3002}\x{5B58}\x{5206}\x{98DF}\x{3048}\x{3070}\x{3042}\x{3068}\x{304C}\x{4E0D}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{2026}\x{2026}" + LayoutBR {BR} at (1020,464) size 18x0 + LayoutText {#text} at (1048,0) size 18x16 + text run at (1048,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1046,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{4F59}" + LayoutText {#text} at (1048,32) size 18x16 + text run at (1048,32) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (1046,44) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{3093}\x{304C}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{8003}" + LayoutText {#text} at (1048,76) size 18x256 + text run at (1048,76) width 256: "\x{304C}\x{3053}\x{3053}\x{307E}\x{3067}\x{6F02}\x{6D41}\x{3057}\x{3066}\x{6765}\x{305F}\x{6642}\x{306B}\x{3001}\x{4F59}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1046,332) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3046}\x{305D}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{53F3}\x{8DB3}" + LayoutText {#text} at (1048,364) size 18x48 + text run at (1048,364) width 48: "\x{306F}\x{7A81}\x{7136}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1046,411) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3059}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5750}" + LayoutText {#text} at (1048,428) size 46x492 + text run at (1048,428) width 64: "\x{308A}\x{306E}\x{308F}\x{308B}" + text run at (1076,0) width 16: "\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1074,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{304F}\x{3044}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{89D2}\x{77F3}" + LayoutText {#text} at (1076,50) size 18x16 + text run at (1076,50) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1074,65) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306F}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7AEF}" + LayoutText {#text} at (1076,82) size 18x48 + text run at (1076,82) width 48: "\x{3092}\x{8E0F}\x{307F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1074,130) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{640D}" + LayoutText {#text} at (1076,146) size 18x80 + text run at (1076,146) width 80: "\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1074,225) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3078}\x{3044}\x{3053}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5E73}\x{8861}" + LayoutText {#text} at (1076,260) size 46x500 + text run at (1076,260) width 240: "\x{3092}\x{4FDD}\x{3064}\x{305F}\x{3081}\x{306B}\x{3001}\x{3059}\x{308F}\x{3084}\x{3068}\x{524D}\x{306B}\x{98DB}\x{3073}" + text run at (1104,0) width 48: "\x{51FA}\x{3057}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1102,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3055}\x{305D}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5DE6}\x{8DB3}" + LayoutText {#text} at (1104,80) size 18x32 + text run at (1104,80) width 32: "\x{304C}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1102,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{305D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4ED5}\x{640D}" + LayoutText {#text} at (1104,144) size 18x32 + text run at (1104,144) width 32: "\x{3058}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1102,176) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{57CB}" + LayoutText {#text} at (1104,192) size 18x16 + text run at (1104,192) width 16: "\x{3081}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1102,207) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3042}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5408}" + LayoutText {#text} at (1104,224) size 18x256 + text run at (1104,224) width 256: "\x{305B}\x{3092}\x{3059}\x{308B}\x{3068}\x{5171}\x{306B}\x{3001}\x{4F59}\x{306E}\x{8170}\x{306F}\x{5177}\x{5408}\x{3088}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1102,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307B}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65B9}" + LayoutText {#text} at (1132,0) size 18x144 + text run at (1132,0) width 144: "\x{4E09}\x{5C3A}\x{307B}\x{3069}\x{306A}\x{5CA9}\x{306E}\x{4E0A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5378}" + LayoutText {#text} at (1132,160) size 18x208 + text run at (1132,160) width 208: "\x{308A}\x{305F}\x{3002}\x{80A9}\x{306B}\x{304B}\x{3051}\x{305F}\x{7D75}\x{306E}\x{5177}\x{7BB1}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{814B}" + LayoutText {#text} at (1132,384) size 18x64 + text run at (1132,384) width 64: "\x{306E}\x{4E0B}\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1130,447) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8E8D}" + LayoutText {#text} at (1132,464) size 46x496 + text run at (1132,464) width 32: "\x{308A}\x{51FA}" + text run at (1160,0) width 144: "\x{3057}\x{305F}\x{3060}\x{3051}\x{3067}\x{3001}\x{5E78}\x{3044}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1158,143) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4F55}" + LayoutText {#text} at (1160,160) size 18x128 + text run at (1160,160) width 128: "\x{306E}\x{4E8B}\x{3082}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}" + LayoutBR {BR} at (1160,288) size 18x0 + LayoutText {#text} at (1188,0) size 18x240 + text run at (1188,0) width 240: "\x{3000}\x{7ACB}\x{3061}\x{4E0A}\x{304C}\x{308B}\x{6642}\x{306B}\x{5411}\x{3046}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1186,238.98) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307F}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8DEF}" + LayoutText {#text} at (1188,255) size 46x496 + text run at (1188,255) width 240: "\x{304B}\x{3089}\x{5DE6}\x{306E}\x{65B9}\x{306B}\x{30D0}\x{30B1}\x{30C4}\x{3092}\x{4F0F}\x{305B}\x{305F}\x{3088}\x{3046}" + text run at (1216,0) width 48: "\x{306A}\x{5CF0}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1214,47) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305D}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8073}" + LayoutText {#text} at (1216,64) size 18x112 + text run at (1216,64) width 112: "\x{3048}\x{3066}\x{3044}\x{308B}\x{3002}\x{6749}\x{304B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1214,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3072}\x{306E}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6A9C}" + LayoutText {#text} at (1216,195) size 18x112 + text run at (1216,195) width 112: "\x{304B}\x{5206}\x{304B}\x{3089}\x{306A}\x{3044}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1214,307) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306D}\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6839}\x{5143}" + LayoutText {#text} at (1216,339) size 18x32 + text run at (1216,339) width 32: "\x{304B}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1214,367) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3044}\x{305F}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{9802}" + LayoutText {#text} at (1216,390) size 46x502 + text run at (1216,390) width 112: "\x{304D}\x{307E}\x{3067}\x{3053}\x{3068}\x{3054}\x{3068}" + text run at (1244,0) width 16: "\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1242,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3042}\x{304A}\x{3050}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{84BC}\x{9ED2}" + LayoutText {#text} at (1244,50) size 18x240 + text run at (1244,50) width 240: "\x{3044}\x{4E2D}\x{306B}\x{3001}\x{5C71}\x{685C}\x{304C}\x{8584}\x{8D64}\x{304F}\x{3060}\x{3093}\x{3060}\x{3089}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1242,290) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305F}\x{306A}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{68DA}\x{5F15}" + LayoutText {#text} at (1244,322) size 18x48 + text run at (1244,322) width 48: "\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,370) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{7D9A}" + LayoutText {#text} at (1244,386) size 18x16 + text run at (1244,386) width 16: "\x{304E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,402) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3081}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{76EE}" + LayoutText {#text} at (1244,418) size 18x16 + text run at (1244,418) width 16: "\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1242,433) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3057}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{78BA}" + LayoutText {#text} at (1244,450) size 46x498 + text run at (1244,450) width 48: "\x{3068}\x{898B}\x{3048}" + text run at (1272,0) width 64: "\x{306C}\x{304F}\x{3089}\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,63) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3082}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{9744}" + LayoutText {#text} at (1272,80) size 18x144 + text run at (1272,80) width 144: "\x{304C}\x{6FC3}\x{3044}\x{3002}\x{5C11}\x{3057}\x{624B}\x{524D}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1270,223) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3052}\x{3084}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{79BF}\x{5C71}" + LayoutText {#text} at (1272,258) size 18x64 + text run at (1272,258) width 64: "\x{304C}\x{4E00}\x{3064}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,321) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3050}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7FA4}" + LayoutText {#text} at (1272,338) size 18x96 + text run at (1272,338) width 96: "\x{3092}\x{306C}\x{304D}\x{3093}\x{3067}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1270,433) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{3086}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7709}" + LayoutText {#text} at (1272,450) size 18x16 + text run at (1272,450) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1270,465) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305B}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{903C}" + LayoutText {#text} at (1300,0) size 18x32 + text run at (1300,0) width 32: "\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,32) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{79BF}" + LayoutText {#text} at (1300,48) size 18x128 + text run at (1300,48) width 128: "\x{3052}\x{305F}\x{5074}\x{9762}\x{306F}\x{5DE8}\x{4EBA}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,175) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{306E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65A7}" + LayoutText {#text} at (1300,192) size 18x16 + text run at (1300,192) width 16: "\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1298,207) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3051}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{524A}" + LayoutText {#text} at (1300,224) size 46x496 + text run at (1300,224) width 272: "\x{308A}\x{53BB}\x{3063}\x{305F}\x{304B}\x{3001}\x{92ED}\x{3069}\x{304D}\x{5E73}\x{9762}\x{3092}\x{3084}\x{3051}\x{306B}\x{8C37}\x{306E}" + text run at (1328,0) width 32: "\x{5E95}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1326,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{57CB}" + LayoutText {#text} at (1328,48) size 18x80 + text run at (1328,48) width 80: "\x{3081}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1326,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3066}\x{3063}\x{307A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5929}\x{8FBA}" + LayoutText {#text} at (1328,162) size 18x336 + text run at (1328,162) width 336: "\x{306B}\x{4E00}\x{672C}\x{898B}\x{3048}\x{308B}\x{306E}\x{306F}\x{8D64}\x{677E}\x{3060}\x{308D}\x{3046}\x{3002}\x{679D}\x{306E}\x{9593}\x{306E}\x{7A7A}\x{3055}\x{3048}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (1354,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3063}\x{304D}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5224}\x{7136}" + LayoutText {#text} at (1356,35) size 18x448 + text run at (1356,35) width 448: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{884C}\x{304F}\x{624B}\x{306F}\x{4E8C}\x{4E01}\x{307B}\x{3069}\x{3067}\x{5207}\x{308C}\x{3066}\x{3044}\x{308B}\x{304C}\x{3001}\x{9AD8}\x{3044}\x{6240}\x{304B}\x{3089}\x{8D64}\x{3044}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1382,0) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3051}\x{3063}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6BDB}\x{5E03}" + LayoutText {#text} at (1384,32) size 46x496 + text run at (1384,32) width 464: "\x{304C}\x{52D5}\x{3044}\x{3066}\x{6765}\x{308B}\x{306E}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}\x{767B}\x{308C}\x{3070}\x{3042}\x{3059}\x{3053}\x{3078}\x{51FA}\x{308B}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{8DEF}\x{306F}\x{3059}" + text run at (1412,0) width 48: "\x{3053}\x{3076}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1410,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306A}\x{3093}\x{304E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96E3}\x{7FA9}" + LayoutText {#text} at (1412,80) size 18x32 + text run at (1412,80) width 32: "\x{3060}\x{3002}" + LayoutBR {BR} at (1412,112) size 18x0 + LayoutText {#text} at (1440,0) size 18x208 + text run at (1440,0) width 208: "\x{3000}\x{571F}\x{3092}\x{306A}\x{3089}\x{3059}\x{3060}\x{3051}\x{306A}\x{3089}\x{3055}\x{307B}\x{3069}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1438,207.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{3066}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{624B}\x{9593}" + LayoutText {#text} at (1440,239) size 18x17 + text run at (1440,239) width 16: "\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1438,255.98) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5165}" + LayoutText {#text} at (1440,271) size 46x496 + text run at (1440,271) width 224: "\x{308B}\x{307E}\x{3044}\x{304C}\x{3001}\x{571F}\x{306E}\x{4E2D}\x{306B}\x{306F}\x{5927}\x{304D}\x{306A}\x{77F3}" + text run at (1468,0) width 96: "\x{304C}\x{3042}\x{308B}\x{3002}\x{571F}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1466,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E73}" + LayoutText {#text} at (1468,112) size 46x496 + text run at (1468,112) width 384: "\x{3089}\x{306B}\x{3057}\x{3066}\x{3082}\x{77F3}\x{306F}\x{5E73}\x{3089}\x{306B}\x{306A}\x{3089}\x{306C}\x{3002}\x{77F3}\x{306F}\x{5207}\x{308A}\x{7815}\x{3044}\x{3066}\x{3082}\x{3001}\x{5CA9}" + text run at (1496,0) width 128: "\x{306F}\x{59CB}\x{672B}\x{304C}\x{3064}\x{304B}\x{306C}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1494,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307B}\x{308A}\x{304F}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6398}\x{5D29}" + LayoutText {#text} at (1496,162) size 18x96 + text run at (1496,162) width 96: "\x{3057}\x{305F}\x{571F}\x{306E}\x{4E0A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1494,257) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3086}\x{3046}\x{305C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{60A0}\x{7136}" + LayoutText {#text} at (1496,292) size 18x16 + text run at (1496,292) width 16: "\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1494,304) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305D}\x{3070}\x{3060}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5CD9}" + LayoutText {#text} at (1496,327) size 46x503 + text run at (1496,327) width 176: "\x{3063}\x{3066}\x{3001}\x{543E}\x{3089}\x{306E}\x{305F}\x{3081}\x{306B}\x{9053}\x{3092}" + text run at (1524,0) width 32: "\x{8B72}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1522,32) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3051}\x{3057}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{666F}\x{8272}" + LayoutText {#text} at (1524,64) size 46x480 + text run at (1524,64) width 416: "\x{306F}\x{306A}\x{3044}\x{3002}\x{5411}\x{3046}\x{3067}\x{805E}\x{304B}\x{306C}\x{4E0A}\x{306F}\x{4E57}\x{308A}\x{8D8A}\x{3059}\x{304B}\x{3001}\x{5EFB}\x{3089}\x{306A}\x{3051}\x{308C}\x{3070}\x{306A}\x{3089}" + text run at (1552,0) width 32: "\x{3093}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1550,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3044}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5DCC}" + LayoutText {#text} at (1552,48) size 18x112 + text run at (1552,48) width 112: "\x{306E}\x{306A}\x{3044}\x{6240}\x{3067}\x{3055}\x{3048}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1550,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6B69}" + LayoutText {#text} at (1552,176) size 18x304 + text run at (1552,176) width 304: "\x{308B}\x{304D}\x{3088}\x{304F}\x{306F}\x{306A}\x{3044}\x{3002}\x{5DE6}\x{53F3}\x{304C}\x{9AD8}\x{304F}\x{3063}\x{3066}\x{3001}\x{4E2D}\x{5FC3}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1550,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{307C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7AAA}" + LayoutText {#text} at (1580,0) size 18x128 + text run at (1580,0) width 128: "\x{3093}\x{3067}\x{3001}\x{307E}\x{308B}\x{3067}\x{4E00}\x{9593}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1578,127) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306F}\x{3070}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E45}" + LayoutText {#text} at (1580,144) size 18x64 + text run at (1580,144) width 64: "\x{3092}\x{4E09}\x{89D2}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1578,208) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{7A7F}" + LayoutText {#text} at (1580,224) size 18x128 + text run at (1580,224) width 128: "\x{3063}\x{3066}\x{3001}\x{305D}\x{306E}\x{9802}\x{70B9}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1578,351) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307E}\x{3093}\x{306A}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{771F}\x{4E2D}" + LayoutText {#text} at (1580,386) size 18x16 + text run at (1580,386) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1578,398) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3064}\x{3089}\x{306C}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{8CAB}" + LayoutText {#text} at (1580,421) size 46x501 + text run at (1580,421) width 80: "\x{3044}\x{3066}\x{3044}\x{308B}\x{3068}" + text run at (1608,0) width 320: "\x{8A55}\x{3057}\x{3066}\x{3082}\x{3088}\x{3044}\x{3002}\x{8DEF}\x{3092}\x{884C}\x{304F}\x{3068}\x{4E91}\x{308F}\x{3093}\x{3088}\x{308A}\x{5DDD}\x{5E95}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1606,319) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6E09}" + LayoutText {#text} at (1608,336) size 18x160 + text run at (1608,336) width 160: "\x{308B}\x{3068}\x{4E91}\x{3046}\x{65B9}\x{304C}\x{9069}\x{5F53}\x{3060}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1634,0) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{56FA}" + LayoutText {#text} at (1636,17) size 18x256 + text run at (1636,17) width 256: "\x{3088}\x{308A}\x{6025}\x{3050}\x{65C5}\x{3067}\x{306A}\x{3044}\x{304B}\x{3089}\x{3001}\x{3076}\x{3089}\x{3076}\x{3089}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1634,272) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306A}\x{306A}\x{307E}\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E03}\x{66F2}" + LayoutText {#text} at (1636,307) size 18x96 + text run at (1636,307) width 96: "\x{308A}\x{3078}\x{304B}\x{304B}\x{308B}\x{3002}" + LayoutBR {BR} at (1636,403) size 18x0 + LayoutText {#text} at (1664,0) size 18x144 + text run at (1664,0) width 144: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{8DB3}\x{306E}\x{4E0B}\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1662,143.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1664,175) size 18x161 + text run at (1664,175) width 160: "\x{306E}\x{58F0}\x{304C}\x{3057}\x{51FA}\x{3057}\x{305F}\x{3002}\x{8C37}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1662,335.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898B}\x{4E0B}" + LayoutText {#text} at (1664,367) size 46x496 + text run at (1664,367) width 128: "\x{3057}\x{305F}\x{304C}\x{3001}\x{3069}\x{3053}\x{3067}\x{9CF4}" + text run at (1692,0) width 480: "\x{3044}\x{3066}\x{308B}\x{304B}\x{5F71}\x{3082}\x{5F62}\x{3082}\x{898B}\x{3048}\x{306C}\x{3002}\x{305F}\x{3060}\x{58F0}\x{3060}\x{3051}\x{304C}\x{660E}\x{3089}\x{304B}\x{306B}\x{805E}\x{3048}\x{308B}\x{3002}\x{305B}\x{3063}\x{305B}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1690,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305B}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5FD9}" + LayoutText {#text} at (1720,0) size 18x48 + text run at (1720,0) width 48: "\x{3057}\x{304F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1718,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{305F}\x{3048}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7D76}\x{9593}" + LayoutText {#text} at (1720,80) size 18x128 + text run at (1720,80) width 128: "\x{306A}\x{304F}\x{9CF4}\x{3044}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1718,208) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{307B}\x{3046}\x{3044}\x{304F}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{65B9}\x{5E7E}\x{91CC}" + LayoutText {#text} at (1720,256) size 18x112 + text run at (1720,256) width 112: "\x{306E}\x{7A7A}\x{6C17}\x{304C}\x{4E00}\x{9762}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1718,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{86A4}" + LayoutText {#text} at (1720,384) size 46x496 + text run at (1720,384) width 112: "\x{306B}\x{523A}\x{3055}\x{308C}\x{3066}\x{3044}\x{305F}" + text run at (1748,0) width 304: "\x{305F}\x{307E}\x{308C}\x{306A}\x{3044}\x{3088}\x{3046}\x{306A}\x{6C17}\x{304C}\x{3059}\x{308B}\x{3002}\x{3042}\x{306E}\x{9CE5}\x{306E}\x{9CF4}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1746,304) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{97F3}" + LayoutText {#text} at (1748,320) size 90x496 + text run at (1748,320) width 176: "\x{306B}\x{306F}\x{77AC}\x{6642}\x{306E}\x{4F59}\x{88D5}\x{3082}\x{306A}\x{3044}\x{3002}" + text run at (1770,0) width 496: "\x{306E}\x{3069}\x{304B}\x{306A}\x{6625}\x{306E}\x{65E5}\x{3092}\x{9CF4}\x{304D}\x{5C3D}\x{304F}\x{3057}\x{3001}\x{9CF4}\x{304D}\x{3042}\x{304B}\x{3057}\x{3001}\x{307E}\x{305F}\x{9CF4}\x{304D}\x{66AE}\x{3089}\x{3055}\x{306A}\x{3051}\x{308C}\x{3070}" + text run at (1792,0) width 496: "\x{6C17}\x{304C}\x{6E08}\x{307E}\x{3093}\x{3068}\x{898B}\x{3048}\x{308B}\x{3002}\x{305D}\x{306E}\x{4E0A}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}\x{3066}\x{884C}\x{304F}\x{3001}\x{3044}\x{3064}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}" + text run at (1820,0) width 432: "\x{3066}\x{884C}\x{304F}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{304D}\x{3063}\x{3068}\x{96F2}\x{306E}\x{4E2D}\x{3067}\x{6B7B}\x{306C}\x{306B}\x{76F8}\x{9055}\x{306A}\x{3044}\x{3002}\x{767B}\x{308A}\x{8A70}\x{3081}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1818,432) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3042}\x{3052}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{63DA}\x{53E5}" + LayoutText {#text} at (1820,464) size 46x496 + text run at (1820,464) width 32: "\x{306F}\x{3001}" + text run at (1848,0) width 80: "\x{6D41}\x{308C}\x{3066}\x{96F2}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1846,80) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{5165}" + LayoutText {#text} at (1848,96) size 18x48 + text run at (1848,96) width 48: "\x{3063}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1846,140) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{3060}\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6F02}" + LayoutText {#text} at (1848,163) size 46x499 + text run at (1848,163) width 336: "\x{3046}\x{3066}\x{3044}\x{308B}\x{3046}\x{3061}\x{306B}\x{5F62}\x{306F}\x{6D88}\x{3048}\x{3066}\x{306A}\x{304F}\x{306A}\x{3063}\x{3066}\x{3001}\x{305F}\x{3060}\x{58F0}" + text run at (1876,0) width 80: "\x{3060}\x{3051}\x{304C}\x{7A7A}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1874,79) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{88E1}" + LayoutText {#text} at (1876,96) size 18x176 + text run at (1876,96) width 176: "\x{306B}\x{6B8B}\x{308B}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{3002}" + LayoutBR {BR} at (1876,272) size 18x0 + LayoutText {#text} at (1904,0) size 18x16 + text run at (1904,0) width 16: "\x{3000}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1902,15) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3044}\x{308F}\x{304B}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5DCC}\x{89D2}" + LayoutText {#text} at (1904,50) size 18x128 + text run at (1904,50) width 128: "\x{3092}\x{92ED}\x{3069}\x{304F}\x{5EFB}\x{3063}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1902,178) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3042}\x{3093}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6309}\x{6469}" + LayoutText {#text} at (1904,210) size 18x32 + text run at (1904,210) width 32: "\x{306A}\x{3089}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x52 + LayoutRubyRun (anonymous) at (1902,241) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{307E}\x{3063}\x{3055}\x{304B}\x{3055}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{771F}\x{9006}\x{69D8}" + LayoutText {#text} at (1904,294) size 18x144 + text run at (1904,294) width 144: "\x{306B}\x{843D}\x{3064}\x{308B}\x{3068}\x{3053}\x{308D}\x{3092}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1902,437) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304D}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{969B}" + LayoutText {#text} at (1904,454) size 46x502 + text run at (1904,454) width 48: "\x{3069}\x{304F}\x{53F3}" + text run at (1932,0) width 112: "\x{3078}\x{5207}\x{308C}\x{3066}\x{3001}\x{6A2A}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1930,112) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{898B}\x{4E0B}" + LayoutText {#text} at (1932,144) size 18x48 + text run at (1932,144) width 48: "\x{3059}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1930,192) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{83DC}" + LayoutText {#text} at (1932,208) size 46x496 + text run at (1932,208) width 288: "\x{306E}\x{82B1}\x{304C}\x{4E00}\x{9762}\x{306B}\x{898B}\x{3048}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{3042}\x{3059}\x{3053}\x{3078}\x{843D}" + text run at (1960,0) width 240: "\x{3061}\x{308B}\x{306E}\x{304B}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{3044}\x{3044}\x{3084}\x{3001}\x{3042}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1958,240) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3053}\x{304C}\x{306D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9EC4}\x{91D1}" + LayoutText {#text} at (1960,272) size 46x496 + text run at (1960,272) width 224: "\x{306E}\x{539F}\x{304B}\x{3089}\x{98DB}\x{3073}\x{4E0A}\x{304C}\x{3063}\x{3066}\x{304F}\x{308B}\x{306E}\x{304B}" + text run at (1988,0) width 240: "\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{6B21}\x{306B}\x{306F}\x{843D}\x{3061}\x{308B}\x{96F2}\x{96C0}\x{3068}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1986,239) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3042}\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4E0A}" + LayoutText {#text} at (1988,256) size 18x16 + text run at (1988,256) width 16: "\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1986,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1988,304) size 46x496 + text run at (1988,304) width 192: "\x{304C}\x{5341}\x{6587}\x{5B57}\x{306B}\x{3059}\x{308C}\x{9055}\x{3046}\x{306E}\x{304B}\x{3068}" + text run at (2016,0) width 400: "\x{601D}\x{3063}\x{305F}\x{3002}\x{6700}\x{5F8C}\x{306B}\x{3001}\x{843D}\x{3061}\x{308B}\x{6642}\x{3082}\x{3001}\x{4E0A}\x{308B}\x{6642}\x{3082}\x{3001}\x{307E}\x{305F}\x{5341}\x{6587}\x{5B57}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (2014,400) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{64E6}" + LayoutText {#text} at (2016,416) size 40x496 + text run at (2016,416) width 80: "\x{308C}\x{9055}\x{3046}\x{3068}\x{304D}" + text run at (2038,0) width 320: "\x{306B}\x{3082}\x{5143}\x{6C17}\x{3088}\x{304F}\x{9CF4}\x{304D}\x{3064}\x{3065}\x{3051}\x{308B}\x{3060}\x{308D}\x{3046}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}" + LayoutBR {BR} at (2038,320) size 18x0 + LayoutText {#text} at (2066,0) size 18x192 + text run at (2066,0) width 192: "\x{3000}\x{6625}\x{306F}\x{7720}\x{304F}\x{306A}\x{308B}\x{3002}\x{732B}\x{306F}\x{9F20}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (2064,191.98) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6355}" + LayoutText {#text} at (2066,207) size 46x496 + text run at (2066,207) width 288: "\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}\x{3001}\x{4EBA}\x{9593}\x{306F}\x{501F}\x{91D1}\x{306E}\x{3042}\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}" + text run at (2094,0) width 128: "\x{308B}\x{3002}\x{6642}\x{306B}\x{306F}\x{81EA}\x{5206}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (2092,124) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{305F}\x{307E}\x{3057}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{9B42}" + LayoutText {#text} at (2094,156) size 18x16 + text run at (2094,156) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (2092,171) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3044}\x{3069}\x{3053}\x{308D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5C45}\x{6240}" + LayoutText {#text} at (2094,206) size 46x494 + text run at (2094,206) width 288: "\x{3055}\x{3048}\x{5FD8}\x{308C}\x{3066}\x{6B63}\x{4F53}\x{306A}\x{304F}\x{306A}\x{308B}\x{3002}\x{305F}\x{3060}\x{83DC}\x{306E}\x{82B1}\x{3092}" + text run at (2122,0) width 160: "\x{9060}\x{304F}\x{671B}\x{3093}\x{3060}\x{3068}\x{304D}\x{306B}\x{773C}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (2120,160) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3055}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{9192}" + LayoutText {#text} at (2122,176) size 18x320 + text run at (2122,176) width 320: "\x{3081}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{58F0}\x{3092}\x{805E}\x{3044}\x{305F}\x{3068}\x{304D}\x{306B}\x{9B42}\x{306E}\x{3042}\x{308A}\x{304B}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (2148,0) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306F}\x{3093}\x{305C}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5224}\x{7136}" + LayoutText {#text} at (2150,35) size 62x499 + text run at (2150,35) width 464: "\x{3059}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{9CF4}\x{304F}\x{306E}\x{306F}\x{53E3}\x{3067}\x{9CF4}\x{304F}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3001}\x{9B42}\x{5168}\x{4F53}\x{304C}\x{9CF4}\x{304F}\x{306E}\x{3060}\x{3002}" + text run at (2172,0) width 496: "\x{9B42}\x{306E}\x{6D3B}\x{52D5}\x{304C}\x{58F0}\x{306B}\x{3042}\x{3089}\x{308F}\x{308C}\x{305F}\x{3082}\x{306E}\x{306E}\x{3046}\x{3061}\x{3067}\x{3001}\x{3042}\x{308C}\x{307B}\x{3069}\x{5143}\x{6C17}\x{306E}\x{3042}\x{308B}\x{3082}\x{306E}\x{306F}" + text run at (2194,0) width 464: "\x{306A}\x{3044}\x{3002}\x{3042}\x{3042}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{3053}\x{3046}\x{601D}\x{3063}\x{3066}\x{3001}\x{3053}\x{3046}\x{6109}\x{5FEB}\x{306B}\x{306A}\x{308B}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (2194,464) size 18x0 + LayoutText {#text} at (2216,0) size 46x496 + text run at (2216,0) width 496: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{8A69}\x{3092}\x{601D}\x{3044}\x{51FA}\x{3057}\x{3066}\x{3001}\x{53E3}\x{306E}\x{3046}\x{3061}\x{3067}\x{899A}\x{3048}\x{305F}\x{3068}\x{3053}" + text run at (2244,0) width 48: "\x{308D}\x{3060}\x{3051}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (2242,45) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3042}\x{3093}\x{3057}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{6697}\x{8AA6}" + LayoutText {#text} at (2244,87) size 40x503 + text run at (2244,87) width 416: "\x{3057}\x{3066}\x{898B}\x{305F}\x{304C}\x{3001}\x{899A}\x{3048}\x{3066}\x{3044}\x{308B}\x{3068}\x{3053}\x{308D}\x{306F}\x{4E8C}\x{4E09}\x{53E5}\x{3057}\x{304B}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}\x{305D}" + text run at (2266,0) width 256: "\x{306E}\x{4E8C}\x{4E09}\x{53E5}\x{306E}\x{306A}\x{304B}\x{306B}\x{3053}\x{3093}\x{306A}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (2266,256) size 18x0 + LayoutBlockFlow {DIV} at (2286,32) size 106x472 + LayoutText {#text} at (2,0) size 18x191 + text run at (2,0) width 191: "\x{3000}\x{3000}We look before and after" + LayoutBR {BR} at (2,190) size 18x1 + LayoutText {#text} at (24,0) size 18x225 + text run at (24,0) width 225: "\x{3000}\x{3000}\x{3000}\x{3000}And pine for what is not:" + LayoutBR {BR} at (24,224) size 18x1 + LayoutText {#text} at (46,0) size 18x174 + text run at (46,0) width 174: "\x{3000}\x{3000}Our sincerest laughter" + LayoutBR {BR} at (46,173) size 18x1 + LayoutText {#text} at (68,0) size 18x234 + text run at (68,0) width 234: "\x{3000}\x{3000}\x{3000}\x{3000}With some pain is fraught;" + LayoutBR {BR} at (68,234) size 18x0 + LayoutText {#text} at (88,0) size 18x363 + text run at (88,0) width 363: "Our sweetest songs are those that tell of saddest thought." + LayoutBR {BR} at (88,362) size 18x1 + LayoutBlockFlow (anonymous) at (2392,0) size 1714x504 + LayoutText {#text} at (10,0) size 18x112 + text run at (10,0) width 112: "\x{300C}\x{524D}\x{3092}\x{307F}\x{3066}\x{306F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (8,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3057}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F8C}" + LayoutText {#text} at (10,128) size 18x96 + text run at (10,128) width 96: "\x{3048}\x{3092}\x{898B}\x{3066}\x{306F}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (8,224) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3082}\x{306E}\x{307B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{7269}\x{6B32}" + LayoutText {#text} at (10,256) size 46x496 + text run at (10,256) width 240: "\x{3057}\x{3068}\x{3001}\x{3042}\x{3053}\x{304C}\x{308B}\x{308B}\x{304B}\x{306A}\x{308F}\x{308C}\x{3002}\x{8179}\x{304B}" + text run at (38,0) width 448: "\x{3089}\x{306E}\x{3001}\x{7B11}\x{3068}\x{3044}\x{3048}\x{3069}\x{3001}\x{82E6}\x{3057}\x{307F}\x{306E}\x{3001}\x{305D}\x{3053}\x{306B}\x{3042}\x{308B}\x{3079}\x{3057}\x{3002}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (36,447) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304D}\x{308F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{6975}" + LayoutText {#text} at (38,464) size 46x496 + text run at (38,464) width 32: "\x{307F}\x{306E}" + text run at (66,0) width 176: "\x{6B4C}\x{306B}\x{3001}\x{60B2}\x{3057}\x{3055}\x{306E}\x{3001}\x{6975}\x{307F}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (64,172) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304A}\x{3082}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{60F3}" + LayoutText {#text} at (66,195) size 18x16 + text run at (66,195) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (64,210) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3053}\x{3082}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7C60}" + LayoutText {#text} at (66,227) size 18x96 + text run at (66,227) width 96: "\x{308B}\x{3068}\x{305E}\x{77E5}\x{308C}\x{300D}" + LayoutBR {BR} at (66,323) size 18x0 + LayoutText {#text} at (88,0) size 46x496 + text run at (88,0) width 496: "\x{3000}\x{306A}\x{308B}\x{307B}\x{3069}\x{3044}\x{304F}\x{3089}\x{8A69}\x{4EBA}\x{304C}\x{5E78}\x{798F}\x{3067}\x{3082}\x{3001}\x{3042}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{3088}\x{3046}\x{306B}\x{601D}\x{3044}\x{5207}\x{3063}\x{3066}\x{3001}\x{4E00}" + text run at (116,0) width 320: "\x{5FC3}\x{4E0D}\x{4E71}\x{306B}\x{3001}\x{524D}\x{5F8C}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3001}\x{308F}\x{304C}\x{559C}\x{3073}\x{3092}\x{6B4C}\x{3046}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (114,319) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{308F}\x{3051}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8A33}" + LayoutText {#text} at (116,336) size 46x496 + text run at (116,336) width 160: "\x{306B}\x{306F}\x{884C}\x{304F}\x{307E}\x{3044}\x{3002}\x{897F}\x{6D0B}\x{306E}" + text run at (144,0) width 256: "\x{8A69}\x{306F}\x{7121}\x{8AD6}\x{306E}\x{4E8B}\x{3001}\x{652F}\x{90A3}\x{306E}\x{8A69}\x{306B}\x{3082}\x{3001}\x{3088}\x{304F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (142,255) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3070}\x{3093}\x{3053}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E07}\x{659B}" + LayoutText {#text} at (144,290) size 18x16 + text run at (144,290) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (142,302) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6101}" + LayoutText {#text} at (144,325) size 46x501 + text run at (144,325) width 176: "\x{306A}\x{3069}\x{3068}\x{4E91}\x{3046}\x{5B57}\x{304C}\x{3042}\x{308B}\x{3002}\x{8A69}" + text run at (172,0) width 112: "\x{4EBA}\x{3060}\x{304B}\x{3089}\x{4E07}\x{659B}\x{3067}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (170,111) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{308D}\x{3046}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{7D20}\x{4EBA}" + LayoutText {#text} at (172,146) size 18x48 + text run at (172,146) width 48: "\x{306A}\x{3089}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (170,193) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3054}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5408}" + LayoutText {#text} at (172,210) size 46x498 + text run at (172,210) width 288: "\x{3067}\x{6E08}\x{3080}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{3002}\x{3057}\x{3066}\x{898B}\x{308B}\x{3068}\x{8A69}\x{4EBA}\x{306F}\x{5E38}" + text run at (200,0) width 160: "\x{306E}\x{4EBA}\x{3088}\x{308A}\x{3082}\x{82E6}\x{52B4}\x{6027}\x{3067}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (198,159) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{307C}\x{3093}\x{3053}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{51E1}\x{9AA8}" + LayoutText {#text} at (200,194) size 46x498 + text run at (200,194) width 304: "\x{306E}\x{500D}\x{4EE5}\x{4E0A}\x{306B}\x{795E}\x{7D4C}\x{304C}\x{92ED}\x{654F}\x{306A}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{3093}\x{3002}\x{8D85}" + text run at (228,0) width 208: "\x{4FD7}\x{306E}\x{559C}\x{3073}\x{3082}\x{3042}\x{308D}\x{3046}\x{304C}\x{3001}\x{7121}\x{91CF}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (226,204) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{304B}\x{306A}\x{3057}\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{60B2}" + LayoutText {#text} at (228,236) size 40x492 + text run at (228,236) width 256: "\x{3082}\x{591A}\x{304B}\x{308D}\x{3046}\x{3002}\x{305D}\x{3093}\x{306A}\x{3089}\x{3070}\x{8A69}\x{4EBA}\x{306B}\x{306A}\x{308B}" + text run at (250,0) width 112: "\x{306E}\x{3082}\x{8003}\x{3048}\x{7269}\x{3060}\x{3002}" + LayoutBR {BR} at (250,112) size 18x0 + LayoutText {#text} at (278,0) size 18x128 + text run at (278,0) width 128: "\x{3000}\x{3057}\x{3070}\x{3089}\x{304F}\x{306F}\x{8DEF}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (276,123.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{305F}\x{3044}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5E73}" + LayoutText {#text} at (278,146) size 18x65 + text run at (278,146) width 64: "\x{3067}\x{3001}\x{53F3}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x49 + LayoutRubyRun (anonymous) at (276,210.98) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{305E}\x{3046}\x{304D}\x{3084}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{96D1}\x{6728}\x{5C71}" + LayoutText {#text} at (278,258) size 46x499 + text run at (278,258) width 240: "\x{3001}\x{5DE6}\x{306F}\x{83DC}\x{306E}\x{82B1}\x{306E}\x{898B}\x{3064}\x{3065}\x{3051}\x{3067}\x{3042}\x{308B}\x{3002}" + text run at (306,0) width 96: "\x{8DB3}\x{306E}\x{4E0B}\x{306B}\x{6642}\x{3005}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (304,96) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,1) size 10x46 + text run at (2,1) width 45: "\x{305F}\x{3093}\x{307D}\x{307D}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{84B2}\x{516C}\x{82F1}" + LayoutText {#text} at (306,144) size 18x112 + text run at (306,144) width 112: "\x{3092}\x{8E0F}\x{307F}\x{3064}\x{3051}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x28 + LayoutRubyRun (anonymous) at (304,252) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306E}\x{3053}\x{304E}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,10) size 18x16 + text run at (2,10) width 16: "\x{92F8}" + LayoutText {#text} at (306,284) size 46x492 + text run at (306,284) width 208: "\x{306E}\x{3088}\x{3046}\x{306A}\x{8449}\x{304C}\x{9060}\x{616E}\x{306A}\x{304F}\x{56DB}\x{65B9}\x{3078}" + text run at (334,0) width 144: "\x{306E}\x{3057}\x{3066}\x{771F}\x{4E2D}\x{306B}\x{9EC4}\x{8272}\x{306A}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (332,143) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{73E0}" + LayoutText {#text} at (334,160) size 68x496 + text run at (334,160) width 336: "\x{3092}\x{64C1}\x{8B77}\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{306B}\x{6C17}\x{3092}\x{3068}\x{3089}\x{308C}\x{3066}\x{3001}\x{8E0F}\x{307F}" + text run at (356,0) width 496: "\x{3064}\x{3051}\x{305F}\x{3042}\x{3068}\x{3067}\x{3001}\x{6C17}\x{306E}\x{6BD2}\x{306A}\x{4E8B}\x{3092}\x{3057}\x{305F}\x{3068}\x{3001}\x{632F}\x{308A}\x{5411}\x{3044}\x{3066}\x{898B}\x{308B}\x{3068}\x{3001}\x{9EC4}\x{8272}\x{306A}\x{73E0}\x{306F}" + text run at (384,0) width 160: "\x{4F9D}\x{7136}\x{3068}\x{3057}\x{3066}\x{92F8}\x{306E}\x{306A}\x{304B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (382,160) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3061}\x{3093}\x{3056}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{93AE}\x{5EA7}" + LayoutText {#text} at (384,192) size 18x80 + text run at (384,192) width 80: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (382,272) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{306E}\x{3093}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5451}\x{6C17}" + LayoutText {#text} at (384,304) size 40x496 + text run at (384,304) width 192: "\x{306A}\x{3082}\x{306E}\x{3060}\x{3002}\x{307E}\x{305F}\x{8003}\x{3048}\x{3092}\x{3064}\x{3065}" + text run at (406,0) width 48: "\x{3051}\x{308B}\x{3002}" + LayoutBR {BR} at (406,48) size 18x0 + LayoutText {#text} at (434,0) size 18x64 + text run at (434,0) width 64: "\x{3000}\x{8A69}\x{4EBA}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x20 + LayoutRubyRun (anonymous) at (432,59.98) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{6182}" + LayoutText {#text} at (434,82) size 18x241 + text run at (434,82) width 240: "\x{306F}\x{3064}\x{304D}\x{3082}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{304C}\x{3001}\x{3042}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (432,322.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (434,354) size 18x145 + text run at (434,354) width 144: "\x{3092}\x{805E}\x{304F}\x{5FC3}\x{6301}\x{306B}\x{306A}\x{308C}\x{3070}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (460,0) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{307F}\x{3058}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5FAE}\x{5875}" + LayoutText {#text} at (462,32) size 18x16 + text run at (462,32) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (460,48) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{82E6}" + LayoutText {#text} at (462,64) size 18x336 + text run at (462,64) width 336: "\x{3082}\x{306A}\x{3044}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{3092}\x{898B}\x{3066}\x{3082}\x{3001}\x{305F}\x{3060}\x{3046}\x{308C}\x{3057}\x{304F}\x{3066}\x{80F8}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (460,399) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304A}\x{3069}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8E8D}" + LayoutText {#text} at (462,416) size 68x496 + text run at (462,416) width 64: "\x{308B}\x{3070}\x{304B}\x{308A}" + text run at (484,0) width 496: "\x{3060}\x{3002}\x{84B2}\x{516C}\x{82F1}\x{3082}\x{305D}\x{306E}\x{901A}\x{308A}\x{3001}\x{685C}\x{3082}\x{2015}\x{2015}\x{685C}\x{306F}\x{3044}\x{3064}\x{304B}\x{898B}\x{3048}\x{306A}\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}\x{3053}\x{3046}\x{5C71}" + text run at (512,0) width 128: "\x{306E}\x{4E2D}\x{3078}\x{6765}\x{3066}\x{81EA}\x{7136}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (510,127) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3051}\x{3044}\x{3076}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{666F}\x{7269}" + LayoutText {#text} at (512,162) size 46x498 + text run at (512,162) width 336: "\x{306B}\x{63A5}\x{3059}\x{308C}\x{3070}\x{3001}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{805E}\x{304F}\x{3082}\x{306E}\x{3082}\x{9762}\x{767D}\x{3044}\x{3002}\x{9762}" + text run at (540,0) width 384: "\x{767D}\x{3044}\x{3060}\x{3051}\x{3067}\x{5225}\x{6BB5}\x{306E}\x{82E6}\x{3057}\x{307F}\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{8D77}\x{308B}\x{3068}\x{3059}\x{308C}\x{3070}\x{8DB3}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (538,384) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304F}\x{305F}\x{3073}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8349}\x{81E5}" + LayoutText {#text} at (540,416) size 18x48 + text run at (540,416) width 48: "\x{308C}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (538,463) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{65E8}" + LayoutText {#text} at (540,480) size 40x496 + text run at (540,480) width 16: "\x{3044}" + text run at (562,0) width 272: "\x{3082}\x{306E}\x{304C}\x{98DF}\x{3079}\x{3089}\x{308C}\x{306C}\x{304F}\x{3089}\x{3044}\x{306E}\x{4E8B}\x{3060}\x{308D}\x{3046}\x{3002}" + LayoutBR {BR} at (562,272) size 18x0 + LayoutText {#text} at (590,0) size 18x416 + text run at (590,0) width 416: "\x{3000}\x{3057}\x{304B}\x{3057}\x{82E6}\x{3057}\x{307F}\x{306E}\x{306A}\x{3044}\x{306E}\x{306F}\x{306A}\x{305C}\x{3060}\x{308D}\x{3046}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{3092}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (588,415) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3077}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5E45}" + LayoutText {#text} at (590,432) size 18x16 + text run at (590,432) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (588,448) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (590,464) size 46x496 + text run at (590,464) width 32: "\x{3068}\x{3057}" + text run at (618,0) width 16: "\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,16) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89B3}" + LayoutText {#text} at (618,32) size 18x32 + text run at (618,32) width 32: "\x{3001}\x{4E00}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,63) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304B}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5DFB}" + LayoutText {#text} at (618,80) size 18x208 + text run at (618,80) width 208: "\x{306E}\x{8A69}\x{3068}\x{3057}\x{3066}\x{8AAD}\x{3080}\x{304B}\x{3089}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (616,288) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304C}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{753B}" + LayoutText {#text} at (618,304) size 18x160 + text run at (618,304) width 160: "\x{3067}\x{3042}\x{308A}\x{8A69}\x{3067}\x{3042}\x{308B}\x{4EE5}\x{4E0A}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (616,464) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3058}\x{3081}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{5730}\x{9762}" + LayoutText {#text} at (646,0) size 18x368 + text run at (646,0) width 368: "\x{3092}\x{8CB0}\x{3063}\x{3066}\x{3001}\x{958B}\x{62D3}\x{3059}\x{308B}\x{6C17}\x{306B}\x{3082}\x{306A}\x{3089}\x{306D}\x{3070}\x{3001}\x{9244}\x{9053}\x{3092}\x{304B}\x{3051}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (644,367) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3072}\x{3068}\x{3082}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{4E00}\x{5132}" + LayoutText {#text} at (646,402) size 18x48 + text run at (646,402) width 48: "\x{3051}\x{3059}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (644,447) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3051}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{4E86}\x{898B}" + LayoutText {#text} at (674,0) size 18x256 + text run at (674,0) width 256: "\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{2015}\x{2015}\x{8179}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (672,256) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{305F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{8DB3}" + LayoutText {#text} at (674,272) size 68x496 + text run at (674,272) width 224: "\x{3057}\x{306B}\x{3082}\x{306A}\x{3089}\x{306C}\x{3001}\x{6708}\x{7D66}\x{306E}\x{88DC}\x{3044}\x{306B}\x{3082}" + text run at (696,0) width 496: "\x{306A}\x{3089}\x{306C}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{666F}\x{8272}\x{3068}\x{3057}\x{3066}\x{306E}\x{307F}\x{3001}\x{4F59}\x{304C}\x{5FC3}\x{3092}\x{697D}\x{307E}\x{305B}\x{3064}\x{3064}\x{3042}\x{308B}\x{304B}\x{3089}\x{82E6}\x{52B4}" + text run at (724,0) width 64: "\x{3082}\x{5FC3}\x{914D}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (722,60) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3068}\x{3082}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{4F34}" + LayoutText {#text} at (724,83) size 18x288 + text run at (724,83) width 288: "\x{308F}\x{306C}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{81EA}\x{7136}\x{306E}\x{529B}\x{306F}\x{3053}\x{3053}\x{306B}\x{304A}\x{3044}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (722,370) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{3063}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5C0A}" + LayoutText {#text} at (724,387) size 46x499 + text run at (724,387) width 112: "\x{3068}\x{3044}\x{3002}\x{543E}\x{4EBA}\x{306E}\x{6027}" + text run at (752,0) width 80: "\x{60C5}\x{3092}\x{77AC}\x{523B}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (750,80) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{3046}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9676}\x{51B6}" + LayoutText {#text} at (752,112) size 18x32 + text run at (752,112) width 32: "\x{3057}\x{3066}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (750,143) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3085}\x{3093}\x{3053}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{9187}\x{4E4E}" + LayoutText {#text} at (752,178) size 40x498 + text run at (752,178) width 320: "\x{3068}\x{3057}\x{3066}\x{9187}\x{306A}\x{308B}\x{8A69}\x{5883}\x{306B}\x{5165}\x{3089}\x{3057}\x{3080}\x{308B}\x{306E}\x{306F}\x{81EA}\x{7136}\x{3067}\x{3042}" + text run at (774,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (774,32) size 18x0 + LayoutText {#text} at (796,0) size 46x496 + text run at (796,0) width 496: "\x{3000}\x{604B}\x{306F}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5B5D}\x{3082}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5FE0}\x{541B}\x{611B}\x{56FD}\x{3082}\x{7D50}\x{69CB}\x{3060}\x{308D}\x{3046}\x{3002}\x{3057}" + text run at (824,0) width 112: "\x{304B}\x{3057}\x{81EA}\x{8EAB}\x{304C}\x{305D}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (822,108) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304D}\x{3087}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5C40}" + LayoutText {#text} at (824,131) size 18x112 + text run at (824,131) width 112: "\x{306B}\x{5F53}\x{308C}\x{3070}\x{5229}\x{5BB3}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (822,243) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3064}\x{3080}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{65CB}\x{98A8}" + LayoutText {#text} at (824,275) size 18x16 + text run at (824,275) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (822,291) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307E}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{6372}" + LayoutText {#text} at (824,307) size 46x499 + text run at (824,307) width 192: "\x{304D}\x{8FBC}\x{307E}\x{308C}\x{3066}\x{3001}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{4E8B}" + text run at (852,0) width 192: "\x{306B}\x{3082}\x{3001}\x{7D50}\x{69CB}\x{306A}\x{4E8B}\x{306B}\x{3082}\x{3001}\x{76EE}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (850,191) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{304F}\x{3089}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{7729}" + LayoutText {#text} at (852,208) size 46x496 + text run at (852,208) width 288: "\x{3093}\x{3067}\x{3057}\x{307E}\x{3046}\x{3002}\x{3057}\x{305F}\x{304C}\x{3063}\x{3066}\x{3069}\x{3053}\x{306B}\x{8A69}\x{304C}\x{3042}\x{308B}" + text run at (880,0) width 80: "\x{304B}\x{81EA}\x{8EAB}\x{306B}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (878,80) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3052}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89E3}" + LayoutText {#text} at (880,96) size 18x80 + text run at (880,96) width 80: "\x{3057}\x{304B}\x{306D}\x{308B}\x{3002}" + LayoutBR {BR} at (880,176) size 18x0 + LayoutText {#text} at (902,0) size 46x496 + text run at (902,0) width 496: "\x{3000}\x{3053}\x{308C}\x{304C}\x{308F}\x{304B}\x{308B}\x{305F}\x{3081}\x{306B}\x{306F}\x{3001}\x{308F}\x{304B}\x{308B}\x{3060}\x{3051}\x{306E}\x{4F59}\x{88D5}\x{306E}\x{3042}\x{308B}\x{7B2C}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}" + text run at (930,0) width 336: "\x{305F}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}\x{3066}\x{3070}\x{3053}\x{305D}\x{829D}\x{5C45}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (928,336) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{307F}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{89B3}" + LayoutText {#text} at (930,352) size 68x496 + text run at (930,352) width 144: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{5C0F}\x{8AAC}\x{3082}\x{898B}" + text run at (952,0) width 496: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{829D}\x{5C45}\x{3092}\x{898B}\x{3066}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{5C0F}\x{8AAC}\x{3092}\x{8AAD}\x{3093}\x{3067}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{81EA}\x{5DF1}\x{306E}" + text run at (980,0) width 48: "\x{5229}\x{5BB3}\x{306F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (978,47) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305F}\x{306A}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{68DA}" + LayoutText {#text} at (980,64) size 18x416 + text run at (980,64) width 416: "\x{3078}\x{4E0A}\x{3052}\x{3066}\x{3044}\x{308B}\x{3002}\x{898B}\x{305F}\x{308A}\x{8AAD}\x{3093}\x{3060}\x{308A}\x{3059}\x{308B}\x{9593}\x{3060}\x{3051}\x{306F}\x{8A69}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}" + LayoutBR {BR} at (980,480) size 18x0 + LayoutText {#text} at (1008,0) size 18x304 + text run at (1008,0) width 304: "\x{3000}\x{305D}\x{308C}\x{3059}\x{3089}\x{3001}\x{666E}\x{901A}\x{306E}\x{829D}\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{306F}\x{4EBA}\x{60C5}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1006,303) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{306C}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{514D}" + LayoutText {#text} at (1008,320) size 68x496 + text run at (1008,320) width 176: "\x{304B}\x{308C}\x{306C}\x{3002}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}" + text run at (1030,0) width 496: "\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{3044}\x{3064}\x{304B}\x{305D}\x{306E}\x{4E2D}\x{306B}\x{540C}\x{5316}\x{3057}" + text run at (1058,0) width 384: "\x{3066}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1056,384) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3068}\x{308A}\x{3048}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{53D6}\x{67C4}" + LayoutText {#text} at (1058,416) size 18x64 + text run at (1058,416) width 64: "\x{306F}\x{5229}\x{617E}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x17 + LayoutRubyRun (anonymous) at (1056,479) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{307E}\x{3058}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{4EA4}" + LayoutText {#text} at (1086,0) size 18x112 + text run at (1086,0) width 112: "\x{3089}\x{306C}\x{3068}\x{4E91}\x{3046}\x{70B9}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1084,111) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305D}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5B58}" + LayoutText {#text} at (1086,128) size 18x304 + text run at (1086,128) width 304: "\x{3059}\x{308B}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{304C}\x{3001}\x{4EA4}\x{3089}\x{306C}\x{3060}\x{3051}\x{306B}\x{305D}\x{306E}\x{4ED6}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (1084,429) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3058}\x{3087}\x{3046}\x{3057}\x{3087}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{60C5}\x{7DD2}" + LayoutText {#text} at (1086,471) size 46x503 + text run at (1086,471) width 32: "\x{306F}\x{5E38}" + text run at (1114,0) width 272: "\x{3088}\x{308A}\x{306F}\x{4F59}\x{8A08}\x{306B}\x{6D3B}\x{52D5}\x{3059}\x{308B}\x{3060}\x{308D}\x{3046}\x{3002}\x{305D}\x{308C}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1112,271) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3044}\x{3084}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5ACC}" + LayoutText {#text} at (1114,288) size 18x32 + text run at (1114,288) width 32: "\x{3060}\x{3002}" + LayoutBR {BR} at (1114,320) size 18x0 + LayoutText {#text} at (1136,0) size 46x480 + text run at (1136,0) width 480: "\x{3000}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{306B}\x{3064}\x{304D}\x{3082}\x{306E}" + text run at (1164,0) width 192: "\x{3060}\x{3002}\x{4F59}\x{3082}\x{4E09}\x{5341}\x{5E74}\x{306E}\x{9593}\x{305D}\x{308C}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1162,192) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3068}\x{304A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{4ED5}\x{901A}" + LayoutText {#text} at (1164,224) size 18x48 + text run at (1164,224) width 48: "\x{3057}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1162,271) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3042}\x{304D}\x{3042}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{98FD}\x{3005}" + LayoutText {#text} at (1164,306) size 18x48 + text run at (1164,306) width 48: "\x{3057}\x{305F}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1162,354) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{3042}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{98FD}" + LayoutText {#text} at (1164,370) size 68x498 + text run at (1164,370) width 128: "\x{304D}\x{98FD}\x{304D}\x{3057}\x{305F}\x{4E0A}\x{306B}\x{829D}" + text run at (1186,0) width 496: "\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{540C}\x{3058}\x{523A}\x{6FC0}\x{3092}\x{7E70}\x{308A}\x{8FD4}\x{3057}\x{3066}\x{306F}\x{5927}\x{5909}\x{3060}\x{3002}\x{4F59}\x{304C}\x{6B32}\x{3059}\x{308B}\x{8A69}\x{306F}\x{305D}\x{3093}\x{306A}\x{4E16}" + text run at (1214,0) width 96: "\x{9593}\x{7684}\x{306E}\x{4EBA}\x{60C5}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1212,96) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,3) size 10x26 + text run at (2,3) width 25: "\x{3053}\x{3076}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{9F13}\x{821E}" + LayoutText {#text} at (1214,128) size 46x496 + text run at (1214,128) width 368: "\x{3059}\x{308B}\x{3088}\x{3046}\x{306A}\x{3082}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{4FD7}\x{5FF5}\x{3092}\x{653E}\x{68C4}\x{3057}\x{3066}\x{3001}\x{3057}\x{3070}\x{3089}" + text run at (1242,0) width 48: "\x{304F}\x{3067}\x{3082}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1240,47) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3058}\x{3093}\x{304B}\x{3044}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5875}\x{754C}" + LayoutText {#text} at (1242,82) size 90x498 + text run at (1242,82) width 416: "\x{3092}\x{96E2}\x{308C}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{5091}\x{4F5C}\x{3067}\x{3082}\x{4EBA}\x{60C5}\x{3092}" + text run at (1264,0) width 496: "\x{96E2}\x{308C}\x{305F}\x{829D}\x{5C45}\x{306F}\x{306A}\x{3044}\x{3001}\x{7406}\x{975E}\x{3092}\x{7D76}\x{3057}\x{305F}\x{5C0F}\x{8AAC}\x{306F}\x{5C11}\x{304B}\x{308D}\x{3046}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{4E16}\x{9593}\x{3092}" + text run at (1286,0) width 496: "\x{51FA}\x{308B}\x{4E8B}\x{304C}\x{51FA}\x{6765}\x{306C}\x{306E}\x{304C}\x{5F7C}\x{3089}\x{306E}\x{7279}\x{8272}\x{3067}\x{3042}\x{308B}\x{3002}\x{3053}\x{3068}\x{306B}\x{897F}\x{6D0B}\x{306E}\x{8A69}\x{306B}\x{306A}\x{308B}\x{3068}\x{3001}\x{4EBA}" + text run at (1314,0) width 208: "\x{4E8B}\x{304C}\x{6839}\x{672C}\x{306B}\x{306A}\x{308B}\x{304B}\x{3089}\x{3044}\x{308F}\x{3086}\x{308B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1312,208) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8A69}\x{6B4C}" + LayoutText {#text} at (1314,240) size 18x160 + text run at (1314,240) width 160: "\x{306E}\x{7D14}\x{7C8B}\x{306A}\x{308B}\x{3082}\x{306E}\x{3082}\x{3053}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x19 + LayoutRubyRun (anonymous) at (1312,396) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{304D}\x{3087}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{5883}" + LayoutText {#text} at (1314,419) size 18x16 + text run at (1314,419) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1312,435) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (1314,467) size 68x499 + text run at (1314,467) width 32: "\x{3059}\x{308B}" + text run at (1336,0) width 496: "\x{4E8B}\x{3092}\x{77E5}\x{3089}\x{306C}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{540C}\x{60C5}\x{3060}\x{3068}\x{304B}\x{3001}\x{611B}\x{3060}\x{3068}\x{304B}\x{3001}\x{6B63}\x{7FA9}\x{3060}\x{3068}\x{304B}\x{3001}\x{81EA}\x{7531}\x{3060}" + text run at (1364,0) width 48: "\x{3068}\x{304B}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1362,48) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3046}\x{304D}\x{3088}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{6D6E}\x{4E16}" + LayoutText {#text} at (1364,80) size 18x16 + text run at (1364,80) width 16: "\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1362,96) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{304B}\x{3093}\x{3053}\x{3046}\x{3070}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{52E7}\x{5DE5}\x{5834}" + LayoutText {#text} at (1364,144) size 18x160 + text run at (1364,144) width 160: "\x{306B}\x{3042}\x{308B}\x{3082}\x{306E}\x{3060}\x{3051}\x{3067}\x{7528}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1362,303) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3079}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F01}" + LayoutText {#text} at (1364,320) size 46x496 + text run at (1364,320) width 176: "\x{3058}\x{3066}\x{3044}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{8A69}\x{7684}\x{306B}" + text run at (1392,0) width 144: "\x{306A}\x{3063}\x{3066}\x{3082}\x{5730}\x{9762}\x{306E}\x{4E0A}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1390,144) size 22x16 + LayoutRubyText {RT} at (-10,0) size 13x16 + LayoutText {#text} at (2,3) size 10x10 + text run at (2,3) width 9: "\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x16 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,0) size 18x16 + text run at (2,0) width 16: "\x{99B3}" + LayoutText {#text} at (1392,160) size 18x112 + text run at (1392,160) width 112: "\x{3051}\x{3066}\x{3042}\x{308B}\x{3044}\x{3066}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1390,271) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{305C}\x{306B}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{92AD}" + LayoutText {#text} at (1392,288) size 46x496 + text run at (1392,288) width 208: "\x{306E}\x{52D8}\x{5B9A}\x{3092}\x{5FD8}\x{308C}\x{308B}\x{3072}\x{307E}\x{304C}\x{306A}\x{3044}\x{3002}" + text run at (1420,0) width 80: "\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1418,80) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{96F2}\x{96C0}" + LayoutText {#text} at (1420,112) size 18x256 + text run at (1420,112) width 256: "\x{3092}\x{805E}\x{3044}\x{3066}\x{5606}\x{606F}\x{3057}\x{305F}\x{306E}\x{3082}\x{7121}\x{7406}\x{306F}\x{306A}\x{3044}\x{3002}" + LayoutBR {BR} at (1420,368) size 18x0 + LayoutText {#text} at (1448,0) size 18x160 + text run at (1448,0) width 160: "\x{3000}\x{3046}\x{308C}\x{3057}\x{3044}\x{4E8B}\x{306B}\x{6771}\x{6D0B}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1446,159.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{8A69}\x{6B4C}" + LayoutText {#text} at (1448,191) size 18x65 + text run at (1448,191) width 64: "\x{306F}\x{305D}\x{3053}\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x33 + LayoutRubyRun (anonymous) at (1446,255.98) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{89E3}\x{8131}" + LayoutText {#text} at (1448,287) size 18x113 + text run at (1448,287) width 112: "\x{3057}\x{305F}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x43 + LayoutRubyRun (anonymous) at (1446,396.98) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{304D}\x{304F}\x{3092}\x{3068}\x{308B}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{63A1}\x{83CA}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x53 + LayoutRubyRun (anonymous) at (1474,0) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3068}\x{3046}\x{308A}\x{306E}\x{3082}\x{3068}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{6771}\x{7C6C}\x{4E0B}" + LayoutText {#text} at (1476,53) size 18x16 + text run at (1476,53) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x59 + LayoutRubyRun (anonymous) at (1474,65) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{3086}\x{3046}\x{305C}\x{3093}\x{3068}\x{3057}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,7) size 18x48 + text run at (2,7) width 47: "\x{60A0}\x{7136}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x61 + LayoutRubyRun (anonymous) at (1474,128) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{306A}\x{3093}\x{3056}\x{3093}\x{3092}\x{307F}\x{308B}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x59 + LayoutText {#text} at (2,2) size 18x59 + text run at (2,2) width 58: "\x{898B}\x{5357}\x{5C71}" + LayoutText {#text} at (1476,189) size 18x128 + text run at (1476,189) width 128: "\x{3002}\x{305F}\x{3060}\x{305D}\x{308C}\x{304E}\x{308A}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1474,316) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3046}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{88CF}" + LayoutText {#text} at (1476,333) size 46x493 + text run at (1476,333) width 160: "\x{306B}\x{6691}\x{82E6}\x{3057}\x{3044}\x{4E16}\x{306E}\x{4E2D}\x{3092}\x{307E}" + text run at (1504,0) width 368: "\x{308B}\x{3067}\x{5FD8}\x{308C}\x{305F}\x{5149}\x{666F}\x{304C}\x{51FA}\x{3066}\x{304F}\x{308B}\x{3002}\x{57A3}\x{306E}\x{5411}\x{3046}\x{306B}\x{96A3}\x{308A}\x{306E}\x{5A18}\x{304C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1502,367) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{305E}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{8997}" + LayoutText {#text} at (1504,384) size 46x496 + text run at (1504,384) width 112: "\x{3044}\x{3066}\x{308B}\x{8A33}\x{3067}\x{3082}\x{306A}" + text run at (1532,0) width 64: "\x{3051}\x{308C}\x{3070}\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x34 + LayoutRubyRun (anonymous) at (1530,63) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{306A}\x{3093}\x{3056}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{5357}\x{5C71}" + LayoutText {#text} at (1532,98) size 18x320 + text run at (1532,98) width 320: "\x{306B}\x{89AA}\x{53CB}\x{304C}\x{5949}\x{8077}\x{3057}\x{3066}\x{3044}\x{308B}\x{6B21}\x{7B2C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{8D85}\x{7136}\x{3068}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x70 + LayoutRubyRun (anonymous) at (1530,417) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3057}\x{3085}\x{3063}\x{305B}\x{3051}\x{3093}\x{3066}\x{304D}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x70 + LayoutText {#text} at (2,1) size 18x70 + text run at (2,1) width 70: "\x{51FA}\x{4E16}\x{9593}\x{7684}" + LayoutText {#text} at (1532,488) size 46x504 + text run at (1532,488) width 16: "\x{306B}" + text run at (1560,0) width 320: "\x{5229}\x{5BB3}\x{640D}\x{5F97}\x{306E}\x{6C57}\x{3092}\x{6D41}\x{3057}\x{53BB}\x{3063}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{3002}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x23 + LayoutRubyRun (anonymous) at (1558,316) size 22x27 + LayoutRubyText {RT} at (-10,0) size 13x27 + LayoutText {#text} at (2,0) size 10x27 + text run at (2,0) width 27: "\x{3072}\x{3068}\x{308A}" + LayoutRubyBase (anonymous) at (0,0) size 22x27 + LayoutInline {RB} at (0,0) size 18x17 + LayoutText {#text} at (2,5) size 18x17 + text run at (2,5) width 16: "\x{72EC}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x87 + LayoutRubyRun (anonymous) at (1558,343) size 22x90 + LayoutRubyText {RT} at (-10,0) size 13x90 + LayoutText {#text} at (2,0) size 10x90 + text run at (2,0) width 90: "\x{3086}\x{3046}\x{3053}\x{3046}\x{306E}\x{3046}\x{3061}\x{306B}\x{3056}\x{3057}" + LayoutRubyBase (anonymous) at (0,0) size 22x90 + LayoutInline {RB} at (0,0) size 18x84 + LayoutText {#text} at (2,3) size 18x84 + text run at (2,3) width 83: "\x{5750}\x{5E7D}\x{7BC1}\x{88CF}" + LayoutText {#text} at (1560,430) size 18x16 + text run at (1560,430) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x63 + LayoutRubyRun (anonymous) at (1586,0) size 22x63 + LayoutRubyText {RT} at (-10,0) size 13x63 + LayoutText {#text} at (2,0) size 10x63 + text run at (2,0) width 63: "\x{304D}\x{3093}\x{3092}\x{3060}\x{3093}\x{3058}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x63 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,7) size 18x48 + text run at (2,7) width 47: "\x{5F3E}\x{7434}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x77 + LayoutRubyRun (anonymous) at (1586,63) size 22x81 + LayoutRubyText {RT} at (-10,0) size 13x81 + LayoutText {#text} at (2,0) size 10x81 + text run at (2,0) width 81: "\x{307E}\x{305F}\x{3061}\x{3087}\x{3046}\x{3057}\x{3087}\x{3046}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x81 + LayoutInline {RB} at (0,0) size 18x71 + LayoutText {#text} at (2,5) size 18x71 + text run at (2,5) width 70: "\x{5FA9}\x{9577}\x{562F}" + LayoutText {#text} at (1588,140) size 18x16 + text run at (1588,140) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x35 + LayoutRubyRun (anonymous) at (1586,155) size 22x36 + LayoutRubyText {RT} at (-10,0) size 13x36 + LayoutText {#text} at (2,0) size 10x36 + text run at (2,0) width 36: "\x{3057}\x{3093}\x{308A}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x36 + LayoutInline {RB} at (0,0) size 18x34 + LayoutText {#text} at (2,1) size 18x34 + text run at (2,1) width 34: "\x{6DF1}\x{6797}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1586,191) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{3072}\x{3068}\x{3057}\x{3089}\x{305A}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{4EBA}\x{4E0D}\x{77E5}" + LayoutText {#text} at (1588,239) size 18x16 + text run at (1588,239) width 16: "\x{3001}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x68 + LayoutRubyRun (anonymous) at (1586,251) size 22x72 + LayoutRubyText {RT} at (-10,0) size 13x72 + LayoutText {#text} at (2,0) size 10x72 + text run at (2,0) width 72: "\x{3081}\x{3044}\x{3052}\x{3064}\x{304D}\x{305F}\x{308A}\x{3066}" + LayoutRubyBase (anonymous) at (0,0) size 22x72 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,4) size 18x64 + text run at (2,4) width 64: "\x{660E}\x{6708}\x{6765}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x42 + LayoutRubyRun (anonymous) at (1586,323) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3042}\x{3044}\x{3066}\x{3089}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{76F8}\x{7167}" + LayoutText {#text} at (1588,365) size 46x493 + text run at (1588,365) width 128: "\x{3002}\x{305F}\x{3060}\x{4E8C}\x{5341}\x{5B57}\x{306E}\x{3046}" + text run at (1616,0) width 32: "\x{3061}\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1614,31) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{3086}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{512A}" + LayoutText {#text} at (1616,48) size 18x16 + text run at (1616,48) width 16: "\x{306B}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x52 + LayoutRubyRun (anonymous) at (1614,63) size 22x54 + LayoutRubyText {RT} at (-10,0) size 13x54 + LayoutText {#text} at (2,0) size 10x54 + text run at (2,0) width 54: "\x{3079}\x{3064}\x{3051}\x{3093}\x{3053}\x{3093}" + LayoutRubyBase (anonymous) at (0,0) size 22x54 + LayoutInline {RB} at (0,0) size 18x52 + LayoutText {#text} at (2,1) size 18x52 + text run at (2,1) width 52: "\x{5225}\x{4E7E}\x{5764}" + LayoutText {#text} at (1616,116) size 18x16 + text run at (1616,116) width 16: "\x{3092}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x39 + LayoutRubyRun (anonymous) at (1614,129) size 22x45 + LayoutRubyText {RT} at (-10,0) size 13x45 + LayoutText {#text} at (2,0) size 10x45 + text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}" + LayoutRubyBase (anonymous) at (0,0) size 22x45 + LayoutInline {RB} at (0,0) size 18x39 + LayoutText {#text} at (2,3) size 18x39 + text run at (2,3) width 38: "\x{5EFA}\x{7ACB}" + LayoutText {#text} at (1616,171) size 18x160 + text run at (1616,171) width 160: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{3053}\x{306E}\x{4E7E}\x{5764}\x{306E}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x32 + LayoutRubyRun (anonymous) at (1614,331) size 22x32 + LayoutRubyText {RT} at (-10,0) size 13x32 + LayoutText {#text} at (2,0) size 10x31 + text run at (2,0) width 30: "\x{304F}\x{3069}\x{304F}" + LayoutRubyBase (anonymous) at (0,0) size 22x32 + LayoutInline {RB} at (0,0) size 18x32 + LayoutText {#text} at (2,0) size 18x32 + text run at (2,0) width 32: "\x{529F}\x{5FB3}" + LayoutText {#text} at (1616,363) size 18x32 + text run at (1616,363) width 32: "\x{306F}\x{300C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x48 + LayoutRubyRun (anonymous) at (1614,395) size 22x48 + LayoutRubyText {RT} at (-10,0) size 13x48 + LayoutText {#text} at (2,0) size 10x48 + text run at (2,0) width 47: "\x{307B}\x{3068}\x{3068}\x{304E}\x{3059}" + LayoutRubyBase (anonymous) at (0,0) size 22x48 + LayoutInline {RB} at (0,0) size 18x48 + LayoutText {#text} at (2,0) size 18x48 + text run at (2,0) width 48: "\x{4E0D}\x{5982}\x{5E30}" + LayoutText {#text} at (1616,443) size 46x475 + text run at (1616,443) width 32: "\x{300D}\x{3084}" + text run at (1644,0) width 16: "\x{300C}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x64 + LayoutRubyRun (anonymous) at (1642,16) size 22x64 + LayoutRubyText {RT} at (-10,0) size 13x64 + LayoutText {#text} at (2,0) size 10x64 + text run at (2,0) width 63: "\x{3053}\x{3093}\x{3058}\x{304D}\x{3084}\x{3057}\x{3083}" + LayoutRubyBase (anonymous) at (0,0) size 22x64 + LayoutInline {RB} at (0,0) size 18x64 + LayoutText {#text} at (2,0) size 18x64 + text run at (2,0) width 64: "\x{91D1}\x{8272}\x{591C}\x{53C9}" + LayoutText {#text} at (1644,80) size 46x496 + text run at (1644,80) width 416: "\x{300D}\x{306E}\x{529F}\x{5FB3}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{6C7D}\x{8239}\x{3001}\x{6C7D}\x{8ECA}\x{3001}\x{6A29}\x{5229}\x{3001}\x{7FA9}\x{52D9}\x{3001}\x{9053}\x{5FB3}\x{3001}\x{793C}\x{7FA9}" + text run at (1672,0) width 96: "\x{3067}\x{75B2}\x{308C}\x{679C}\x{3066}\x{305F}" + LayoutRuby (inline) {RUBY} at (0,0) size 18x16 + LayoutRubyRun (anonymous) at (1670,95) size 22x18 + LayoutRubyText {RT} at (-10,0) size 13x18 + LayoutText {#text} at (2,0) size 10x18 + text run at (2,0) width 18: "\x{306E}\x{3061}" + LayoutRubyBase (anonymous) at (0,0) size 22x18 + LayoutInline {RB} at (0,0) size 18x16 + LayoutText {#text} at (2,1) size 18x16 + text run at (2,1) width 16: "\x{5F8C}" + LayoutText {#text} at (1672,112) size 40x496 + text run at (1672,112) width 384: "\x{306B}\x{3001}\x{3059}\x{3079}\x{3066}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3050}\x{3063}\x{3059}\x{308A}\x{5BDD}\x{8FBC}\x{3080}\x{3088}\x{3046}\x{306A}\x{529F}\x{5FB3}\x{3067}\x{3042}" + text run at (1694,0) width 32: "\x{308B}\x{3002}" + LayoutBR {BR} at (1694,32) size 18x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png new file mode 100644 index 0000000..baae611 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt new file mode 100644 index 0000000..99fd303 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt
@@ -0,0 +1,25 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 772x600 + LayoutBlockFlow {HTML} at (0,0) size 772x600 + LayoutBlockFlow {BODY} at (8,8) size 756x584 + LayoutInline {SPAN} at (0,0) size 219x580 [border: (2px solid #000000)] + LayoutText {#text} at (20,4) size 211x580 + text run at (20,4) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}" + text run at (83,0) width 555: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (146,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (209,0) width 127: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + LayoutText {#text} at (209,130) size 22x8 + text run at (209,130) width 8: " " + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (272,0) size 22x0 + LayoutInline {SPAN} at (0,0) size 414x583 [border: (5px solid #000000)] + LayoutText {#text} at (335,7) size 400x583 + text run at (335,7) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}" + text run at (398,0) width 562: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (461,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (524,0) width 573: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}" + text run at (587,0) width 575: "\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}" + text run at (650,0) width 583: "\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}" + text run at (713,0) width 278: "\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt new file mode 100644 index 0000000..8d243d15 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt
@@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 541x600 + LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)] + LayoutBlockFlow {DIV} at (5,105) size 495x400 + LayoutText {#text} at (5,0) size 484x392 + text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}" + text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}" + text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}" + text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}" + text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}" + text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}" + text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}" + text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}" + text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}" + text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}" + text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" +selection start: position 5 of child 0 {#text} of child 1 {DIV} of body +selection end: position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt new file mode 100644 index 0000000..c0cc83c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt
@@ -0,0 +1,17 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 409x600 + LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)] + LayoutText {#text} at (10,5) size 352x553 + text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}" + text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}" + text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}" + text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}" + text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt new file mode 100644 index 0000000..8dad730 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt
@@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (259,0) size 541x600 + LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)] + LayoutBlockFlow {DIV} at (5,105) size 495x400 + LayoutText {#text} at (5,0) size 484x392 + text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}" + text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}" + text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}" + text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}" + text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}" + text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}" + text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}" + text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" + text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}" + text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}" + text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}" + text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}" + text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}" + text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}" +selection start: position 5 of child 0 {#text} of child 1 {DIV} of body +selection end: position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt new file mode 100644 index 0000000..10f00dda --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt
@@ -0,0 +1,17 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (391,0) size 409x600 + LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)] + LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)] + LayoutText {#text} at (10,5) size 352x553 + text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}" + text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}" + text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}" + text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}" + text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}" + text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}" + text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}" + text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}" + text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png new file mode 100644 index 0000000..d945c22b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt new file mode 100644 index 0000000..2e58825 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt
@@ -0,0 +1,140 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {FORM} at (0,0) size 784x194 + LayoutBlockFlow {HR} at (0,0) size 602x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,10) size 600x184 + LayoutTableSection {TBODY} at (0,0) size 600x184 + LayoutTableRow {TR} at (0,2) size 600x44 + LayoutTableCell {TD} at (2,2) size 594x44 [r=0 c=0 rs=1 cs=3] + LayoutImage {IMG} at (7.50,1) size 579x42 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,48) size 600x55 + LayoutTableCell {TD} at (2,57) size 594x36 [bgcolor=#99CCCC] [r=1 c=0 rs=1 cs=3] + LayoutInline {FONT} at (0,0) size 128x15 + LayoutInline {B} at (0,0) size 128x15 + LayoutText {#text} at (67,3) size 128x15 + text run at (67,3) width 128: "Search the Web with" + LayoutText {#text} at (194,1) size 5x18 + text run at (194,1) width 5: " " + LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 81x18 + LayoutText (anonymous) at (8,2) size 50x13 + text run at (8,2) width 50: "Netscape" + LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (470,1) size 5x18 + text run at (470,1) width 5: " " + LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Search" + LayoutBR {BR} at (526,15) size 1x0 + LayoutInline {SMALL} at (0,0) size 568x15 + LayoutInline {A} at (0,0) size 101x15 [color=#0000EE] + LayoutText {#text} at (13,20) size 101x15 + text run at (13,20) width 101: "Classifieds< /A> " + LayoutInline {A} at (0,0) size 59x15 [color=#0000EE] + LayoutText {#text} at (113,20) size 59x15 + text run at (113,20) width 23: "Net " + text run at (135,20) width 37: "Search" + LayoutText {#text} at (171,20) size 11x15 + text run at (171,20) width 11: " " + LayoutInline {A} at (0,0) size 83x15 [color=#0000EE] + LayoutText {#text} at (181,20) size 83x15 + text run at (181,20) width 57: "Find Web " + text run at (237,20) width 27: "Sites" + LayoutText {#text} at (263,20) size 11x15 + text run at (263,20) width 4: " " + text run at (266,20) width 8: " " + LayoutInline {A} at (0,0) size 66x15 [color=#0000EE] + LayoutText {#text} at (273,20) size 66x15 + text run at (273,20) width 40: "What's " + text run at (312,20) width 27: "Cool" + LayoutText {#text} at (338,20) size 11x15 + text run at (338,20) width 11: " " + LayoutInline {A} at (0,0) size 66x15 [color=#0000EE] + LayoutText {#text} at (348,20) size 66x15 + text run at (348,20) width 66: "What's New" + LayoutText {#text} at (413,20) size 11x15 + text run at (413,20) width 11: " " + LayoutInline {A} at (0,0) size 76x15 [color=#0000EE] + LayoutText {#text} at (423,20) size 76x15 + text run at (423,20) width 76: "People Finder" + LayoutText {#text} at (498,20) size 11x15 + text run at (498,20) width 11: " " + LayoutInline {A} at (0,0) size 73x15 [color=#0000EE] + LayoutText {#text} at (508,20) size 73x15 + text run at (508,20) width 73: "Yellow Pages" + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,105) size 600x50 + LayoutTableCell {TD} at (2,114) size 159x32 [r=2 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 117x33 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 117x30 [color=#CC0033] + LayoutText {#text} at (21,1) size 117x30 + text run at (21,1) width 117: "Download Netscape" + text run at (26,16) width 107: "Communicator 4.5" + LayoutTableCell {TD} at (163,105) size 270x50 [r=2 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 232x28 [color=#0000EE] + LayoutImage {IMG} at (19,1) size 232x35 [border: (1px solid #0000EE)] + LayoutBR {BR} at (251,36) size 0x0 + LayoutInline {FONT} at (0,0) size 48x13 + LayoutText {#text} at (111,36) size 48x13 + text run at (111,36) width 48: "Click Here!" + LayoutBR {BR} at (158,46) size 1x0 + LayoutTableCell {TD} at (435,121) size 161x17 [r=2 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 131x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 131x15 [color=#0066FF] + LayoutText {#text} at (15,1) size 131x15 + text run at (15,1) width 131: "Hassle-Free Upgrades" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,157) size 600x20 + LayoutTableCell {TD} at (2,157) size 594x20 [r=3 c=0 rs=1 cs=3] + LayoutInline {A} at (0,0) size 50x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 50x15 [color=#0066FF] + LayoutInline {B} at (0,0) size 50x15 + LayoutText {#text} at (15,3) size 50x15 + text run at (15,3) width 50: "Contact" + LayoutText {#text} at (64,1) size 13x18 + text run at (64,1) width 13: " : " + LayoutInline {SMALL} at (0,0) size 503x15 + LayoutInline {A} at (0,0) size 77x15 [color=#0000EE] + LayoutText {#text} at (76,3) size 77x15 + text run at (76,3) width 77: "Address Book" + LayoutText {#text} at (152,3) size 12x15 + text run at (152,3) width 12: " - " + LayoutInline {A} at (0,0) size 65x15 [color=#0000EE] + LayoutText {#text} at (163,3) size 65x15 + text run at (163,3) width 65: "Discussions" + LayoutText {#text} at (227,3) size 12x15 + text run at (227,3) width 12: " - " + LayoutInline {A} at (0,0) size 98x15 [color=#0000EE] + LayoutText {#text} at (238,3) size 98x15 + text run at (238,3) width 98: "Instant Messenger" + LayoutText {#text} at (335,3) size 12x15 + text run at (335,3) width 12: " - " + LayoutInline {A} at (0,0) size 79x15 [color=#0000EE] + LayoutText {#text} at (346,3) size 79x15 + text run at (346,3) width 79: "Long Distance" + LayoutText {#text} at (424,3) size 12x15 + text run at (424,3) width 12: " - " + LayoutInline {A} at (0,0) size 52x15 [color=#0000EE] + LayoutText {#text} at (435,3) size 52x15 + text run at (435,3) width 52: "Members" + LayoutText {#text} at (486,3) size 12x15 + text run at (486,3) width 12: " - " + LayoutInline {A} at (0,0) size 82x15 [color=#0000EE] + LayoutText {#text} at (497,3) size 82x15 + text run at (497,3) width 82: "WebMail< /A>" + LayoutInline {A} at (0,0) size 1x18 [color=#0000EE] + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,179) size 600x3 + LayoutTableCell {TD} at (2,179) size 596x3 [bgcolor=#99CCCC] [r=4 c=0 rs=1 cs=4] + LayoutTable {TABLE} at (1,1) size 0x1 + LayoutTableSection {TBODY} at (0,0) size 0x1 + LayoutTableRow {TR} at (0,0) size 0x1 + LayoutTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1] +layer at (292,79) size 185x13 + LayoutBlockFlow {DIV} at (3,3) size 185x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt new file mode 100644 index 0000000..b0569d1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt
@@ -0,0 +1,49 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x136 + LayoutTableSection {TBODY} at (0,0) size 784x136 + LayoutTableRow {TR} at (0,0) size 784x74 + LayoutTableCell {TD} at (0,0) size 784x74 [r=0 c=0 rs=1 cs=4] + LayoutBR {BR} at (392,1) size 0x18 + LayoutInline {FONT} at (0,0) size 732x53 + LayoutText {#text} at (26,19) size 732x35 + text run at (26,19) width 183: "The Supreme Court says " + text run at (208,19) width 550: "Wisconsin can continue using tuition vouchers to help poor parents send their" + text run at (210,37) width 223: "children to church-run schools. " + text run at (432,37) width 142: "What's your stand? " + LayoutBR {BR} at (573,51) size 1x0 + LayoutBR {BR} at (392,55) size 0x17 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,74) size 784x21 + LayoutTableCell {TD} at (0,76) size 562x17 [r=1 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 141x15 + LayoutText {#text} at (420,1) size 141x15 + text run at (420,1) width 141: "I agree with the program" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (562,74) size 72x21 [r=1 c=1 rs=1 cs=1] + LayoutBlockFlow {INPUT} at (3.89,4) size 12x13 + LayoutTableRow {TR} at (0,95) size 784x21 + LayoutTableCell {TD} at (0,97) size 562x17 [r=2 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 153x15 + LayoutText {#text} at (408,1) size 153x15 + text run at (408,1) width 153: "I think vouchers are wrong" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (562,95) size 72x21 [r=2 c=1 rs=1 cs=1] + LayoutBlockFlow {INPUT} at (3.89,4) size 12x13 + LayoutTableRow {TR} at (0,116) size 784x20 + LayoutTableCell {TD} at (0,117) size 634x17 [r=3 c=0 rs=1 cs=2] + LayoutInline {A} at (0,0) size 76x18 [color=#0000EE] + LayoutInline {FONT} at (0,0) size 76x15 + LayoutText {#text} at (279,1) size 76x15 + text run at (279,1) width 76: "View Results" + LayoutInline {FONT} at (0,0) size 1x15 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2] + LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 22.45x13 + LayoutText {#text} at (0,0) size 23x13 + text run at (0,0) width 23: "vote" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png new file mode 100644 index 0000000..c782f50 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt new file mode 100644 index 0000000..8524e91a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt
@@ -0,0 +1,35 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 144x52 + LayoutTableSection {TBODY} at (0,0) size 144x52 + LayoutTableRow {TR} at (0,2) size 144x48 + LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (1,1) size 138x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (1,1) size 138x46 + LayoutTable {TABLE} at (0,0) size 138x46 + LayoutTableSection {TBODY} at (0,0) size 138x46 + LayoutTableRow {TR} at (0,2) size 138x42 + LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1] + LayoutTable (floating) {TABLE} at (1,1) size 132x40 + LayoutTableSection {TBODY} at (0,0) size 132x40 + LayoutTableRow {TR} at (0,2) size 132x36 + LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (1,1) size 126x18 + LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 109.34x13 + LayoutText {#text} at (0,0) size 110x13 + text run at (0,0) width 110: "ApplyForThisPosition" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (1,47) size 138x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png new file mode 100644 index 0000000..7bd0345 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt new file mode 100644 index 0000000..86bec78 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt
@@ -0,0 +1,44 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {H2} at (0,0) size 784x28 + LayoutText {#text} at (0,0) size 362x28 + text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page" + LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {FORM} at (0,57.91) size 784x47 + LayoutTable {TABLE} at (0,0) size 600x47 + LayoutTableSection {TBODY} at (0,0) size 600x47 + LayoutTableRow {TR} at (0,2) size 600x21 + LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1] + LayoutInline {B} at (0,0) size 95x18 + LayoutText {#text} at (1,1) size 95x18 + text run at (1,1) width 95: "Trigger URL:" + LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1] + LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 37.27x13 + LayoutText {#text} at (0,0) size 38x13 + text run at (0,0) width 38: "Trigger" + LayoutTableRow {TR} at (0,25) size 600x20 + LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1] + LayoutInline {B} at (0,0) size 104x18 + LayoutText {#text} at (1,1) size 104x18 + text run at (1,1) width 104: "Run Test Case:" + LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1] + LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 253x18 + LayoutText (anonymous) at (8,2) size 70x13 + text run at (8,2) width 70: "a_abortinstall" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 64.64x13 + LayoutText {#text} at (0,0) size 65x13 + text run at (0,0) width 65: "Trigger case" +layer at (122,72) size 395x13 + LayoutBlockFlow {DIV} at (3,3) size 395x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 94: "http://jimbob/jars/"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png new file mode 100644 index 0000000..fb45699 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt new file mode 100644 index 0000000..47cb4dd8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt
@@ -0,0 +1,146 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 287x18 + text run at (0,0) width 287: "border=\"0\" cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,18) size 784x32 [bgcolor=#DDDD33] + LayoutTableSection {TBODY} at (0,0) size 784x32 + LayoutTableRow {TR} at (0,0) size 784x32 + LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,50) size 784x18 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,68) size 784x32 [bgcolor=#CCCCFF] + LayoutTableSection {TBODY} at (0,0) size 784x32 + LayoutTableRow {TR} at (0,0) size 784x32 + LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,100) size 784x18 + LayoutText {#text} at (0,0) size 105x18 + text run at (0,0) width 105: "cellpadding=\"0\"" + LayoutTable {TABLE} at (0,118) size 784x36 [bgcolor=#FF9999] + LayoutTableSection {TBODY} at (0,0) size 784x36 + LayoutTableRow {TR} at (0,2) size 784x32 + LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,154) size 784x18 + LayoutText {#text} at (0,0) size 181x18 + text run at (0,0) width 181: "border=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,172) size 784x36 [bgcolor=#AAEEBB] + LayoutTableSection {TBODY} at (0,0) size 784x36 + LayoutTableRow {TR} at (0,2) size 784x32 + LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,208) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 77x18 + text run at (30,0) width 77: " border=\"0\"" + LayoutTable {TABLE} at (0,226) size 784x38 [bgcolor=#FFCCEE] + LayoutTableSection {TBODY} at (0,0) size 784x38 + LayoutTableRow {TR} at (0,2) size 784x34 + LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,264) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 109x18 + text run at (30,0) width 109: " cellpadding=\"1\"" + LayoutTable {TABLE} at (0,282) size 784x38 [bgcolor=#66DDFF] + LayoutTableSection {TBODY} at (0,0) size 784x38 + LayoutTableRow {TR} at (0,2) size 784x34 + LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,320) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 291x18 + text run at (30,0) width 291: " border=\"1\" cellspacing=\"0\" cellpadding=\"0\"" + LayoutTable {TABLE} at (0,338) size 784x36 [bgcolor=#EEEEEE] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x34 + LayoutTableRow {TR} at (0,0) size 782x34 + LayoutTableCell {TD} at (0,16) size 14x2 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (14,0) size 754x34 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (768,16) size 14x2 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,374) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 183x18 + text run at (30,0) width 183: " border=\"1\" cellspacing=\"0\"" + LayoutTable {TABLE} at (0,392) size 784x38 [bgcolor=#FFCC66] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x36 + LayoutTableRow {TR} at (0,0) size 782x36 + LayoutTableCell {TD} at (0,16) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (16,0) size 750x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (766,16) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (0,430) size 784x18 + LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF] + LayoutText {#text} at (0,0) size 31x18 + text run at (0,0) width 31: "right" + LayoutText {#text} at (30,0) size 77x18 + text run at (30,0) width 77: " border=\"1\"" + LayoutTable {TABLE} at (0,448) size 784x42 [bgcolor=#CCFF33] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x40 + LayoutTableRow {TR} at (0,2) size 782x36 + LayoutTableCell {TD} at (2,18) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (20,2) size 742x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (764,18) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] +layer at (20,26) size 760x32 clip at (21,27) size 758x30 + LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 754x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (20,76) size 760x32 clip at (21,77) size 758x30 + LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 754x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,128) size 752x32 clip at (25,129) size 750x30 + LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,182) size 752x32 clip at (25,183) size 750x30 + LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,237) size 746x32 clip at (28,238) size 744x30 + LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,293) size 746x32 clip at (28,294) size 744x30 + LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (24,348) size 752x32 clip at (25,349) size 750x30 + LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 746x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (27,403) size 746x32 clip at (28,404) size 744x30 + LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 740x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test" +layer at (31,461) size 738x32 clip at (32,462) size 736x30 + LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 732x13 + LayoutText {#text} at (0,0) size 20x13 + text run at (0,0) width 20: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png new file mode 100644 index 0000000..045bb950 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt new file mode 100644 index 0000000..7c7ced6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -0,0 +1,120 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x553 + LayoutBlockFlow {HTML} at (0,0) size 800x553 + LayoutBlockFlow {BODY} at (57,64) size 686x425 [bgcolor=#99FFCC] [border: (3px solid #000000)] + LayoutBlockFlow {P} at (3,3) size 680x64 + LayoutText {#text} at (0,6) size 632x51 + text run at (0,6) width 593: "These links are in an element with display table-row, and the li elements " + text run at (592,6) width 40: "have" + text run at (0,38) width 155: "display: table-cell. " + text run at (154,38) width 131: "They disappear:" + LayoutTable (anonymous) at (3,67) size 304x19 + LayoutTableSection (anonymous) at (0,0) size 304x19 + LayoutTableRow {UL} at (0,0) size 304x19 [bgcolor=#00CC99] + LayoutTableCell {LI} at (0,0) size 76x19 [r=0 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 54x19 [color=#0000EE] + LayoutText {#text} at (11,0) size 54x19 + text run at (11,0) width 54: "people" + LayoutTableCell {LI} at (76,0) size 76x19 [r=0 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 52x19 [color=#0000EE] + LayoutText {#text} at (12,0) size 52x19 + text run at (12,0) width 52: "places" + LayoutTableCell {LI} at (152,0) size 76x19 [r=0 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 76x19 [color=#0000EE] + LayoutText {#text} at (0,0) size 76x19 + text run at (0,0) width 76: "members" + LayoutTableCell {LI} at (228,0) size 76x19 [r=0 c=3 rs=1 cs=1] + LayoutInline {A} at (0,0) size 38x19 [color=#0000EE] + LayoutText {#text} at (19,0) size 38x19 + text run at (19,0) width 38: "links" + LayoutBlockFlow {DIV} at (3,86) size 680x336 + LayoutBlockFlow (anonymous) at (16,16) size 648x19 + LayoutText {#text} at (0,0) size 510x19 + text run at (0,0) width 227: "This text is not in the form. " + text run at (226,0) width 284: "The form should be indented 40px." + LayoutBlockFlow {FORM} at (96,35) size 568x285 + LayoutBlockFlow {P} at (0,0) size 568x64 + LayoutText {#text} at (0,6) size 541x51 + text run at (0,6) width 195: "This is text in the form. " + text run at (194,6) width 230: "It should be indented 40px. " + text run at (423,6) width 118: "The form itself" + text run at (0,38) width 373: "has the same table-row/table-cell problem as " + text run at (372,38) width 55: "above." + LayoutBlockFlow {P} at (0,64) size 568x63 + LayoutTable {SPAN} at (0,3) size 137x60 + LayoutTableSection (anonymous) at (0,0) size 137x60 + LayoutTableRow {SPAN} at (0,0) size 137x28 + LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 137x16 + text run at (0,6) width 137: "First Name (required)" + LayoutTableRow (anonymous) at (0,28) size 137x32 + LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (137,6) size 6x19 + text run at (137,6) width 6: " " + LayoutTable {SPAN} at (142.63,3) size 137x60 + LayoutTableSection (anonymous) at (0,0) size 137x60 + LayoutTableRow {SPAN} at (0,0) size 137x28 + LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 137x16 + text run at (0,6) width 137: "Last Name (required)" + LayoutTableRow (anonymous) at (0,28) size 137x32 + LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,127) size 568x63 + LayoutTable {SPAN} at (0,3) size 251x60 + LayoutTableSection (anonymous) at (0,0) size 251x60 + LayoutTableRow {SPAN} at (0,0) size 251x28 + LayoutTableCell (anonymous) at (0,0) size 251x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 93x16 + text run at (0,6) width 93: "Email Address" + LayoutTableRow (anonymous) at (0,28) size 251x32 + LayoutTableCell (anonymous) at (0,28) size 251x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 251x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,190) size 568x63 + LayoutTable {SPAN} at (0,3) size 107x60 + LayoutTableSection (anonymous) at (0,0) size 107x60 + LayoutTableRow {SPAN} at (0,0) size 107x28 + LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 105x16 + text run at (0,6) width 105: "Company Name" + LayoutTableRow (anonymous) at (0,28) size 107x32 + LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (107,6) size 6x19 + text run at (107,6) width 6: " " + LayoutTable {SPAN} at (112.63,3) size 107x60 + LayoutTableSection (anonymous) at (0,0) size 107x60 + LayoutTableRow {SPAN} at (0,0) size 107x28 + LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,6) size 27x16 + text run at (0,6) width 27: "Title" + LayoutTableRow (anonymous) at (0,28) size 107x32 + LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {P} at (0,253) size 568x32 + LayoutButton {INPUT} at (0,9) size 55.89x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 39.89x13 + LayoutText {#text} at (0,0) size 40x13 + text run at (0,0) width 40: "Submit!" + LayoutText {#text} at (55,6) size 7x19 + text run at (55,6) width 7: " " + LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 56.97x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 57: "Clear Form" + LayoutText {#text} at (0,0) size 0x0 +layer at (159,291) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (302,291) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (159,354) size 245x13 + LayoutBlockFlow {DIV} at (3,3) size 245x13 +layer at (159,417) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13 +layer at (272,417) size 101x13 + LayoutBlockFlow {DIV} at (3,3) size 101x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png new file mode 100644 index 0000000..325e09d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt new file mode 100644 index 0000000..057baa2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -0,0 +1,120 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (0,0) size 785x658.50 + LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06 + LayoutBlockFlow {H1} at (0,0) size 769x37 + LayoutText {#text} at (0,0) size 311x37 + text run at (0,0) width 311: "Generic Table Tests - 1" + LayoutBlockFlow {P} at (0,58.44) size 769x18 + LayoutText {#text} at (0,0) size 397x18 + text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail " + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (396,0) size 186x18 + text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (581,0) size 5x18 + text run at (581,0) width 5: "." + LayoutBlockFlow {DL} at (0,92.44) size 769x36 + LayoutBlockFlow {DT} at (0,0) size 769x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (40,18) size 729x18 + LayoutText {#text} at (0,0) size 697x18 + text run at (0,0) width 697: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model, and multiple classes." + LayoutBlockFlow {P} at (0,144.44) size 769x98 [border: (5px double #FF0000)] + LayoutBlockFlow (anonymous) at (13,13) size 743x18 + LayoutText {#text} at (0,0) size 239x18 + text run at (0,0) width 239: "If this paragraph breaks the line here:" + LayoutTable {SPAN} at (13,31) size 60x18 + LayoutTableSection (anonymous) at (0,0) size 60x18 + LayoutTableRow (anonymous) at (0,0) size 60x18 + LayoutTableCell (anonymous) at (0,0) size 60x18 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 60x18 + text run at (0,0) width 60: "and here:" + LayoutBlockFlow (anonymous) at (13,49) size 743x36 + LayoutText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "then your browser " + LayoutInline {EM} at (0,0) size 83x18 + LayoutText {#text} at (120,0) size 83x18 + text run at (120,0) width 83: "does support" + LayoutText {#text} at (202,0) size 165x18 + text run at (202,0) width 165: " table values on 'display'. " + LayoutInline {STRONG} at (0,0) size 715x36 + LayoutText {#text} at (366,0) size 715x36 + text run at (366,0) width 349: "If this paragraphs flows without any undue breaks," + text run at (0,18) width 459: "then you should mark your browser as not supporting table values!" + LayoutBlockFlow {H2} at (0,262.34) size 769x28 + LayoutText {#text} at (0,0) size 218x28 + text run at (0,0) width 218: "1. Table -> Table Cell" + LayoutBlockFlow {P} at (0,310.25) size 769x36 + LayoutText {#text} at (0,0) size 762x36 + text run at (0,0) width 762: "Below there should be a gray bar, spanning the width of the BODY, with the text \"Left\" to the left and the text \"Right\"," + text run at (0,18) width 222: "on the same line, flush to the right." + LayoutTable {DIV} at (0,362.25) size 769x18 [bgcolor=#C0C0C0] + LayoutTableSection (anonymous) at (0,0) size 769x18 + LayoutTableRow (anonymous) at (0,0) size 769x18 + LayoutTableCell {DIV} at (0,0) size 329x18 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 27x18 + text run at (0,0) width 27: "Left" + LayoutTableCell {DIV} at (329,0) size 440x18 [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (404,0) size 36x18 + text run at (404,0) width 36: "Right" + LayoutBlockFlow {H2} at (0,400.16) size 769x28 + LayoutText {#text} at (0,0) size 156x28 + text run at (0,0) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (0,448.06) size 769x19 + LayoutBlockFlow {P} at (0,0) size 769x19 + LayoutText {#text} at (0,0) size 267x18 + text run at (0,0) width 267: "How does your browser fare on this test? " + LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 238x18 + LayoutText (anonymous) at (8,2) size 138x13 + text run at (8,2) width 138: "The test renders correctly." + LayoutText {#text} at (504,0) size 5x18 + text run at (504,0) width 5: " " + LayoutInline {LABEL} at (0,0) size 204x18 + LayoutText {#text} at (508,0) size 73x18 + text run at (508,0) width 73: "Comment: " + LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (711,0) size 5x18 + text run at (711,0) width 5: " " + LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,501.06) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 73x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 73x18 + text run at (63,0) width 73: "Table Tests" + LayoutText {#text} at (135,0) size 5x18 + text run at (135,0) width 5: "." + LayoutBlockFlow {P} at (0,535.06) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 99x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 99x18 + text run at (63,0) width 99: "Evil Tests Page" + LayoutText {#text} at (161,0) size 5x18 + text run at (161,0) width 5: "." + LayoutBlockFlow {P} at (0,569.06) size 769x18 + LayoutText {#text} at (0,0) size 177x18 + text run at (0,0) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (176,0) size 79x18 + text run at (176,0) width 79: "Ian Hickson" + LayoutText {#text} at (254,0) size 10x18 + text run at (254,0) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (263,0) size 125x18 + text run at (263,0) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (387,0) size 10x18 + text run at (387,0) width 10: ")." + LayoutBlockFlow {P} at (0,603.06) size 769x18 + LayoutText {#text} at (0,0) size 185x18 + text run at (0,0) width 185: "Last updated in March 1999." +layer at (591,473) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png new file mode 100644 index 0000000..6a8402f9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt new file mode 100644 index 0000000..07df1f8f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -0,0 +1,243 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 2582 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 785x2582 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (0,0) size 785x2582.22 + LayoutBlockFlow {BODY} at (8,21.44) size 769x2544.78 [bgcolor=#FFFFFF] + LayoutBlockFlow {H1} at (0,0) size 769x37 + LayoutText {#text} at (0,0) size 361x37 + text run at (0,0) width 361: "Table Inheritance Tests - 1" + LayoutBlockFlow {P} at (0,58.44) size 769x18 + LayoutText {#text} at (0,0) size 397x18 + text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail " + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (396,0) size 186x18 + text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (581,0) size 5x18 + text run at (581,0) width 5: "." + LayoutBlockFlow {DL} at (0,92.44) size 769x36 + LayoutBlockFlow {DT} at (0,0) size 769x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (40,18) size 729x18 + LayoutText {#text} at (0,0) size 560x18 + text run at (0,0) width 560: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model." + LayoutBlockFlow {H2} at (0,148.34) size 769x28 + LayoutText {#text} at (0,0) size 104x28 + text run at (0,0) width 104: "0. Control" + LayoutBlockFlow {P} at (0,196.25) size 769x18 + LayoutText {#text} at (0,0) size 410x18 + text run at (0,0) width 410: "The following four tests should look identical, namely, like this:" + LayoutBlockFlow {DIV} at (0,230.25) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {P} at (0,320.25) size 769x72 + LayoutText {#text} at (0,0) size 768x72 + text run at (0,0) width 756: "There are some minor exceptions, however. The x.1 tests should fill the viewport width, the other tests need not. Also," + text run at (0,18) width 766: "browsers attempting to have backwards compatability with the buggy behaviour of legacy browsers may omit to inherit" + text run at (0,36) width 768: "the color and font-size in 1.1, which will make 1.1 (but only 1.1) unreadable. That is the problem with not following the" + text run at (0,54) width 39: "specs." + LayoutBlockFlow {H2} at (0,412.16) size 769x28 + LayoutText {#text} at (0,0) size 170x28 + text run at (0,0) width 170: "1. HTML Tables" + LayoutBlockFlow {H3} at (0,460.06) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "1.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,500.78) size 769x80 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {TABLE} at (0,0) size 769x80 + LayoutTableSection {TBODY} at (0,0) size 769x80 + LayoutTableRow {TR} at (0,2) size 769x76 + LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 761x74 + text run at (1,1) width 761: "This text should be white on black, bold, twice the" + text run at (1,38) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,599.50) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "1.2 Styles set directly on TABLE" + LayoutTable {TABLE} at (0,640.22) size 769x80 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection {TBODY} at (0,0) size 769x80 + LayoutTableRow {TR} at (0,2) size 769x76 + LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 761x74 + text run at (1,1) width 761: "This text should be white on black, bold, twice the" + text run at (1,38) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,740.13) size 769x28 + LayoutText {#text} at (0,0) size 226x28 + text run at (0,0) width 226: "2. Explicit CSS Tables" + LayoutBlockFlow {H3} at (0,788.03) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "2.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,828.75) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {DIV} at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,921.47) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "2.2 Styles set directly on TABLE" + LayoutTable {DIV} at (0,962.19) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1054.91) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "2.3 Styles set directly on ROW" + LayoutTable {DIV} at (0,1095.63) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1188.34) size 769x22 + LayoutText {#text} at (0,0) size 248x22 + text run at (0,0) width 248: "2.4 Styles set directly on CELL" + LayoutTable {DIV} at (0,1229.06) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1322.97) size 769x28 + LayoutText {#text} at (0,0) size 381x28 + text run at (0,0) width 381: "3. Implicit CSS Tables (table explicit)" + LayoutBlockFlow {H3} at (0,1370.88) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "3.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,1411.59) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable {DIV} at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1504.31) size 769x22 + LayoutText {#text} at (0,0) size 259x22 + text run at (0,0) width 259: "3.2 Styles set directly on TABLE" + LayoutTable {DIV} at (0,1545.03) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1638.94) size 769x28 + LayoutText {#text} at (0,0) size 370x28 + text run at (0,0) width 370: "4. Implicit CSS Tables (row explicit)" + LayoutBlockFlow {H3} at (0,1686.84) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "4.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,1727.56) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable (anonymous) at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,1820.28) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "4.2 Styles set directly on ROW" + LayoutTable (anonymous) at (0,1861) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,1954.91) size 769x28 + LayoutText {#text} at (0,0) size 365x28 + text run at (0,0) width 365: "5. Implicit CSS Tables (cell explicit)" + LayoutBlockFlow {H3} at (0,2002.81) size 769x22 + LayoutText {#text} at (0,0) size 243x22 + text run at (0,0) width 243: "5.1 Inheritance through a DIV" + LayoutBlockFlow {DIV} at (0,2043.53) size 769x74 [color=#FFFFFF] [bgcolor=#000000] + LayoutTable (anonymous) at (0,0) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H3} at (0,2136.25) size 769x22 + LayoutText {#text} at (0,0) size 248x22 + text run at (0,0) width 248: "5.2 Styles set directly on CELL" + LayoutTable (anonymous) at (0,2176.97) size 769x74 + LayoutTableSection (anonymous) at (0,0) size 769x74 + LayoutTableRow (anonymous) at (0,0) size 769x74 + LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 761x74 + text run at (0,0) width 761: "This text should be white on black, bold, twice the" + text run at (0,37) width 523: "size of normal text, and sans serif." + LayoutBlockFlow {H2} at (0,2270.88) size 769x28 + LayoutText {#text} at (0,0) size 156x28 + text run at (0,0) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (0,2318.78) size 769x38 + LayoutBlockFlow {P} at (0,0) size 769x38 + LayoutText {#text} at (0,0) size 267x18 + text run at (0,0) width 267: "How does your browser fare on this test? " + LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 458x18 + LayoutText (anonymous) at (8,2) size 427x13 + text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables." + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {LABEL} at (0,0) size 203x18 + LayoutText {#text} at (0,19) size 72x18 + text run at (0,19) width 72: "Comment: " + LayoutTextControl {INPUT} at (71.55,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (202,19) size 5x18 + text run at (202,19) width 5: " " + LayoutButton {INPUT} at (206.55,20) size 52.47x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,2372.78) size 769x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,2390.78) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 73x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 73x18 + text run at (63,0) width 73: "Table Tests" + LayoutText {#text} at (135,0) size 5x18 + text run at (135,0) width 5: "." + LayoutBlockFlow {P} at (0,2424.78) size 769x18 + LayoutText {#text} at (0,0) size 64x18 + text run at (0,0) width 64: "Up to the " + LayoutInline {A} at (0,0) size 99x18 [color=#0000EE] + LayoutText {#text} at (63,0) size 99x18 + text run at (63,0) width 99: "Evil Tests Page" + LayoutText {#text} at (161,0) size 5x18 + text run at (161,0) width 5: "." + LayoutBlockFlow {P} at (0,2458.78) size 769x18 + LayoutText {#text} at (0,0) size 63x18 + text run at (0,0) width 63: "Bugzilla: " + LayoutInline {A} at (0,0) size 64x18 [color=#0000EE] + LayoutText {#text} at (62,0) size 64x18 + text run at (62,0) width 64: "Bug 1044" + LayoutBlockFlow {P} at (0,2492.78) size 769x18 + LayoutText {#text} at (0,0) size 177x18 + text run at (0,0) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (176,0) size 79x18 + text run at (176,0) width 79: "Ian Hickson" + LayoutText {#text} at (254,0) size 10x18 + text run at (254,0) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (263,0) size 125x18 + text run at (263,0) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (387,0) size 10x18 + text run at (387,0) width 10: ")." + LayoutBlockFlow {P} at (0,2526.78) size 769x18 + LayoutText {#text} at (0,0) size 185x18 + text run at (0,0) width 185: "Last updated in March 1999." +layer at (83,2362) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png new file mode 100644 index 0000000..2ebdacb --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt new file mode 100644 index 0000000..ed36ede --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt
@@ -0,0 +1,22 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutTable {TABLE} at (0,0) size 66x46 + LayoutTableSection {THEAD} at (0,0) size 66x24 + LayoutTableRow {TR} at (0,2) size 66x20 + LayoutTableCell {TD} at (2,2) size 62x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 60x18 + text run at (1,1) width 60: "The head" + LayoutTableSection {TBODY} at (0,24) size 66x22 + LayoutTableRow {TR} at (0,0) size 66x20 + LayoutTableCell {TD} at (2,0) size 62x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 59x18 + text run at (1,1) width 59: "First row" + LayoutBlockFlow {FORM} at (0,46) size 784x18 + LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 29.69x13 + LayoutText {#text} at (0,0) size 30x13 + text run at (0,0) width 30: "insert" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png new file mode 100644 index 0000000..9be97bc9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png new file mode 100644 index 0000000..a7dde3e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt new file mode 100644 index 0000000..d8e9be2a4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt
@@ -0,0 +1,15 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (192,0) size 400x44 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 398x42 + LayoutTableRow {TR} at (0,2) size 398x38 + LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 390x18 + LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutText (anonymous) at (8,2) size 23x13 + text run at (8,2) width 23: "Test" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png new file mode 100644 index 0000000..3ffdc42 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png new file mode 100644 index 0000000..723437da --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt new file mode 100644 index 0000000..fb6b805 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt
@@ -0,0 +1,56 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 497x18 + text run at (0,0) width 497: "BUG: Inside a cell, \"height:x%\" is ignored. It looks like 'auto' is used instead." + LayoutBR {BR} at (496,14) size 1x0 + LayoutListItem {LI} at (0,18) size 784x18 + LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet + LayoutText {#text} at (30,0) size 265x18 + text run at (30,0) width 265: "Absolute units work correctly (eg. 50px)." + LayoutListItem {LI} at (0,36) size 784x490 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet + LayoutText {#text} at (30,0) size 183x18 + text run at (30,0) width 183: "\"width:x%\" works correctly." + LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,36) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,11) size 780x77 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,144) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,154) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (0,262) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,272) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,11) size 780x77.19 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (1,1) size 622.39x75.19 [bgcolor=#FFFFE0] + LayoutText {#text} at (0,0) size 232x18 + text run at (0,0) width 232: "BUG: the height of the P is not 80%" + LayoutBlockFlow {HR} at (0,380) size 784x2 [border: (1px inset #EEEEEE)] + LayoutTable {TABLE} at (0,390) size 784x100 + LayoutTableSection {TBODY} at (0,0) size 784x100 + LayoutTableRow {TR} at (0,2) size 784x96 + LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (1,1) size 622.39x80 [bgcolor=#FFFFE0] + LayoutText {#text} at (0,0) size 226x18 + text run at (0,0) width 226: "OK: the height of the P is 80 pixels" +layer at (11,92) size 622x75 clip at (12,93) size 620x73 + LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 616.39x13 + LayoutText {#text} at (0,0) size 219x13 + text run at (0,0) width 219: "BUG: the height of the textarea is not 80%" +layer at (11,208) size 622x80 clip at (12,209) size 620x78 + LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)] + LayoutBlockFlow {DIV} at (3,3) size 616.39x13 + LayoutText {#text} at (0,0) size 216x13 + text run at (0,0) width 216: "OK: the height of the textarea is 80 pixels"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png new file mode 100644 index 0000000..3f112728 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt new file mode 100644 index 0000000..fdc2a5f4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt
@@ -0,0 +1,38 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF] + LayoutBlockFlow {FORM} at (0,0) size 784x24 + LayoutTable {TABLE} at (0,0) size 784x24 + LayoutTableSection {TBODY} at (0,0) size 784x24 + LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF] + LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1] + LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 47.33x13 + LayoutText {#text} at (0,0) size 48x13 + text run at (0,0) width 48: "Select all" + LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1] + LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 33.53x13 + LayoutText {#text} at (0,0) size 34x13 + text run at (0,0) width 34: "Delete" + LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1.27,1) size 78.45x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 62.45x13 + LayoutText {#text} at (0,0) size 63x13 + text run at (0,0) width 63: "Empty trash" + LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1] + LayoutText {#text} at (1,1) size 4x18 + text run at (1,1) width 4: " " + LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1] + LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 44.72x13 + LayoutText {#text} at (0,0) size 45x13 + text run at (0,0) width 45: "Move to:" + LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1] + LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 107x18 + LayoutText (anonymous) at (8,2) size 76x13 + text run at (8,2) width 76: "Choose folder " + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png new file mode 100644 index 0000000..e41f46d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png new file mode 100644 index 0000000..6751598 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt new file mode 100644 index 0000000..3d83b492 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt
@@ -0,0 +1,35 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 270x18 + text run at (0,0) width 270: "The select should not contain blank items " + LayoutBR {BR} at (269,14) size 1x0 + LayoutBlockFlow {FORM} at (0,18) size 784x19 + LayoutInline {B} at (0,0) size 47x18 + LayoutText {#text} at (0,0) size 47x18 + text run at (0,0) width 47: "Search" + LayoutText {#text} at (46,0) size 5x18 + text run at (46,0) width 5: " " + LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (169,0) size 5x18 + text run at (169,0) width 5: " " + LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 75x18 + LayoutText (anonymous) at (8,2) size 32x13 + text run at (8,2) width 32: "Excite" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,53) size 784x36 + LayoutBR {BR} at (0,0) size 0x18 + LayoutText {#text} at (0,18) size 270x18 + text run at (0,18) width 270: "The select should not contain blank items " + LayoutBR {BR} at (269,32) size 1x0 + LayoutBlockFlow {FORM} at (0,89) size 784x18 + LayoutMenuList {SELECT} at (0,0) size 218x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 218x18 + LayoutText (anonymous) at (8,2) size 55x13 + text run at (8,2) width 55: "Quick Link" +layer at (62,29) size 113x13 + LayoutBlockFlow {DIV} at (3,3) size 113x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png new file mode 100644 index 0000000..960233a9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png new file mode 100644 index 0000000..e23513f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt new file mode 100644 index 0000000..988e2fe --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt
@@ -0,0 +1,201 @@ +layer at (0,0) size 800x600 scrollHeight 604 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x604 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x604 + LayoutBlockFlow {BODY} at (8,8) size 784x588 [bgcolor=#FFFFFF] + LayoutTable {TABLE} at (0,0) size 308x52 [border: (1px outset #808080)] + LayoutTableCol {COLGROUP} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableSection {TBODY} at (1,1) size 306x50 + LayoutTableRow {TR} at (0,2) size 306x22 + LayoutTableRow {TR} at (0,26) size 306x22 + LayoutTable {TABLE} at (0,52) size 308x52 [border: (1px outset #808080)] + LayoutTableCol {COLGROUP} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableCol {COL} at (0,0) size 0x0 + LayoutTableSection {TBODY} at (1,1) size 306x50 + LayoutTableRow {TR} at (0,2) size 306x22 + LayoutTableRow {TR} at (0,26) size 306x22 + LayoutTable {TABLE} at (0,104) size 300x52 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x50 + LayoutTableRow {TR} at (0,2) size 298x22 + LayoutTableRow {TR} at (0,26) size 298x22 + LayoutTable {TABLE} at (0,156) size 300x52 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x50 + LayoutTableRow {TR} at (0,2) size 298x22 + LayoutTableRow {TR} at (0,26) size 298x22 + LayoutTable {TABLE} at (0,208) size 300x53 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x51 + LayoutTableRow {TR} at (0,2) size 298x23 + LayoutTableRow {TR} at (0,27) size 298x22 + LayoutTable {TABLE} at (0,261) size 300x53 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x51 + LayoutTableRow {TR} at (0,2) size 298x23 + LayoutTableRow {TR} at (0,27) size 298x22 + LayoutTable {TABLE} at (0,314) size 300x94 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x92 + LayoutTableRow {TR} at (0,2) size 298x46 + LayoutTableRow {TR} at (0,50) size 298x40 + LayoutTable {TABLE} at (0,498) size 300x90 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x88 + LayoutTableRow {TR} at (0,2) size 298x60 + LayoutTableRow {TR} at (0,64) size 298x22 +layer at (11,11) size 200x22 clip at (12,12) size 198x20 + LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,11) size 100x22 clip at (214,12) size 98x20 + LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,35) size 200x22 clip at (12,36) size 198x20 + LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,35) size 100x22 clip at (214,36) size 98x20 + LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,63) size 200x22 clip at (12,64) size 198x20 + LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,63) size 100x22 clip at (214,64) size 98x20 + LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,87) size 200x22 clip at (12,88) size 198x20 + LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (213,87) size 100x22 clip at (214,88) size 98x20 + LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,115) size 233x22 clip at (12,116) size 231x20 + LayoutTableCell {TD} at (2,2) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (246,115) size 59x22 clip at (247,116) size 57x20 + LayoutTableCell {TD} at (237,2) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,139) size 233x22 clip at (12,140) size 231x20 + LayoutTableCell {TD} at (2,26) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (246,139) size 59x22 clip at (247,140) size 57x20 + LayoutTableCell {TD} at (237,26) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,167) size 154x22 clip at (12,168) size 152x20 + LayoutTableCell {TD} at (2,2) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,167) size 138x22 clip at (168,168) size 136x20 + LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,191) size 154x22 clip at (12,192) size 152x20 + LayoutTableCell {TD} at (2,26) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,191) size 138x22 clip at (168,192) size 136x20 + LayoutTableCell {TD} at (158,26) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,219) size 154x23 clip at (12,220) size 152x21 scrollWidth 201 + LayoutTableCell {TD} at (2,2) size 154x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 150x19 + LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 184x13 + LayoutText {#text} at (75,0) size 34x13 + text run at (75,0) width 34: "button" +layer at (167,219) size 138x23 clip at (168,220) size 136x21 + LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,244) size 154x22 clip at (12,245) size 152x20 + LayoutTableCell {TD} at (2,27) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,244) size 138x22 clip at (168,245) size 136x20 + LayoutTableCell {TD} at (158,27) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,272) size 280x23 clip at (12,273) size 278x21 + LayoutTableCell {TD} at (2,2) size 280x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 276x19 + LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 184x13 + LayoutText {#text} at (75,0) size 34x13 + text run at (75,0) width 34: "button" +layer at (293,272) size 12x23 clip at (294,273) size 10x21 + LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,297) size 280x22 clip at (12,298) size 278x20 + LayoutTableCell {TD} at (2,27) size 280x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (293,297) size 12x22 clip at (294,298) size 10x20 + LayoutTableCell {TD} at (284,27) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,325) size 172x46 clip at (12,326) size 170x44 scrollWidth 216 + LayoutTableCell {TD} at (2,2) size 172x46 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {DIV} at (11,11) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 21x18 + text run at (3,3) width 21: "div" +layer at (185,325) size 120x46 clip at (186,326) size 118x44 + LayoutTableCell {TD} at (176,5) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (11,373) size 172x40 clip at (12,374) size 170x38 + LayoutTableCell {TD} at (2,50) size 172x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (185,373) size 120x40 clip at (186,374) size 118x38 + LayoutTableCell {TD} at (176,50) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (11,11) size 4x18 + text run at (11,11) width 4: " " +layer at (8,416) size 300x90 clip at (9,417) size 298x88 + LayoutTable {TABLE} at (0,408) size 300x90 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 298x88 + LayoutTableRow {TR} at (0,2) size 298x60 + LayoutTableRow {TR} at (0,64) size 298x22 +layer at (11,419) size 154x60 clip at (12,420) size 152x58 scrollWidth 207 + LayoutTableCell {TD} at (2,2) size 154x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 28x18 + text run at (3,3) width 28: "para" +layer at (167,419) size 138x60 clip at (168,420) size 136x58 + LayoutTableCell {TD} at (158,21) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,481) size 154x22 clip at (12,482) size 152x20 + LayoutTableCell {TD} at (2,64) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (167,481) size 138x22 clip at (168,482) size 136x20 + LayoutTableCell {TD} at (158,64) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,509) size 254x60 clip at (12,510) size 252x58 + LayoutTableCell {TD} at (2,2) size 254x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)] + LayoutText {#text} at (3,3) size 28x18 + text run at (3,3) width 28: "para" +layer at (267,509) size 38x60 clip at (268,510) size 36x58 + LayoutTableCell {TD} at (258,21) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (11,571) size 254x22 clip at (12,572) size 252x20 + LayoutTableCell {TD} at (2,64) size 254x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " " +layer at (267,571) size 38x22 clip at (268,572) size 36x20 + LayoutTableCell {TD} at (258,64) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 4x18 + text run at (2,2) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png new file mode 100644 index 0000000..ce84b733 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt new file mode 100644 index 0000000..41ab6b65a5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -0,0 +1,53 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x111 [bgcolor=#00FFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x109 + LayoutTableRow {TR} at (0,2) size 782x105 + LayoutTableCell {TD} at (2,2) size 453x105 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 449x101 [bgcolor=#FF00FF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 447x99 + LayoutTableRow {TR} at (0,2) size 447x95 + LayoutTableCell {TD} at (2,2) size 443x95 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 203x18 + text run at (2,2) width 203: "Mozilla To Be Dually-Licensed" + LayoutBR {BR} at (204,16) size 1x0 + LayoutText {#text} at (2,35) size 208x18 + text run at (2,35) width 208: "Plans are underway to make the " + LayoutInline {FONT} at (0,0) size 101x37 [color=#0000FF] + LayoutText {#text} at (209,20) size 101x37 + text run at (209,20) width 101: "Mozilla" + LayoutText {#text} at (309,35) size 404x58 + text run at (309,35) width 97: " code available" + text run at (2,57) width 52: "under a " + text run at (53,57) width 157: "dual MPL/GPL license. " + text run at (209,57) width 181: "See the for more info. We're" + text run at (2,75) width 326: "gathering contributor input now, in the newsgroup." + LayoutBR {BR} at (327,89) size 1x0 + LayoutTableCell {TD} at (457,25) size 323x58 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 319x54 + text run at (2,2) width 273: "This status update contains information on" + text run at (2,20) width 319: "MailNews, XML/DOM, XPToolkit, Architecture," + text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..." + LayoutBlockFlow (anonymous) at (0,111) size 784x37 + LayoutBR {BR} at (0,0) size 0x18 + LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutText {#text} at (0,0) size 36x13 + text run at (0,0) width 36: "Reload" + LayoutText {#text} at (51,18) size 9x18 + text run at (51,18) width 9: " " + LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 + LayoutText {#text} at (0,0) size 67x13 + text run at (0,0) width 67: "Change Font" + LayoutText {#text} at (141,18) size 9x18 + text run at (141,18) width 9: " " + LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (161,140) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png new file mode 100644 index 0000000..cf44ad9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt new file mode 100644 index 0000000..6457d29 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -0,0 +1,41 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 784x65 [bgcolor=#00FFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 782x63 + LayoutTableRow {TR} at (0,2) size 782x59 + LayoutTableCell {TD} at (2,2) size 304x59 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {FONT} at (0,0) size 100x37 [color=#0000FF] + LayoutText {#text} at (2,2) size 100x37 + text run at (2,2) width 100: "Mozilla" + LayoutText {#text} at (101,17) size 279x40 + text run at (101,17) width 152: " code available under a " + text run at (253,17) width 28: "dual" + text run at (2,39) width 124: "MPL/GPL license. " + text run at (125,39) width 141: "See the for more info." + LayoutBR {BR} at (265,53) size 1x0 + LayoutTableCell {TD} at (308,20) size 472x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 245x18 + text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar" + LayoutBlockFlow (anonymous) at (0,65) size 784x37 + LayoutBR {BR} at (0,0) size 0x18 + LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutText {#text} at (0,0) size 36x13 + text run at (0,0) width 36: "Reload" + LayoutText {#text} at (51,18) size 9x18 + text run at (51,18) width 9: " " + LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 + LayoutText {#text} at (0,0) size 67x13 + text run at (0,0) width 67: "Change Font" + LayoutText {#text} at (141,18) size 9x18 + text run at (141,18) width 9: " " + LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (161,94) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png new file mode 100644 index 0000000..611822a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png new file mode 100644 index 0000000..27884584 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png new file mode 100644 index 0000000..c7e38c02 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt new file mode 100644 index 0000000..50a06f5a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 245x18 + text run at (0,0) width 245: "The tables left position should be 250." + LayoutBlockFlow {P} at (0,34) size 784x19 + LayoutText {#text} at (0,0) size 36x18 + text run at (0,0) width 36: "Left: " + LayoutTextControl {INPUT} at (35.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,69) size 784x19 + LayoutText {#text} at (0,0) size 34x18 + text run at (0,0) width 34: "Top: " + LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,104) size 784x18 + LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 27.94x13 + LayoutText {#text} at (0,0) size 28x13 + text run at (0,0) width 28: "Move" +layer at (46,45) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 31x13 + text run at (0,0) width 31: "120px" +layer at (44,80) size 125x13 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 31x13 + text run at (0,0) width 31: "120px" +layer at (250,120) size 30x48 + LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 28x46 + LayoutTableRow {TR} at (0,2) size 28x20 + LayoutTableCell {TD} at (2,2) size 24x20 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 22x18 + text run at (1,1) width 22: "foo" + LayoutTableRow {TR} at (0,24) size 28x20 + LayoutTableCell {TD} at (2,24) size 24x20 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 21x18 + text run at (1,1) width 21: "bar"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png new file mode 100644 index 0000000..8924635 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt new file mode 100644 index 0000000..a641299 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt
@@ -0,0 +1,22 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x80 + LayoutBlockFlow {HTML} at (0,0) size 800x80 + LayoutBlockFlow {BODY} at (8,8) size 784x64 + LayoutBlockFlow {FORM} at (0,0) size 784x38 + LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 134.98x13 + LayoutText {#text} at (0,0) size 135x13 + text run at (0,0) width 135: "(1) Fill cell with long string" + LayoutBR {BR} at (150,0) size 1x18 + LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 141.39x13 + LayoutText {#text} at (0,0) size 142x13 + text run at (0,0) width 142: "(2) Fill cell with short string" + LayoutBR {BR} at (157,19) size 1x18 + LayoutTable {TABLE} at (0,38) size 83x26 + LayoutTableSection {TBODY} at (0,0) size 83x26 + LayoutTableRow {TR} at (0,2) size 83x22 + LayoutTableCell {TD} at (2,2) size 79x22 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 15x18 + text run at (2,2) width 15: "aa"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png new file mode 100644 index 0000000..7e5b6606 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt new file mode 100644 index 0000000..c1d148d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt
@@ -0,0 +1,30 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x106 + LayoutBlockFlow {HTML} at (0,0) size 800x106 + LayoutBlockFlow {BODY} at (8,8) size 784x90 + LayoutBlockFlow {FORM} at (0,0) size 784x36 + LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 234.20x13 + LayoutText {#text} at (0,0) size 235x13 + text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)" + LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 238.75x13 + LayoutText {#text} at (0,0) size 239x13 + text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)" + LayoutTable {TABLE} at (0,36) size 34x54 + LayoutTableSection {TBODY} at (0,0) size 34x54 + LayoutTableRow {TR} at (0,2) size 34x24 + LayoutTableCell {TD} at (2,2) size 14x24 [border: (2px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "1" + LayoutTableCell {TD} at (18,2) size 14x24 [border: (2px solid #000000)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2" + LayoutTableRow {TR} at (0,28) size 34x24 + LayoutTableCell {TD} at (2,28) size 14x24 [border: (2px solid #000000)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2" + LayoutTableCell {TD} at (18,28) size 14x24 [border: (2px solid #000000)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (3,3) size 8x18 + text run at (3,3) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png new file mode 100644 index 0000000..43c0b03 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt new file mode 100644 index 0000000..08cdda66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt
@@ -0,0 +1,30 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x114 + LayoutBlockFlow {HTML} at (0,0) size 800x114 + LayoutBlockFlow {BODY} at (8,8) size 784x98 + LayoutBlockFlow {FORM} at (0,0) size 784x36 + LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 160.41x13 + LayoutText {#text} at (0,0) size 161x13 + text run at (0,0) width 161: "[Step 1] Set cell height to 60px" + LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 161.55x13 + LayoutText {#text} at (0,0) size 162x13 + text run at (0,0) width 162: "[Step 2] Set cell height to 20px" + LayoutTable {TABLE} at (0,36) size 42x62 + LayoutTableSection {TBODY} at (0,0) size 42x62 + LayoutTableRow {TR} at (0,2) size 42x28 + LayoutTableCell {TD} at (2,2) size 18x28 [border: (4px solid #000000)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "1" + LayoutTableCell {TD} at (22,2) size 18x28 [border: (4px solid #000000)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2" + LayoutTableRow {TR} at (0,32) size 42x28 + LayoutTableCell {TD} at (2,32) size 18x28 [border: (4px solid #000000)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2" + LayoutTableCell {TD} at (22,32) size 18x28 [border: (4px solid #000000)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 8x18 + text run at (5,5) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png new file mode 100644 index 0000000..a5e8a71 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt new file mode 100644 index 0000000..2cf3d99 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt
@@ -0,0 +1,60 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 470x142 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 468x140 + LayoutTableRow {TR} at (0,0) size 468x140 + LayoutTableCell {TD} at (0,0) size 468x140 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (1,1) size 466x138 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 464x136 + LayoutTableRow {TR} at (0,1) size 464x28 + LayoutTableCell {TD} at (1,1) size 140x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 130x18 + text run at (5,5) width 130: "General Preferences" + LayoutTableCell {TD} at (142,1) size 147x28 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutInline {A} at (0,0) size 137x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 137x18 + text run at (5,5) width 137: "Groups / Permissions" + LayoutTableCell {TD} at (290,1) size 72x28 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutInline {A} at (0,0) size 62x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 62x18 + text run at (5,5) width 62: "Password" + LayoutTableCell {TD} at (363,1) size 49x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutInline {A} at (0,0) size 39x18 [color=#0000EE] + LayoutText {#text} at (5,5) size 39x18 + text run at (5,5) width 39: "Email" + LayoutTableCell {TD} at (413,1) size 50x28 [border: (1px inset #808080)] [r=0 c=4 rs=1 cs=1] + LayoutText {#text} at (5,5) size 40x18 + text run at (5,5) width 40: "Views" + LayoutTableRow {TR} at (0,30) size 464x105 + LayoutTableCell {TD} at (1,30) size 462x105 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=5] + LayoutBlockFlow (anonymous) at (5,5) size 452x18 + LayoutBR {BR} at (226,0) size 0x18 + LayoutTable {TABLE} at (93,23) size 276x77 + LayoutTableSection {TBODY} at (0,0) size 276x77 + LayoutTableRow {TR} at (0,2) size 276x73 + LayoutTableCell {TD} at (2,2) size 272x73 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (1,1) size 270x55 + LayoutTable {TABLE} at (0,0) size 270x55 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 268x53 + LayoutTableRow {TR} at (0,0) size 268x53 + LayoutTableCell {TD} at (0,0) size 268x53 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (1,1) size 266x18 + LayoutText {#text} at (78,0) size 110x18 + text run at (78,0) width 110: "User Preferences" + LayoutTable {TABLE} at (1,19) size 266x33 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 264x31 + LayoutTableRow {TR} at (0,1) size 264x29 + LayoutTableCell {TH} at (1,1) size 120x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {NOBR} at (0,0) size 110x18 + LayoutText {#text} at (5,5) size 110x18 + text run at (5,5) width 110: "Email Address :" + LayoutTableCell {TD} at (122,1) size 141x29 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTextControl {INPUT} at (5,5) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 +layer at (241,97) size 125x13 scrollWidth 189 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 188x13 + text run at (0,0) width 188: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png new file mode 100644 index 0000000..0c046792 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt new file mode 100644 index 0000000..7fd1795 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt
@@ -0,0 +1,26 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutTable {TABLE} at (0,0) size 379x28 [border: (3px outset #808080)] + LayoutTableSection {TBODY} at (3,3) size 373x22 + LayoutTableRow {TR} at (0,0) size 373x22 + LayoutTableCell {TD} at (0,0) size 69x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 65x18 + text run at (2,2) width 65: "fieldLabel" + LayoutTableCell {TD} at (69,0) size 304x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 107x18 + text run at (2,2) width 107: " InspectionText" + LayoutBlockFlow {FORM} at (0,28) size 784x19 + LayoutButton {INPUT} at (0,1) size 85.78x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 69.78x13 + LayoutText {#text} at (0,0) size 70x13 + text run at (0,0) width 70: "change width" + LayoutText {#text} at (85,0) size 5x18 + text run at (85,0) width 5: " " + LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 158.59x13 + LayoutText {#text} at (0,0) size 159x13 + text run at (0,0) width 159: "change width with table reflow" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png new file mode 100644 index 0000000..def1f45 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt new file mode 100644 index 0000000..953c9062 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt
@@ -0,0 +1,16 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 480x18 + text run at (0,0) width 480: "This test case creates a TR element then tries to assign to the cells property" + LayoutBlockFlow {P} at (0,34) size 784x19 + LayoutText {#text} at (0,0) size 42x18 + text run at (0,0) width 42: "Crash " + LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 72.69x13 + LayoutText {#text} at (0,0) size 73x13 + text run at (0,0) width 73: "TR.cells = null" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png new file mode 100644 index 0000000..1468154f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt new file mode 100644 index 0000000..1ad87e4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt
@@ -0,0 +1,80 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF] + LayoutBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 775x36 + text run at (0,0) width 441: "Click on a link on the left hand column. Also note the overlap of the " + text run at (440,0) width 335: "text box with the submit button. (And, removing the" + text run at (0,18) width 156: "font tag that is wrapped " + text run at (155,18) width 239: "around the text box clears up layout)." + LayoutBlockFlow (anonymous) at (0,52) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 + LayoutBlockFlow {FORM} at (0,70) size 784x136 + LayoutBlockFlow {CENTER} at (0,0) size 784x136 + LayoutTable {TABLE} at (92,0) size 600x136 [bgcolor=#EEEEEE] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 598x134 + LayoutTableRow {TR} at (0,3) size 598x128 + LayoutTableCell {TD} at (3,3) size 124x128 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (4,4) size 116x120 [bgcolor=#FFFFFF] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 114x118 + LayoutTableRow {TR} at (0,2) size 114x27 + LayoutTableCell {TD} at (2,3) size 110x24 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 62x18 [color=#660099] + LayoutInline {B} at (0,0) size 62x18 + LayoutText {#text} at (3,3) size 62x18 + text run at (3,3) width 62: "Netscape" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,31) size 114x27 + LayoutTableCell {TD} at (2,32) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 58x18 [color=#660099] + LayoutInline {B} at (0,0) size 58x18 + LayoutText {#text} at (3,3) size 58x18 + text run at (3,3) width 58: "Infoseek" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,60) size 114x27 + LayoutTableCell {TD} at (2,61) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 79x18 [color=#660099] + LayoutInline {B} at (0,0) size 79x18 + LayoutText {#text} at (3,3) size 79x18 + text run at (3,3) width 79: "LookSmart" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,89) size 114x27 + LayoutTableCell {TD} at (2,90) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1] + LayoutInline {A} at (0,0) size 66x18 [color=#660099] + LayoutInline {B} at (0,0) size 66x18 + LayoutText {#text} at (3,3) size 66x18 + text run at (3,3) width 66: "Directory" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (130,27) size 465x79 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutTable {TABLE} at (4,4) size 457x71 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 455x69 + LayoutTableRow {TR} at (0,4) size 455x29 + LayoutTableCell {TD} at (4,4) size 341x29 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=3] + LayoutInline {FONT} at (0,0) size 257x15 + LayoutText {#text} at (0,0) size 0x0 + LayoutTextControl {INPUT} at (5,5) size 257x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Search" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableRow {TR} at (0,37) size 455x28 + LayoutTableCell {TD} at (4,37) size 110x28 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (118,37) size 111x28 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (233,37) size 112x28 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" + LayoutTableCell {TD} at (349,37) size 102x28 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1] + LayoutText {#text} at (5,5) size 27x18 + text run at (5,5) width 27: "asdf" +layer at (248,123) size 251x13 + LayoutBlockFlow {DIV} at (3,3) size 251x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png new file mode 100644 index 0000000..3750390 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png new file mode 100644 index 0000000..a59487b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png new file mode 100644 index 0000000..c64b5a37 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt new file mode 100644 index 0000000..0c0ae7c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt
@@ -0,0 +1,45 @@ +layer at (0,0) size 800x600 scrollWidth 984 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)] + LayoutTableSection {TBODY} at (2,2) size 972x135 + LayoutTableRow {TR} at (0,2) size 972x131 + LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)] + LayoutTableSection {TBODY} at (2,2) size 202x123 + LayoutTableRow {TR} at (0,2) size 202x83 + LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 139x27 + LayoutTableRow {TR} at (0,2) size 139x23 + LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 190x44 + LayoutTableRow {TR} at (0,2) size 190x40 + LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 171x36 + text run at (2,2) width 171: "THIS TABLE NEEDS TO" + text run at (2,20) width 67: "BE HERE" + LayoutTableRow {TR} at (0,87) size 202x34 + LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 190x26 + LayoutTableRow {TR} at (0,2) size 190x22 + LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 182x18 + LayoutText (anonymous) at (8,2) size 151x13 + text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE" + LayoutText {#text} at (0,0) size 0x0 + LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 752x36 + text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE" + text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\"" +layer at (29,29) size 125x13 scrollWidth 132 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 131x13 + text run at (0,0) width 131: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png new file mode 100644 index 0000000..dda01e2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt new file mode 100644 index 0000000..09f5606d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -0,0 +1,41 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {BLOCKQUOTE} at (40,0) size 704x115 + LayoutBlockFlow {CENTER} at (0,0) size 704x115 + LayoutTable {TABLE} at (297.50,0) size 109x80 [border: (2px none #808080)] + LayoutTableSection {TBODY} at (2,2) size 104x75 + LayoutTableRow {TR} at (0,0) size 104x25 + LayoutTableCell {TD} at (0,0) size 37x25 [border: (3px groove #0000FF)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 29x18 + text run at (4,4) width 29: "EST" + LayoutTableCell {TD} at (37,0) size 67x25 [border: (3px groove #0000FF)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "9:00 a.m." + LayoutTableRow {TR} at (0,25) size 104x25 + LayoutTableCell {TD} at (0,25) size 37x25 [border: (3px groove #0000FF)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 30x18 + text run at (4,4) width 30: "CST" + LayoutTableCell {TD} at (37,25) size 67x25 [border: (3px groove #0000FF)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "8:00 a.m." + LayoutTableRow {TR} at (0,50) size 104x25 + LayoutTableCell {TD} at (0,50) size 37x25 [border: (3px groove #0000FF)] [r=2 c=0 rs=1 cs=1] + LayoutText {#text} at (4,4) size 28x18 + text run at (4,4) width 28: "PST" + LayoutTableCell {TD} at (37,50) size 67x25 [border: (3px groove #0000FF)] [r=2 c=1 rs=1 cs=1] + LayoutText {#text} at (4,4) size 60x18 + text run at (4,4) width 60: "6:00 a.m." + LayoutBlockFlow {P} at (0,96) size 704x19 + LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 45.28x13 + LayoutText {#text} at (0,0) size 46x13 + text run at (0,0) width 46: "separate" + LayoutText {#text} at (351,0) size 5x18 + text run at (351,0) width 5: " " + LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 43.02x13 + LayoutText {#text} at (0,0) size 43x13 + text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png new file mode 100644 index 0000000..d30f0a4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png new file mode 100644 index 0000000..b23a51b2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt new file mode 100644 index 0000000..17fdcb0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt
@@ -0,0 +1,105 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow (anonymous) at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 191x18 + text run at (0,0) width 191: "outer width=400 align=center" + LayoutTable {TABLE} at (192,18) size 400x44 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 398x42 + LayoutTableRow {TR} at (0,2) size 398x38 + LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (2,2) size 390x18 + LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutText (anonymous) at (8,2) size 23x13 + text run at (8,2) width 23: "Test" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,62) size 784x18 + LayoutText {#text} at (0,0) size 301x18 + text run at (0,0) width 301: "outer width=400 inner width=200 align=center" + LayoutTable {TABLE} at (0,80) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 392x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (96,2) size 200x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 198x26 + LayoutTableRow {TR} at (0,2) size 198x22 + LayoutTableCell {TD} at (2,2) size 194x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,120) size 784x18 + LayoutText {#text} at (0,0) size 186x18 + text run at (0,0) width 186: "outer auto inner align=center" + LayoutTable {TABLE} at (0,138) size 44x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 40x36 + LayoutTableRow {TR} at (0,2) size 40x32 + LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,178) size 784x18 + LayoutText {#text} at (0,0) size 220x18 + text run at (0,0) width 220: "outer width=50 inner align=center" + LayoutTable {TABLE} at (0,196) size 44x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 40x36 + LayoutTableRow {TR} at (0,2) size 40x32 + LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,236) size 784x18 + LayoutText {#text} at (0,0) size 232x18 + text run at (0,0) width 232: "outer width=50 inner margin-left:50" + LayoutTable {TABLE} at (0,254) size 94x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 90x36 + LayoutTableRow {TR} at (0,2) size 90x32 + LayoutTableCell {TD} at (2,2) size 86x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (52,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutBlockFlow (anonymous) at (0,294) size 784x18 + LayoutText {#text} at (0,0) size 228x18 + text run at (0,0) width 228: "outer width=400 inner align=center" + LayoutTable {TABLE} at (0,312) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 117x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (42.50,2) size 32x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 30x26 + LayoutTableRow {TR} at (0,2) size 30x22 + LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 22x18 + text run at (2,2) width 22: "foo" + LayoutTableCell {TD} at (121,7) size 273x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 80x18 + text run at (2,2) width 80: "x x x x x x x" + LayoutBlockFlow (anonymous) at (0,352) size 784x18 + LayoutText {#text} at (0,0) size 228x18 + text run at (0,0) width 228: "outer width=400 inner align=center" + LayoutTable {TABLE} at (0,370) size 400x40 [border: (2px outset #808080)] + LayoutTableSection {TBODY} at (2,2) size 396x36 + LayoutTableRow {TR} at (0,2) size 396x32 + LayoutTableCell {TD} at (2,2) size 168x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (54,2) size 60x28 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 58x26 + LayoutTableRow {TR} at (0,2) size 58x22 + LayoutTableCell {TD} at (2,2) size 54x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 16x18 + text run at (2,2) width 16: "50" + LayoutTableCell {TD} at (172,7) size 222x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 80x18 + text run at (2,2) width 80: "x x x x x x x" + LayoutBlockFlow (anonymous) at (0,410) size 784x18 + LayoutText {#text} at (0,0) size 20x18 + text run at (0,0) width 20: "-->"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png new file mode 100644 index 0000000..58e6a13 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt new file mode 100644 index 0000000..7da4bf3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt
@@ -0,0 +1,69 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutBlockFlow {FORM} at (0,0) size 784x19 + LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 92x18 + LayoutText (anonymous) at (8,2) size 61x13 + text run at (8,2) width 61: "append cell" + LayoutText {#text} at (92,0) size 53x18 + text run at (92,0) width 53: " tbody " + LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (185,0) size 42x18 + text run at (185,0) width 42: " row " + LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (267,0) size 36x18 + text run at (267,0) width 36: " col " + LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (343,0) size 76x18 + text run at (343,0) width 76: " row span " + LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (459,0) size 69x18 + text run at (459,0) width 69: " col span " + LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (568,0) size 21x18 + text run at (568,0) width 21: " " + LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 24.53x13 + LayoutText {#text} at (0,0) size 25x13 + text run at (0,0) width 25: "Do It" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow (anonymous) at (0,35) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 + LayoutTable {TABLE} at (0,53) size 64x52 [bgcolor=#FFA500] [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 62x50 + LayoutTableRow {TR} at (0,2) size 62x22 + LayoutTableCell {TD} at (2,2) size 28x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 23x18 + text run at (2,2) width 23: "c11" + LayoutTableRow {TR} at (0,26) size 62x22 + LayoutTableCell {TD} at (2,26) size 28x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 24x18 + text run at (2,2) width 24: "c21" + LayoutTableCell {TD} at (32,26) size 28x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 24x18 + text run at (2,2) width 24: "c22" + LayoutBlockFlow (anonymous) at (0,105) size 784x18 + LayoutBR {BR} at (0,0) size 0x18 +layer at (155,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (237,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (314,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 7x13 + text run at (0,0) width 7: "0" +layer at (429,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 6x13 + text run at (0,0) width 6: "1" +layer at (539,11) size 35x13 + LayoutBlockFlow {DIV} at (3,3) size 35x13 + LayoutText {#text} at (0,0) size 6x13 + text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png new file mode 100644 index 0000000..af44f4b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png new file mode 100644 index 0000000..02e2d6b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png new file mode 100644 index 0000000..3d3b6c5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png new file mode 100644 index 0000000..0edb31b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png new file mode 100644 index 0000000..2ad1279 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png new file mode 100644 index 0000000..fc3fd5b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png new file mode 100644 index 0000000..a84f408 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt new file mode 100644 index 0000000..fe2063ce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -0,0 +1,68 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 600x276 [bgcolor=#FFC0CB] + LayoutTableSection {TBODY} at (0,0) size 600x276 + LayoutTableRow {TR} at (0,0) size 600x18 + LayoutTableCell {TD} at (0,0) size 600x18 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=3] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "1" + LayoutTableRow {TR} at (0,18) size 600x18 + LayoutTableCell {TD} at (0,18) size 600x18 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=3] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "2" + LayoutTableRow {TR} at (0,36) size 600x0 + LayoutTableCell {TD} at (0,36) size 155x18 [bgcolor=#00FFFF] [r=2 c=0 rs=40 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "3" + LayoutTableRow {TR} at (0,36) size 600x24 + LayoutTableCell {TD} at (155,36) size 445x24 [bgcolor=#FFA500] [r=3 c=1 rs=1 cs=1] + LayoutTable {TABLE} at (0,0) size 440x24 + LayoutTableSection {TBODY} at (0,0) size 440x24 + LayoutTableRow {TR} at (0,2) size 440x20 + LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 77.73x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 78: "Submit Criteria" + LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (1,1) size 8x18 + text run at (1,1) width 8: "4" + LayoutTableRow {TR} at (0,60) size 600x18 + LayoutTableCell {TD} at (155,60) size 445x18 [bgcolor=#FF0000] [r=4 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "5" + LayoutTableRow {TR} at (0,78) size 600x36 + LayoutTableCell {TD} at (155,78) size 445x36 [bgcolor=#FFFF00] [r=5 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 436x36 + text run at (0,0) width 263: "If you have entered your feature criteria, " + text run at (262,0) width 174: "press the \"Submit Criteria\"" + text run at (0,18) width 88: "button above." + LayoutTableRow {TR} at (0,114) size 600x18 + LayoutTableCell {TD} at (155,114) size 445x18 [bgcolor=#D3D3D3] [r=6 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 8x18 + text run at (0,0) width 8: "6" + LayoutTableRow {TR} at (0,132) size 600x54 + LayoutTableCell {TD} at (155,132) size 445x54 [r=7 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 433x54 + text run at (0,0) width 267: "If you want to do a radius search instead, " + text run at (266,0) width 167: "press the \"Radius Search\"" + text run at (0,18) width 49: "button. " + text run at (48,18) width 287: "This will allow you to select a starting point " + text run at (334,18) width 71: "and enter a" + text run at (0,36) width 204: "radius with new feature criteria." + LayoutTableRow {TR} at (0,186) size 600x18 + LayoutTableCell {TD} at (155,186) size 445x18 [r=8 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 4x18 + text run at (0,0) width 4: " " + LayoutTableRow {TR} at (0,204) size 600x72 + LayoutTableCell {TD} at (155,204) size 445x72 [r=9 c=1 rs=1 cs=1] + LayoutText {#text} at (0,0) size 419x72 + text run at (0,0) width 419: "All information provided is deemed reliable but is not guaranteed" + text run at (0,18) width 93: "and should be " + text run at (92,18) width 291: "independently verified. The price shown may" + text run at (0,36) width 206: "represent the top or bottom of a " + text run at (205,36) width 168: "price range listing and not" + text run at (0,54) width 193: "necessarily a fixed price offer."
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png new file mode 100644 index 0000000..bd530e3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt new file mode 100644 index 0000000..2f1fd4ef --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -0,0 +1,180 @@ +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 1444 + LayoutView at (0,0) size 800x600 +layer at (8,8) size 769x1428 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (8,8) size 769x1428 [border: (16px solid #00FF00)] + LayoutTable (anonymous) at (16,16) size 737x1396 + LayoutTableSection (anonymous) at (0,0) size 737x1396 + LayoutTableRow (anonymous) at (0,0) size 737x1396 + LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)] + LayoutText {#text} at (1,1) size 188x54 + text run at (1,1) width 188: "Evil Tests: Rendering BODY" + text run at (1,19) width 163: "and HEAD as children of" + text run at (1,37) width 67: "HTML - 2" + LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)] + LayoutText {#text} at (1,1) size 206x252 + text run at (1,1) width 83: "/* Layout */ " + text run at (83,1) width 112: "HTML { display:" + text run at (1,19) width 194: "block; border: 1em lime solid;" + text run at (1,37) width 98: "margin: 8px; } " + text run at (98,37) width 99: "HEAD, BODY" + text run at (1,55) width 181: "{ display: table-cell; border:" + text run at (1,73) width 76: "solid thick; " + text run at (76,73) width 93: "padding: 1em;" + text run at (1,91) width 102: "margin: 1em; } " + text run at (102,91) width 74: "HEAD > *," + text run at (1,109) width 181: "BODY > * { display: block;" + text run at (1,127) width 178: "border: thin dotted; margin:" + text run at (1,145) width 60: "1em 0; } " + text run at (60,145) width 105: "/* Formatting */" + text run at (1,163) width 142: "HTML { color: black;" + text run at (1,181) width 140: "background: green; } " + text run at (140,181) width 57: "HEAD {" + text run at (1,199) width 206: "color: white; background: red; }" + text run at (1,217) width 151: "BODY { color: yellow;" + text run at (1,235) width 124: "background: teal; }" + LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1] + LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 152x37 + text run at (1,1) width 152: "Rendering " + LayoutInline {CODE} at (0,0) size 63x30 + LayoutText {#text} at (153,6) size 63x30 + text run at (153,6) width 63: "BODY" + LayoutText {#text} at (215,1) size 68x37 + text run at (215,1) width 68: " and " + LayoutInline {CODE} at (0,0) size 63x30 + LayoutText {#text} at (283,6) size 63x30 + text run at (283,6) width 63: "HEAD" + LayoutText {#text} at (345,1) size 381x74 + text run at (345,1) width 37: " as" + text run at (1,38) width 156: "children of " + LayoutInline {CODE} at (0,0) size 64x30 + LayoutText {#text} at (156,43) size 64x30 + text run at (156,43) width 64: "HTML" + LayoutText {#text} at (219,38) size 43x37 + text run at (219,38) width 43: " - 2" + LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 393x18 + text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail" + LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] + LayoutText {#text} at (1,19) size 186x18 + text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk" + LayoutText {#text} at (186,19) size 5x18 + text run at (186,19) width 5: "." + LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {DT} at (1,1) size 442x18 + LayoutText {#text} at (0,0) size 83x18 + text run at (0,0) width 83: "Prerequisites" + LayoutBlockFlow {DD} at (41,19) size 402x72 + LayoutText {#text} at (0,0) size 392x54 + text run at (0,0) width 392: "Browsers that are subjected to this test should support the the" + text run at (0,18) width 388: "background, padding, margin, border and color properties of" + text run at (0,36) width 160: "CSS, and in addition the " + LayoutInline {CODE} at (0,0) size 63x15 + LayoutText {#text} at (160,38) size 63x15 + text run at (160,38) width 63: "overflow" + LayoutText {#text} at (222,36) size 400x36 + text run at (222,36) width 178: " property and fixed position" + text run at (0,54) width 109: "stuff from CSS2." + LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 440x56 + text run at (1,1) width 440: "1. Making the BODY and the HEAD into a" + text run at (1,29) width 51: "table" + LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 264x18 + text run at (1,1) width 264: "This is really evil, but completely valid..." + LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 430x108 + text run at (1,1) width 426: "This document should have two cells, side by side: one on the left," + text run at (1,19) width 426: "the other on the right. The one on the left should be red with white" + text run at (1,37) width 430: "writing and a thick white border. It should contain four dotted lines" + text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box" + text run at (1,73) width 403: "containing the document title, and another dotted bordered box" + text run at (1,91) width 286: "containing the stylesheet, also shown below:" + LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 39x15 + text run at (1,1) width 39: " ..." + text run at (40,1) width 0: " " + LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 419x36 + text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be" + text run at (1,19) width 40: "white." + LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 424x36 + text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you" + text run at (1,19) width 278: "are reading now should be in this right cell." + LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 413x36 + text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I" + text run at (1,19) width 37: "think." + LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 439x72 + text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --" + text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there" + text run at (1,37) width 414: "should be a blank line between each such box. No box should be" + text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other." + LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 417x36 + text run at (1,1) width 417: "The cells should be the same height, and they should have grown" + text run at (1,19) width 229: "vertically to accommodate this text." + LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 437x54 + text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light" + text run at (1,19) width 437: "green. The cells should be separated from each other and from these" + text run at (1,37) width 230: "outer borders by 1em of dark green." + LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 429x36 + text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you" + text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis." + LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 156x28 + text run at (1,1) width 156: "Submit Results" + LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (1,17) size 442x56 + LayoutText {#text} at (0,0) size 263x18 + text run at (0,0) width 263: "How does your browser fare on this test?" + LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 442x18 + LayoutText (anonymous) at (8,2) size 210x13 + text run at (8,2) width 210: "Document renders exactly as described." + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {LABEL} at (0,0) size 203x18 + LayoutText {#text} at (0,37) size 72x18 + text run at (0,37) width 72: "Comment: " + LayoutTextControl {INPUT} at (71.55,37) size 131x19 [color=#000000] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (202,37) size 5x18 + text run at (202,37) width 5: " " + LayoutButton {INPUT} at (206.55,38) size 52.47x18 [color=#000000] [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 + LayoutText {#text} at (0,0) size 37x13 + text run at (0,0) width 37: "Submit" + LayoutText {#text} at (0,0) size 0x0 + LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)] + LayoutInline {A} at (0,0) size 162x18 [color=#0000EE] + LayoutText {#text} at (1,1) size 162x18 + text run at (1,1) width 162: "Up to the Evil Tests Page" + LayoutText {#text} at (162,1) size 5x18 + text run at (162,1) width 5: "." + LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 177x18 + text run at (1,1) width 177: "This page is maintained by " + LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] + LayoutText {#text} at (177,1) size 79x18 + text run at (177,1) width 79: "Ian Hickson" + LayoutText {#text} at (255,1) size 10x18 + text run at (255,1) width 10: " (" + LayoutInline {A} at (0,0) size 125x18 [color=#0000EE] + LayoutText {#text} at (264,1) size 125x18 + text run at (264,1) width 125: "py8ieh@bath.ac.uk" + LayoutText {#text} at (388,1) size 10x18 + text run at (388,1) width 10: ")." + LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 172x18 + text run at (1,1) width 172: "Last updated in June 1999." +layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png new file mode 100644 index 0000000..70f68db --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt new file mode 100644 index 0000000..f3cd060a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -0,0 +1,46 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x584 + LayoutTable {TABLE} at (0,0) size 259x240 [border: (1px outset #808080)] + LayoutTableSection {TBODY} at (1,1) size 257x238 + LayoutTableRow {TR} at (0,2) size 257x22 + LayoutTableCell {TD} at (2,11) size 41x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] + LayoutTableCell {TD} at (45,2) size 76x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 1" + LayoutTableCell {TD} at (123,2) size 54x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 2" + LayoutTableCell {TD} at (179,2) size 76x22 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] + LayoutText {#text} at (2,2) size 32x18 + text run at (2,2) width 32: "col 3" + LayoutTableRow {TR} at (0,26) size 257x78 + LayoutTableCell {TD} at (2,54) size 41x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 1" + LayoutTableCell {TD} at (45,26) size 210x210 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=3] + LayoutBlockFlow (floating) {DIV} at (2,2) size 206x206 [border: (3px solid #FF0000)] + LayoutText {#text} at (83,3) size 40x18 + text run at (83,3) width 40: "tjosan" + LayoutTableRow {TR} at (0,106) size 257x50 + LayoutTableCell {TD} at (2,120) size 41x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 2" + LayoutTableRow {TR} at (0,158) size 257x78 + LayoutTableCell {TD} at (2,186) size 41x22 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 37x18 + text run at (2,2) width 37: "row 3" + LayoutBlockFlow (anonymous) at (0,240) size 784x19 + LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 37.80x13 + LayoutText {#text} at (0,0) size 38x13 + text run at (0,0) width 38: "expand" + LayoutText {#text} at (53,0) size 5x18 + text run at (53,0) width 5: " " + LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 26.28x13 + LayoutText {#text} at (0,0) size 27x13 + text run at (0,0) width 27: "sizes" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png new file mode 100644 index 0000000..2f496d96 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png new file mode 100644 index 0000000..63487bc --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt new file mode 100644 index 0000000..a3a1d3c2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -0,0 +1,83 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {CENTER} at (0,0) size 784x132 + LayoutTable {TABLE} at (339,0) size 106x80 + LayoutTableSection {THEAD} at (0,0) size 106x20 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 29x18 + text run at (1,1) width 29: "EST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "1am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "8pm" + LayoutTableSection {TBODY} at (0,20) size 106x40 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 30x18 + text run at (1,1) width 30: "CST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "2am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "9pm" + LayoutTableRow {TR} at (0,20) size 106x20 + LayoutTableCell {TD} at (0,20) size 35x20 [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 33x18 + text run at (1,1) width 33: "MST" + LayoutTableCell {TD} at (35,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "3am" + LayoutTableCell {TD} at (66,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 37x18 + text run at (2,1) width 37: "10pm" + LayoutTableSection {TFOOT} at (0,60) size 106x20 + LayoutTableRow {TR} at (0,0) size 106x20 + LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (1,1) size 28x18 + text run at (1,1) width 28: "PST" + LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "4am" + LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 36x18 + text run at (2,1) width 36: "11pm" + LayoutBlockFlow {P} at (0,96) size 784x36 + LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 + LayoutText {#text} at (0,0) size 58x13 + text run at (0,0) width 18: "No " + text run at (17,0) width 41: "borders" + LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 44: "Exterior " + text run at (43,0) width 35: "border" + LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 17: "All " + text run at (16,0) width 41: "borders" + LayoutBR {BR} at (512,13) size 0x0 + LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 + LayoutText {#text} at (0,0) size 83x13 + text run at (0,0) width 43: "Column " + text run at (42,0) width 41: "borders" + LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 + LayoutText {#text} at (0,0) size 81x13 + text run at (0,0) width 41: "Groups " + text run at (40,0) width 41: "borders" + LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 32: "Table " + text run at (31,0) width 63: "row borders" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png new file mode 100644 index 0000000..730816b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt new file mode 100644 index 0000000..8eb2c06 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -0,0 +1,83 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutBlockFlow {HTML} at (0,0) size 800x600 + LayoutBlockFlow {BODY} at (8,8) size 784x576 + LayoutBlockFlow {CENTER} at (0,0) size 784x134 + LayoutTable {TABLE} at (338,0) size 108x82 [border: none] + LayoutTableSection {THEAD} at (0,0) size 107x21 + LayoutTableRow {TR} at (0,0) size 107x21 + LayoutTableCell {TD} at (0,0) size 36x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,2) size 29x18 + text run at (2,2) width 29: "EST" + LayoutTableCell {TD} at (36,0) size 31x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,2) size 28x18 + text run at (2,2) width 28: "1am" + LayoutTableCell {TD} at (67,0) size 40x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,2) size 29x18 + text run at (2,2) width 29: "8pm" + LayoutTableSection {TBODY} at (0,21) size 107x40 + LayoutTableRow {TR} at (0,0) size 107x20 + LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 30x18 + text run at (2,1) width 30: "CST" + LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "2am" + LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 29x18 + text run at (2,1) width 29: "9pm" + LayoutTableRow {TR} at (0,20) size 107x20 + LayoutTableCell {TD} at (0,20) size 36x20 [border: none none none (1px solid #808080)] [r=1 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 33x18 + text run at (2,1) width 33: "MST" + LayoutTableCell {TD} at (36,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "3am" + LayoutTableCell {TD} at (67,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 37x18 + text run at (2,1) width 37: "10pm" + LayoutTableSection {TFOOT} at (0,61) size 107x20 + LayoutTableRow {TR} at (0,0) size 107x20 + LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "PST" + LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1] + LayoutText {#text} at (2,1) size 28x18 + text run at (2,1) width 28: "4am" + LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1] + LayoutText {#text} at (2,1) size 36x18 + text run at (2,1) width 36: "11pm" + LayoutBlockFlow {P} at (0,98) size 784x36 + LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 + LayoutText {#text} at (0,0) size 58x13 + text run at (0,0) width 18: "No " + text run at (17,0) width 41: "borders" + LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + LayoutText {#text} at (0,0) size 78x13 + text run at (0,0) width 44: "Exterior " + text run at (43,0) width 35: "border" + LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutText {#text} at (0,0) size 57x13 + text run at (0,0) width 17: "All " + text run at (16,0) width 41: "borders" + LayoutBR {BR} at (512,13) size 0x0 + LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 + LayoutText {#text} at (0,0) size 83x13 + text run at (0,0) width 43: "Column " + text run at (42,0) width 41: "borders" + LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 + LayoutText {#text} at (0,0) size 81x13 + text run at (0,0) width 41: "Groups " + text run at (40,0) width 41: "borders" + LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 + LayoutText {#text} at (0,0) size 94x13 + text run at (0,0) width 32: "Table " + text run at (31,0) width 63: "row borders" + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png new file mode 100644 index 0000000..20d9f95 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png index d945c22b..c269bdd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt index 2e58825..c94ea79 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt
@@ -19,15 +19,15 @@ text run at (67,3) width 128: "Search the Web with" LayoutText {#text} at (194,1) size 5x18 text run at (194,1) width 5: " " - LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8] + LayoutMenuList {SELECT} at (198.31,2) size 81x18 [bgcolor=#F8F8F8] LayoutBlockFlow (anonymous) at (0,0) size 81x18 LayoutText (anonymous) at (8,2) size 50x13 text run at (8,2) width 50: "Netscape" - LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutTextControl {INPUT} at (279.31,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutText {#text} at (470,1) size 5x18 text run at (470,1) width 5: " " - LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutButton {INPUT} at (474.31,2) size 52.25x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.25x13 LayoutText {#text} at (0,0) size 37x13 text run at (0,0) width 37: "Search" LayoutBR {BR} at (526,15) size 1x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png index 0a71684..d9eea74 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt index b0569d1..9f1f2e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt
@@ -42,8 +42,8 @@ LayoutInline {FONT} at (0,0) size 1x15 LayoutText {#text} at (0,0) size 0x0 LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2] - LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 22.45x13 + LayoutButton {INPUT} at (55.63,1) size 38.75x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 22.75x13 LayoutText {#text} at (0,0) size 23x13 text run at (0,0) width 23: "vote" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png index c782f50..cecf61ee 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt index 8524e91a..fe9e6109 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt
@@ -3,32 +3,32 @@ layer at (0,0) size 800x600 LayoutBlockFlow {HTML} at (0,0) size 800x600 LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutTable {TABLE} at (0,0) size 144x52 - LayoutTableSection {TBODY} at (0,0) size 144x52 - LayoutTableRow {TR} at (0,2) size 144x48 - LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (anonymous) at (1,1) size 138x0 + LayoutTable {TABLE} at (0,0) size 145x52 + LayoutTableSection {TBODY} at (0,0) size 145x52 + LayoutTableRow {TR} at (0,2) size 145x48 + LayoutTableCell {TD} at (2,2) size 141x48 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow (anonymous) at (1,1) size 139x0 LayoutInline {SPAN} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 LayoutInline {SPAN} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (1,1) size 138x46 - LayoutTable {TABLE} at (0,0) size 138x46 - LayoutTableSection {TBODY} at (0,0) size 138x46 - LayoutTableRow {TR} at (0,2) size 138x42 - LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1] - LayoutTable (floating) {TABLE} at (1,1) size 132x40 - LayoutTableSection {TBODY} at (0,0) size 132x40 - LayoutTableRow {TR} at (0,2) size 132x36 - LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow {FORM} at (1,1) size 126x18 - LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 109.34x13 - LayoutText {#text} at (0,0) size 110x13 - text run at (0,0) width 110: "ApplyForThisPosition" + LayoutBlockFlow (anonymous) at (1,1) size 139x46 + LayoutTable {TABLE} at (0,0) size 139x46 + LayoutTableSection {TBODY} at (0,0) size 139x46 + LayoutTableRow {TR} at (0,2) size 139x42 + LayoutTableCell {TD} at (2,2) size 135x42 [r=0 c=0 rs=1 cs=1] + LayoutTable (floating) {TABLE} at (1,1) size 133x40 + LayoutTableSection {TBODY} at (0,0) size 133x40 + LayoutTableRow {TR} at (0,2) size 133x36 + LayoutTableCell {TD} at (2,2) size 129x36 [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {FORM} at (1,1) size 127x18 + LayoutButton {INPUT} at (0,0) size 126.09x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 110.09x13 + LayoutText {#text} at (0,0) size 111x13 + text run at (0,0) width 111: "ApplyForThisPosition" LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow (anonymous) at (1,47) size 138x0 + LayoutBlockFlow (anonymous) at (1,47) size 139x0 LayoutInline {SPAN} at (0,0) size 0x0 LayoutInline {SPAN} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png index 7bd0345..5cb693c4e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt index 86bec78..7a6abf85 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt
@@ -8,36 +8,36 @@ text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page" LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)] LayoutBlockFlow {FORM} at (0,57.91) size 784x47 - LayoutTable {TABLE} at (0,0) size 600x47 - LayoutTableSection {TBODY} at (0,0) size 600x47 - LayoutTableRow {TR} at (0,2) size 600x21 + LayoutTable {TABLE} at (0,0) size 601x47 + LayoutTableSection {TBODY} at (0,0) size 601x47 + LayoutTableRow {TR} at (0,2) size 601x21 LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1] LayoutInline {B} at (0,0) size 95x18 LayoutText {#text} at (1,1) size 95x18 text run at (1,1) width 95: "Trigger URL:" LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1] LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1] - LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 37.27x13 + LayoutTableCell {TD} at (515,2) size 84x20 [r=0 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 53.75x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 37.75x13 LayoutText {#text} at (0,0) size 38x13 text run at (0,0) width 38: "Trigger" - LayoutTableRow {TR} at (0,25) size 600x20 + LayoutTableRow {TR} at (0,25) size 601x20 LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1] LayoutInline {B} at (0,0) size 104x18 LayoutText {#text} at (1,1) size 104x18 text run at (1,1) width 104: "Run Test Case:" LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1] - LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 253x18 - LayoutText (anonymous) at (8,2) size 70x13 - text run at (8,2) width 70: "a_abortinstall" + LayoutMenuList {SELECT} at (1,1) size 254x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 254x18 + LayoutText (anonymous) at (8,2) size 69x13 + text run at (8,2) width 69: "a_abortinstall" LayoutText {#text} at (0,0) size 0x0 - LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1] - LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 64.64x13 - LayoutText {#text} at (0,0) size 65x13 - text run at (0,0) width 65: "Trigger case" + LayoutTableCell {TD} at (515,25) size 84x20 [r=1 c=2 rs=1 cs=1] + LayoutButton {INPUT} at (1,1) size 81.13x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 65.13x13 + LayoutText {#text} at (0,0) size 66x13 + text run at (0,0) width 66: "Trigger case" layer at (122,72) size 395x13 LayoutBlockFlow {DIV} at (3,3) size 395x13 LayoutText {#text} at (0,0) size 94x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png index fb45699..2a70dee 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt index 47cb4dd8..7b332bef 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt
@@ -102,45 +102,45 @@ layer at (20,26) size 760x32 clip at (21,27) size 758x30 LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 754x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (20,76) size 760x32 clip at (21,77) size 758x30 LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 754x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (24,128) size 752x32 clip at (25,129) size 750x30 LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 746x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (24,182) size 752x32 clip at (25,183) size 750x30 LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 746x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (27,237) size 746x32 clip at (28,238) size 744x30 LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 740x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (27,293) size 746x32 clip at (28,294) size 744x30 LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 740x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (24,348) size 752x32 clip at (25,349) size 750x30 LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 746x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (27,403) size 746x32 clip at (28,404) size 744x30 LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 740x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test" layer at (31,461) size 738x32 clip at (32,462) size 736x30 LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 732x13 - LayoutText {#text} at (0,0) size 20x13 - text run at (0,0) width 20: "test" + LayoutText {#text} at (0,0) size 21x13 + text run at (0,0) width 21: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png index 045bb950..7c0bff5a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt index 7c7ced6..a9a1f1fc8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -103,8 +103,8 @@ text run at (0,0) width 40: "Submit!" LayoutText {#text} at (55,6) size 7x19 text run at (55,6) width 7: " " - LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 56.97x13 + LayoutButton {INPUT} at (61.52,9) size 72.86x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 56.86x13 LayoutText {#text} at (0,0) size 57x13 text run at (0,0) width 57: "Clear Form" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png index 325e09d..0f3eaeb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt index 057baa2..fd79402 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -1,8 +1,8 @@ -layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659 +layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 678 LayoutView at (0,0) size 800x600 -layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 - LayoutBlockFlow {HTML} at (0,0) size 785x658.50 - LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06 +layer at (0,0) size 785x678 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600 + LayoutBlockFlow {HTML} at (0,0) size 785x677.50 + LayoutBlockFlow {BODY} at (8,21.44) size 769x640.06 LayoutBlockFlow {H1} at (0,0) size 769x37 LayoutText {#text} at (0,0) size 311x37 text run at (0,0) width 311: "Generic Table Tests - 1" @@ -62,29 +62,28 @@ LayoutBlockFlow {H2} at (0,400.16) size 769x28 LayoutText {#text} at (0,0) size 156x28 text run at (0,0) width 156: "Submit Results" - LayoutBlockFlow {FORM} at (0,448.06) size 769x19 - LayoutBlockFlow {P} at (0,0) size 769x19 + LayoutBlockFlow {FORM} at (0,448.06) size 769x38 + LayoutBlockFlow {P} at (0,0) size 769x38 LayoutText {#text} at (0,0) size 267x18 text run at (0,0) width 267: "How does your browser fare on this test? " - LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 238x18 - LayoutText (anonymous) at (8,2) size 138x13 - text run at (8,2) width 138: "The test renders correctly." - LayoutText {#text} at (504,0) size 5x18 - text run at (504,0) width 5: " " + LayoutMenuList {SELECT} at (266.59,1) size 240x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 240x18 + LayoutText (anonymous) at (8,2) size 139x13 + text run at (8,2) width 139: "The test renders correctly." + LayoutText {#text} at (506,0) size 5x18 + text run at (506,0) width 5: " " LayoutInline {LABEL} at (0,0) size 204x18 - LayoutText {#text} at (508,0) size 73x18 - text run at (508,0) width 73: "Comment: " - LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (711,0) size 5x18 - text run at (711,0) width 5: " " - LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0] + LayoutText {#text} at (510,0) size 73x18 + text run at (510,0) width 73: "Comment: " + LayoutTextControl {INPUT} at (582.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (0,0) size 0x0 + LayoutButton {INPUT} at (0,20) size 52.47x18 [bgcolor=#C0C0C0] LayoutBlockFlow (anonymous) at (8,2) size 36.47x13 LayoutText {#text} at (0,0) size 37x13 text run at (0,0) width 37: "Submit" LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)] - LayoutBlockFlow {P} at (0,501.06) size 769x18 + LayoutBlockFlow {HR} at (0,502.06) size 769x2 [border: (1px inset #EEEEEE)] + LayoutBlockFlow {P} at (0,520.06) size 769x18 LayoutText {#text} at (0,0) size 64x18 text run at (0,0) width 64: "Up to the " LayoutInline {A} at (0,0) size 73x18 [color=#0000EE] @@ -92,7 +91,7 @@ text run at (63,0) width 73: "Table Tests" LayoutText {#text} at (135,0) size 5x18 text run at (135,0) width 5: "." - LayoutBlockFlow {P} at (0,535.06) size 769x18 + LayoutBlockFlow {P} at (0,554.06) size 769x18 LayoutText {#text} at (0,0) size 64x18 text run at (0,0) width 64: "Up to the " LayoutInline {A} at (0,0) size 99x18 [color=#0000EE] @@ -100,7 +99,7 @@ text run at (63,0) width 99: "Evil Tests Page" LayoutText {#text} at (161,0) size 5x18 text run at (161,0) width 5: "." - LayoutBlockFlow {P} at (0,569.06) size 769x18 + LayoutBlockFlow {P} at (0,588.06) size 769x18 LayoutText {#text} at (0,0) size 177x18 text run at (0,0) width 177: "This page is maintained by " LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] @@ -113,8 +112,8 @@ text run at (263,0) width 125: "py8ieh@bath.ac.uk" LayoutText {#text} at (387,0) size 10x18 text run at (387,0) width 10: ")." - LayoutBlockFlow {P} at (0,603.06) size 769x18 + LayoutBlockFlow {P} at (0,622.06) size 769x18 LayoutText {#text} at (0,0) size 185x18 text run at (0,0) width 185: "Last updated in March 1999." -layer at (591,473) size 125x13 +layer at (593,473) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png index 6a8402f9..90da3b8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt index 07df1f8f..ca4f1c4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -184,10 +184,10 @@ LayoutBlockFlow {P} at (0,0) size 769x38 LayoutText {#text} at (0,0) size 267x18 text run at (0,0) width 267: "How does your browser fare on this test? " - LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 458x18 - LayoutText (anonymous) at (8,2) size 427x13 - text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables." + LayoutMenuList {SELECT} at (266.59,1) size 460x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 460x18 + LayoutText (anonymous) at (8,2) size 429x13 + text run at (8,2) width 429: "The tests all render identically, and this browser may or may not grok CSS2 tables." LayoutText {#text} at (0,0) size 0x0 LayoutInline {LABEL} at (0,0) size 203x18 LayoutText {#text} at (0,19) size 72x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png index 2ebdacb..dfcf66f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt index ed36ede..2dea0483 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt
@@ -15,8 +15,8 @@ LayoutText {#text} at (1,1) size 59x18 text run at (1,1) width 59: "First row" LayoutBlockFlow {FORM} at (0,46) size 784x18 - LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 29.69x13 + LayoutButton {INPUT} at (0,0) size 45.36x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 29.36x13 LayoutText {#text} at (0,0) size 30x13 text run at (0,0) width 30: "insert" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png index 9be97bc9..d9e1a2e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png index a7dde3e..7543905 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt index d8e9be2a4..bf91640d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt
@@ -8,8 +8,8 @@ LayoutTableRow {TR} at (0,2) size 398x38 LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] LayoutBlockFlow {FORM} at (2,2) size 390x18 - LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutMenuList {SELECT} at (0,0) size 55x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 55x18 LayoutText (anonymous) at (8,2) size 23x13 text run at (8,2) width 23: "Test" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png index 3ffdc42..fc71643 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png index 723437da..42e4f5dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt index fb6b805..d6f792cf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt
@@ -47,8 +47,8 @@ layer at (11,92) size 622x75 clip at (12,93) size 620x73 LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 616.39x13 - LayoutText {#text} at (0,0) size 219x13 - text run at (0,0) width 219: "BUG: the height of the textarea is not 80%" + LayoutText {#text} at (0,0) size 220x13 + text run at (0,0) width 220: "BUG: the height of the textarea is not 80%" layer at (11,208) size 622x80 clip at (12,209) size 620x78 LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)] LayoutBlockFlow {DIV} at (3,3) size 616.39x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png index 3f112728..b4614314 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt index fdc2a5f4..a387435 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt
@@ -8,13 +8,13 @@ LayoutTableSection {TBODY} at (0,0) size 784x24 LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF] LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1] - LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 47.33x13 + LayoutButton {INPUT} at (1.39,1) size 63.22x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 47.22x13 LayoutText {#text} at (0,0) size 48x13 text run at (0,0) width 48: "Select all" LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1] - LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 33.53x13 + LayoutButton {INPUT} at (1.19,1) size 49.61x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 33.61x13 LayoutText {#text} at (0,0) size 34x13 text run at (0,0) width 34: "Delete" LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1] @@ -22,17 +22,17 @@ LayoutBlockFlow (anonymous) at (8,2) size 62.45x13 LayoutText {#text} at (0,0) size 63x13 text run at (0,0) width 63: "Empty trash" - LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1] + LayoutTableCell {TD} at (207,2) size 397x20 [r=0 c=3 rs=1 cs=1] LayoutText {#text} at (1,1) size 4x18 text run at (1,1) width 4: " " - LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1] - LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 44.72x13 - LayoutText {#text} at (0,0) size 45x13 - text run at (0,0) width 45: "Move to:" - LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1] - LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 107x18 - LayoutText (anonymous) at (8,2) size 76x13 - text run at (8,2) width 76: "Choose folder " + LayoutTableCell {TD} at (606,2) size 64x20 [r=0 c=4 rs=1 cs=1] + LayoutButton {INPUT} at (1.38,1) size 61.23x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 45.23x13 + LayoutText {#text} at (0,0) size 46x13 + text run at (0,0) width 46: "Move to:" + LayoutTableCell {TD} at (672,2) size 110x20 [r=0 c=5 rs=1 cs=1] + LayoutMenuList {SELECT} at (1,1) size 108x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 108x18 + LayoutText (anonymous) at (8,2) size 77x13 + text run at (8,2) width 77: "Choose folder " LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png index e41f46d..23927f4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png index 6751598..f0086ff2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt index 3d83b492..a64d06e9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt
@@ -16,8 +16,8 @@ LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutText {#text} at (169,0) size 5x18 text run at (169,0) width 5: " " - LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 75x18 + LayoutMenuList {SELECT} at (173.81,1) size 76x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 76x18 LayoutText (anonymous) at (8,2) size 32x13 text run at (8,2) width 32: "Excite" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png index 960233a9..1662a14a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png index e23513f..b6e9350b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt index 988e2fe..6226b50c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt
@@ -110,8 +110,8 @@ LayoutBlockFlow {FORM} at (2,2) size 150x19 LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] LayoutBlockFlow (anonymous) at (8,2) size 184x13 - LayoutText {#text} at (75,0) size 34x13 - text run at (75,0) width 34: "button" + LayoutText {#text} at (74,0) size 36x13 + text run at (74,0) width 36: "button" layer at (167,219) size 138x23 clip at (168,220) size 136x21 LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] LayoutText {#text} at (2,2) size 4x18 @@ -129,8 +129,8 @@ LayoutBlockFlow {FORM} at (2,2) size 276x19 LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] LayoutBlockFlow (anonymous) at (8,2) size 184x13 - LayoutText {#text} at (75,0) size 34x13 - text run at (75,0) width 34: "button" + LayoutText {#text} at (74,0) size 36x13 + text run at (74,0) width 36: "button" layer at (293,272) size 12x23 clip at (294,273) size 10x21 LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] LayoutText {#text} at (2,2) size 4x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png index ce84b733..50ca0ca 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt index 41ab6b65a5..864a778 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -33,19 +33,19 @@ text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..." LayoutBlockFlow (anonymous) at (0,111) size 784x37 LayoutBR {BR} at (0,0) size 0x18 - LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutButton {INPUT} at (0,19) size 51.58x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.58x13 LayoutText {#text} at (0,0) size 36x13 text run at (0,0) width 36: "Reload" LayoutText {#text} at (51,18) size 9x18 text run at (51,18) width 9: " " - LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutButton {INPUT} at (59.58,19) size 82.20x18 [bgcolor=#C0C0C0] LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 LayoutText {#text} at (0,0) size 67x13 text run at (0,0) width 67: "Change Font" LayoutText {#text} at (141,18) size 9x18 text run at (141,18) width 9: " " - LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutTextControl {INPUT} at (149.78,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutText {#text} at (0,0) size 0x0 layer at (161,140) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png index cf44ad9..347df0a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt index 6457d29..df4cb46 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -21,19 +21,19 @@ text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar" LayoutBlockFlow (anonymous) at (0,65) size 784x37 LayoutBR {BR} at (0,0) size 0x18 - LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 35.41x13 + LayoutButton {INPUT} at (0,19) size 51.58x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 35.58x13 LayoutText {#text} at (0,0) size 36x13 text run at (0,0) width 36: "Reload" LayoutText {#text} at (51,18) size 9x18 text run at (51,18) width 9: " " - LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0] + LayoutButton {INPUT} at (59.58,19) size 82.20x18 [bgcolor=#C0C0C0] LayoutBlockFlow (anonymous) at (8,2) size 66.20x13 LayoutText {#text} at (0,0) size 67x13 text run at (0,0) width 67: "Change Font" LayoutText {#text} at (141,18) size 9x18 text run at (141,18) width 9: " " - LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutTextControl {INPUT} at (149.78,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutText {#text} at (0,0) size 0x0 layer at (161,94) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png index 611822a..a0227a1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png index 27884584..78745b4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png index c7e38c02..d81468a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt index 50a06f5a..7b5af92 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt
@@ -15,18 +15,18 @@ text run at (0,0) width 34: "Top: " LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutBlockFlow {P} at (0,104) size 784x18 - LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 27.94x13 - LayoutText {#text} at (0,0) size 28x13 - text run at (0,0) width 28: "Move" + LayoutButton {INPUT} at (0,0) size 44.36x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 28.36x13 + LayoutText {#text} at (0,0) size 29x13 + text run at (0,0) width 29: "Move" layer at (46,45) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13 - LayoutText {#text} at (0,0) size 31x13 - text run at (0,0) width 31: "120px" + LayoutText {#text} at (0,0) size 32x13 + text run at (0,0) width 32: "120px" layer at (44,80) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13 - LayoutText {#text} at (0,0) size 31x13 - text run at (0,0) width 31: "120px" + LayoutText {#text} at (0,0) size 32x13 + text run at (0,0) width 32: "120px" layer at (250,120) size 30x48 LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)] LayoutTableSection {TBODY} at (1,1) size 28x46
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png index 8924635..736547b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt index a641299..32e693b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt
@@ -4,15 +4,15 @@ LayoutBlockFlow {HTML} at (0,0) size 800x80 LayoutBlockFlow {BODY} at (8,8) size 784x64 LayoutBlockFlow {FORM} at (0,0) size 784x38 - LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 134.98x13 + LayoutButton {INPUT} at (0,1) size 150.92x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 134.92x13 LayoutText {#text} at (0,0) size 135x13 text run at (0,0) width 135: "(1) Fill cell with long string" LayoutBR {BR} at (150,0) size 1x18 - LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 141.39x13 - LayoutText {#text} at (0,0) size 142x13 - text run at (0,0) width 142: "(2) Fill cell with short string" + LayoutButton {INPUT} at (0,20) size 157.02x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 141.02x13 + LayoutText {#text} at (0,0) size 141x13 + text run at (0,0) width 141: "(2) Fill cell with short string" LayoutBR {BR} at (157,19) size 1x18 LayoutTable {TABLE} at (0,38) size 83x26 LayoutTableSection {TBODY} at (0,0) size 83x26
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png index 7e5b6606..67a1060 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt index c1d148d..a8ad5a6b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt
@@ -4,14 +4,14 @@ LayoutBlockFlow {HTML} at (0,0) size 800x106 LayoutBlockFlow {BODY} at (8,8) size 784x90 LayoutBlockFlow {FORM} at (0,0) size 784x36 - LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 234.20x13 + LayoutButton {INPUT} at (0,0) size 250.64x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 234.64x13 LayoutText {#text} at (0,0) size 235x13 text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)" - LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 238.75x13 - LayoutText {#text} at (0,0) size 239x13 - text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)" + LayoutButton {INPUT} at (0,18) size 255.28x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 239.28x13 + LayoutText {#text} at (0,0) size 240x13 + text run at (0,0) width 240: "[Step 2] Set cell width to 20px (garbage seen)" LayoutTable {TABLE} at (0,36) size 34x54 LayoutTableSection {TBODY} at (0,0) size 34x54 LayoutTableRow {TR} at (0,2) size 34x24
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png index 43c0b03..70c5f88 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt index 08cdda66..46547df 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt
@@ -4,12 +4,12 @@ LayoutBlockFlow {HTML} at (0,0) size 800x114 LayoutBlockFlow {BODY} at (8,8) size 784x98 LayoutBlockFlow {FORM} at (0,0) size 784x36 - LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 160.41x13 + LayoutButton {INPUT} at (0,0) size 176.83x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 160.83x13 LayoutText {#text} at (0,0) size 161x13 text run at (0,0) width 161: "[Step 1] Set cell height to 60px" - LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 161.55x13 + LayoutButton {INPUT} at (0,18) size 177.98x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 161.98x13 LayoutText {#text} at (0,0) size 162x13 text run at (0,0) width 162: "[Step 2] Set cell height to 20px" LayoutTable {TABLE} at (0,36) size 42x62
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png index a5e8a71..c3ce2ff 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt index 2cf3d99..ee1a3ed 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt
@@ -56,5 +56,5 @@ LayoutText {#text} at (0,0) size 0x0 layer at (241,97) size 125x13 scrollWidth 189 LayoutBlockFlow {DIV} at (3,3) size 125x13 - LayoutText {#text} at (0,0) size 188x13 - text run at (0,0) width 188: "simon.king@pipinghotnetworks.com" + LayoutText {#text} at (0,0) size 189x13 + text run at (0,0) width 189: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png index 0c046792..63b71a6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt index 7fd1795..55322c0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt
@@ -19,8 +19,8 @@ text run at (0,0) width 70: "change width" LayoutText {#text} at (85,0) size 5x18 text run at (85,0) width 5: " " - LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 158.59x13 + LayoutButton {INPUT} at (89.78,1) size 174.97x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 158.97x13 LayoutText {#text} at (0,0) size 159x13 text run at (0,0) width 159: "change width with table reflow" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png index def1f45..568c98f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt index 953c9062..4e25d22 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt
@@ -9,8 +9,8 @@ LayoutBlockFlow {P} at (0,34) size 784x19 LayoutText {#text} at (0,0) size 42x18 text run at (0,0) width 42: "Crash " - LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 72.69x13 + LayoutButton {BUTTON} at (41.33,1) size 88.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 72.91x13 LayoutText {#text} at (0,0) size 73x13 text run at (0,0) width 73: "TR.cells = null" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png index 1468154f..641b2a7a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt index 1ad87e4..9209db4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt
@@ -58,8 +58,8 @@ LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1] - LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 36.08x13 + LayoutButton {INPUT} at (5,5) size 52.25x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 36.25x13 LayoutText {#text} at (0,0) size 37x13 text run at (0,0) width 37: "Search" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png index 3750390..30ca33f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png index a59487b..f47b84e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png index c64b5a37..be17b42 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt index 0c0ae7c..bdf9c1c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt
@@ -1,45 +1,45 @@ -layer at (0,0) size 800x600 scrollWidth 984 +layer at (0,0) size 800x600 scrollWidth 985 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x600 LayoutBlockFlow {HTML} at (0,0) size 800x600 LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)] - LayoutTableSection {TBODY} at (2,2) size 972x135 - LayoutTableRow {TR} at (0,2) size 972x131 - LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)] - LayoutTableSection {TBODY} at (2,2) size 202x123 - LayoutTableRow {TR} at (0,2) size 202x83 - LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (0,0) size 977x139 [border: (2px solid #0000FF)] + LayoutTableSection {TBODY} at (2,2) size 973x135 + LayoutTableRow {TR} at (0,2) size 973x131 + LayoutTableCell {TD} at (2,2) size 211x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 207x127 [border: (2px solid #008000)] + LayoutTableSection {TBODY} at (2,2) size 203x123 + LayoutTableRow {TR} at (0,2) size 203x83 + LayoutTableCell {TD} at (2,2) size 199x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)] LayoutTableSection {TBODY} at (2,2) size 139x27 LayoutTableRow {TR} at (0,2) size 139x23 LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutText {#text} at (0,0) size 0x0 - LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)] - LayoutTableSection {TBODY} at (2,2) size 190x44 - LayoutTableRow {TR} at (0,2) size 190x40 - LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,33) size 195x48 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 191x44 + LayoutTableRow {TR} at (0,2) size 191x40 + LayoutTableCell {TD} at (2,2) size 187x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] LayoutText {#text} at (2,2) size 171x36 text run at (2,2) width 171: "THIS TABLE NEEDS TO" text run at (2,20) width 67: "BE HERE" - LayoutTableRow {TR} at (0,87) size 202x34 - LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)] - LayoutTableSection {TBODY} at (2,2) size 190x26 - LayoutTableRow {TR} at (0,2) size 190x22 - LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] - LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 182x18 - LayoutText (anonymous) at (8,2) size 151x13 - text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE" + LayoutTableRow {TR} at (0,87) size 203x34 + LayoutTableCell {TD} at (2,87) size 199x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1] + LayoutTable {TABLE} at (2,2) size 195x30 [border: (2px solid #FF0000)] + LayoutTableSection {TBODY} at (2,2) size 191x26 + LayoutTableRow {TR} at (0,2) size 191x22 + LayoutTableCell {TD} at (2,2) size 187x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1] + LayoutMenuList {SELECT} at (2,2) size 183x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 183x18 + LayoutText (anonymous) at (8,2) size 152x13 + text run at (8,2) width 152: "USE THIS JAVASCRIPT HERE" LayoutText {#text} at (0,0) size 0x0 - LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1] + LayoutTableCell {TD} at (215,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1] LayoutText {#text} at (2,2) size 752x36 text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE" text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\"" -layer at (29,29) size 125x13 scrollWidth 132 +layer at (29,29) size 125x13 scrollWidth 133 LayoutBlockFlow {DIV} at (3,3) size 125x13 - LayoutText {#text} at (0,0) size 131x13 - text run at (0,0) width 131: "THIS NEEDS THIS VALUE" + LayoutText {#text} at (0,0) size 132x13 + text run at (0,0) width 132: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png index dda01e2..9fa5109b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt index 09f5606d..f85ce5a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -29,13 +29,13 @@ LayoutText {#text} at (4,4) size 60x18 text run at (4,4) width 60: "6:00 a.m." LayoutBlockFlow {P} at (0,96) size 704x19 - LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 45.28x13 + LayoutButton {INPUT} at (289.81,1) size 61.36x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 45.36x13 LayoutText {#text} at (0,0) size 46x13 text run at (0,0) width 46: "separate" LayoutText {#text} at (351,0) size 5x18 text run at (351,0) width 5: " " - LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0] + LayoutButton {INPUT} at (355.17,1) size 59.02x18 [bgcolor=#C0C0C0] LayoutBlockFlow (anonymous) at (8,2) size 43.02x13 LayoutText {#text} at (0,0) size 43x13 text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png index d30f0a4..84b3dbf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png index b23a51b2..b02c2bee 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt index 17fdcb0..56ef523 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt
@@ -11,8 +11,8 @@ LayoutTableRow {TR} at (0,2) size 398x38 LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] LayoutBlockFlow {FORM} at (2,2) size 390x18 - LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 54x18 + LayoutMenuList {SELECT} at (0,0) size 55x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 55x18 LayoutText (anonymous) at (8,2) size 23x13 text run at (8,2) width 23: "Test" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png index 58e6a13..2db23d3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt index 7da4bf3..ab91139 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt
@@ -4,28 +4,28 @@ LayoutBlockFlow {HTML} at (0,0) size 800x600 LayoutBlockFlow {BODY} at (8,8) size 784x584 LayoutBlockFlow {FORM} at (0,0) size 784x19 - LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 92x18 + LayoutMenuList {SELECT} at (0,1) size 93x18 [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 93x18 LayoutText (anonymous) at (8,2) size 61x13 text run at (8,2) width 61: "append cell" - LayoutText {#text} at (92,0) size 53x18 - text run at (92,0) width 53: " tbody " - LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (185,0) size 42x18 - text run at (185,0) width 42: " row " - LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (267,0) size 36x18 - text run at (267,0) width 36: " col " - LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (343,0) size 76x18 - text run at (343,0) width 76: " row span " - LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (459,0) size 69x18 - text run at (459,0) width 69: " col span " - LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] - LayoutText {#text} at (568,0) size 21x18 - text run at (568,0) width 21: " " - LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0] + LayoutText {#text} at (93,0) size 53x18 + text run at (93,0) width 53: " tbody " + LayoutTextControl {INPUT} at (145.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (186,0) size 42x18 + text run at (186,0) width 42: " row " + LayoutTextControl {INPUT} at (227.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (268,0) size 36x18 + text run at (268,0) width 36: " col " + LayoutTextControl {INPUT} at (303.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (344,0) size 76x18 + text run at (344,0) width 76: " row span " + LayoutTextControl {INPUT} at (419.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (460,0) size 69x18 + text run at (460,0) width 69: " col span " + LayoutTextControl {INPUT} at (528.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] + LayoutText {#text} at (569,0) size 21x18 + text run at (569,0) width 21: " " + LayoutButton {INPUT} at (589.94,1) size 40.53x18 [bgcolor=#C0C0C0] LayoutBlockFlow (anonymous) at (8,2) size 24.53x13 LayoutText {#text} at (0,0) size 25x13 text run at (0,0) width 25: "Do It" @@ -47,23 +47,23 @@ text run at (2,2) width 24: "c22" LayoutBlockFlow (anonymous) at (0,105) size 784x18 LayoutBR {BR} at (0,0) size 0x18 -layer at (155,11) size 35x13 +layer at (156,11) size 35x13 LayoutBlockFlow {DIV} at (3,3) size 35x13 LayoutText {#text} at (0,0) size 7x13 text run at (0,0) width 7: "0" -layer at (237,11) size 35x13 +layer at (238,11) size 35x13 LayoutBlockFlow {DIV} at (3,3) size 35x13 LayoutText {#text} at (0,0) size 7x13 text run at (0,0) width 7: "0" -layer at (314,11) size 35x13 +layer at (315,11) size 35x13 LayoutBlockFlow {DIV} at (3,3) size 35x13 LayoutText {#text} at (0,0) size 7x13 text run at (0,0) width 7: "0" -layer at (429,11) size 35x13 +layer at (430,11) size 35x13 LayoutBlockFlow {DIV} at (3,3) size 35x13 LayoutText {#text} at (0,0) size 6x13 text run at (0,0) width 6: "1" -layer at (539,11) size 35x13 +layer at (540,11) size 35x13 LayoutBlockFlow {DIV} at (3,3) size 35x13 LayoutText {#text} at (0,0) size 6x13 text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png index af44f4b..8d32efcd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png index 02e2d6b..aac730c7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png index 3d3b6c5..e6104aa4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png index 0edb31b..174fd01a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png index 2ad1279..1ad6a142 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png index fc3fd5b..c02d9469 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png index a84f408..aac5b2c6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt index fe2063ce..35eb4a31 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -23,8 +23,8 @@ LayoutTableSection {TBODY} at (0,0) size 440x24 LayoutTableRow {TR} at (0,2) size 440x20 LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1] - LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 77.73x13 + LayoutButton {INPUT} at (1,1) size 93.59x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 77.59x13 LayoutText {#text} at (0,0) size 78x13 text run at (0,0) width 78: "Submit Criteria" LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png index bd530e3..b285487 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt index 2f1fd4ef..572887f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -5,17 +5,17 @@ LayoutTable (anonymous) at (16,16) size 737x1396 LayoutTableSection (anonymous) at (0,0) size 737x1396 LayoutTableRow (anonymous) at (0,0) size 737x1396 - LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)] - LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)] - LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)] - LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)] - LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)] + LayoutTableCell {HEAD} at (0,0) size 250x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1] + LayoutBlockFlow {META} at (21,37) size 208x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,55) size 208x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,73) size 208x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {META} at (21,91) size 208x2 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {TITLE} at (21,109) size 208x56 [border: (1px dotted #FFFFFF)] LayoutText {#text} at (1,1) size 188x54 text run at (1,1) width 188: "Evil Tests: Rendering BODY" text run at (1,19) width 163: "and HEAD as children of" text run at (1,37) width 67: "HTML - 2" - LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)] + LayoutBlockFlow {STYLE} at (21,181) size 208x254 [border: (1px dotted #FFFFFF)] LayoutText {#text} at (1,1) size 206x252 text run at (1,1) width 83: "/* Layout */ " text run at (83,1) width 112: "HTML { display:" @@ -37,8 +37,8 @@ text run at (1,199) width 206: "color: white; background: red; }" text run at (1,217) width 151: "BODY { color: yellow;" text run at (1,235) width 124: "background: teal; }" - LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1] - LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)] + LayoutTableCell {BODY} at (250,41) size 487x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1] + LayoutBlockFlow {H1} at (21,53) size 445x76 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 152x37 text run at (1,1) width 152: "Rendering " LayoutInline {CODE} at (0,0) size 63x30 @@ -57,7 +57,7 @@ text run at (156,43) width 64: "HTML" LayoutText {#text} at (219,38) size 43x37 text run at (219,38) width 43: " - 2" - LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,161) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 393x18 text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail" LayoutInline {A} at (0,0) size 186x18 [color=#0000EE] @@ -65,11 +65,11 @@ text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk" LayoutText {#text} at (186,19) size 5x18 text run at (186,19) width 5: "." - LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)] - LayoutBlockFlow {DT} at (1,1) size 442x18 + LayoutBlockFlow {DL} at (21,215) size 445x92 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {DT} at (1,1) size 443x18 LayoutText {#text} at (0,0) size 83x18 text run at (0,0) width 83: "Prerequisites" - LayoutBlockFlow {DD} at (41,19) size 402x72 + LayoutBlockFlow {DD} at (41,19) size 403x72 LayoutText {#text} at (0,0) size 392x54 text run at (0,0) width 392: "Browsers that are subjected to this test should support the the" text run at (0,18) width 388: "background, padding, margin, border and color properties of" @@ -80,14 +80,14 @@ LayoutText {#text} at (222,36) size 400x36 text run at (222,36) width 178: " property and fixed position" text run at (0,54) width 109: "stuff from CSS2." - LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {H2} at (21,331) size 445x58 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 440x56 text run at (1,1) width 440: "1. Making the BODY and the HEAD into a" text run at (1,29) width 51: "table" - LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,413) size 445x20 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 264x18 text run at (1,1) width 264: "This is really evil, but completely valid..." - LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,449) size 445x110 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 430x108 text run at (1,1) width 426: "This document should have two cells, side by side: one on the left," text run at (1,19) width 426: "the other on the right. The one on the left should be red with white" @@ -95,50 +95,50 @@ text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box" text run at (1,73) width 403: "containing the document title, and another dotted bordered box" text run at (1,91) width 286: "containing the stylesheet, also shown below:" - LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {PRE} at (21,575) size 445x17 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 39x15 text run at (1,1) width 39: " ..." text run at (40,1) width 0: " " - LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,608) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 419x36 text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be" text run at (1,19) width 40: "white." - LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,662) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 424x36 text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you" text run at (1,19) width 278: "are reading now should be in this right cell." - LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,716) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 413x36 text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I" text run at (1,19) width 37: "think." - LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)] - LayoutText {#text} at (1,1) size 439x72 - text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --" - text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there" - text run at (1,37) width 414: "should be a blank line between each such box. No box should be" - text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other." - LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,770) size 445x74 [border: (1px dotted #FFFF00)] + LayoutText {#text} at (1,1) size 443x72 + text run at (1,1) width 443: "The right cell should look similar to the left cell in formatting -- each" + text run at (1,19) width 442: "box of text should have a yellow dotted border, and there should be a" + text run at (1,37) width 420: "blank line between each such box. No box should be nested -- the" + text run at (1,55) width 356: "dotted boxes should always be distinct from each other." + LayoutBlockFlow {P} at (21,860) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 417x36 text run at (1,1) width 417: "The cells should be the same height, and they should have grown" text run at (1,19) width 229: "vertically to accommodate this text." - LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,914) size 445x56 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 437x54 text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light" text run at (1,19) width 437: "green. The cells should be separated from each other and from these" text run at (1,37) width 230: "outer borders by 1em of dark green." - LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,986) size 445x38 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 429x36 text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you" text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis." - LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {H2} at (21,1048) size 445x30 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 156x28 text run at (1,1) width 156: "Submit Results" - LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)] - LayoutBlockFlow {P} at (1,17) size 442x56 + LayoutBlockFlow {FORM} at (21,1102) size 445x90 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (1,17) size 443x56 LayoutText {#text} at (0,0) size 263x18 text run at (0,0) width 263: "How does your browser fare on this test?" - LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8] - LayoutBlockFlow (anonymous) at (0,0) size 442x18 + LayoutMenuList {SELECT} at (0,19) size 443x18 [color=#000000] [bgcolor=#F8F8F8] + LayoutBlockFlow (anonymous) at (0,0) size 443x18 LayoutText (anonymous) at (8,2) size 210x13 text run at (8,2) width 210: "Document renders exactly as described." LayoutText {#text} at (0,0) size 0x0 @@ -153,14 +153,14 @@ LayoutText {#text} at (0,0) size 37x13 text run at (0,0) width 37: "Submit" LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)] - LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {HR} at (21,1208) size 445x2 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,1226) size 445x20 [border: (1px dotted #FFFF00)] LayoutInline {A} at (0,0) size 162x18 [color=#0000EE] LayoutText {#text} at (1,1) size 162x18 text run at (1,1) width 162: "Up to the Evil Tests Page" LayoutText {#text} at (162,1) size 5x18 text run at (162,1) width 5: "." - LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,1262) size 445x20 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 177x18 text run at (1,1) width 177: "This page is maintained by " LayoutInline {A} at (0,0) size 79x18 [color=#0000EE] @@ -173,8 +173,8 @@ text run at (264,1) width 125: "py8ieh@bath.ac.uk" LayoutText {#text} at (388,1) size 10x18 text run at (388,1) width 10: ")." - LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)] + LayoutBlockFlow {P} at (21,1298) size 445x20 [border: (1px dotted #FFFF00)] LayoutText {#text} at (1,1) size 172x18 text run at (1,1) width 172: "Last updated in June 1999." -layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 +layer at (371,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png index 70f68db..1237e73 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt index f3cd060a..767e9835 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -33,14 +33,14 @@ LayoutText {#text} at (2,2) size 37x18 text run at (2,2) width 37: "row 3" LayoutBlockFlow (anonymous) at (0,240) size 784x19 - LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 37.80x13 + LayoutButton {INPUT} at (0,1) size 54.02x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 38.02x13 LayoutText {#text} at (0,0) size 38x13 text run at (0,0) width 38: "expand" - LayoutText {#text} at (53,0) size 5x18 - text run at (53,0) width 5: " " - LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0] - LayoutBlockFlow (anonymous) at (8,2) size 26.28x13 + LayoutText {#text} at (54,0) size 5x18 + text run at (54,0) width 5: " " + LayoutButton {INPUT} at (58.02,1) size 42.44x18 [bgcolor=#C0C0C0] + LayoutBlockFlow (anonymous) at (8,2) size 26.44x13 LayoutText {#text} at (0,0) size 27x13 text run at (0,0) width 27: "sizes" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png index 2f496d96..cd374613 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png index 63487bc..3e3b2920 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt index a3a1d3c2..5300bf2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -49,35 +49,35 @@ LayoutText {#text} at (2,1) size 36x18 text run at (2,1) width 36: "11pm" LayoutBlockFlow {P} at (0,96) size 784x36 - LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 - LayoutText {#text} at (0,0) size 58x13 + LayoutButton {BUTTON} at (271.66,0) size 74.20x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 58.20x13 + LayoutText {#text} at (0,0) size 59x13 text run at (0,0) width 18: "No " - text run at (17,0) width 41: "borders" - LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + text run at (17,0) width 42: "borders" + LayoutButton {BUTTON} at (345.86,0) size 93.98x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.98x13 LayoutText {#text} at (0,0) size 78x13 text run at (0,0) width 44: "Exterior " text run at (43,0) width 35: "border" - LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutButton {BUTTON} at (439.84,0) size 72.50x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.50x13 LayoutText {#text} at (0,0) size 57x13 text run at (0,0) width 17: "All " text run at (16,0) width 41: "borders" - LayoutBR {BR} at (512,13) size 0x0 - LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 - LayoutText {#text} at (0,0) size 83x13 + LayoutBR {BR} at (512,13) size 1x0 + LayoutButton {BUTTON} at (238.42,18) size 99.11x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 83.11x13 + LayoutText {#text} at (0,0) size 84x13 text run at (0,0) width 43: "Column " - text run at (42,0) width 41: "borders" - LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 - LayoutText {#text} at (0,0) size 81x13 + text run at (42,0) width 42: "borders" + LayoutButton {BUTTON} at (337.53,18) size 97.33x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 81.33x13 + LayoutText {#text} at (0,0) size 82x13 text run at (0,0) width 41: "Groups " - text run at (40,0) width 41: "borders" - LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 - LayoutText {#text} at (0,0) size 94x13 + text run at (40,0) width 42: "borders" + LayoutButton {BUTTON} at (434.86,18) size 110.70x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 94.70x13 + LayoutText {#text} at (0,0) size 95x13 text run at (0,0) width 32: "Table " - text run at (31,0) width 63: "row borders" + text run at (31,0) width 64: "row borders" LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png index 730816b..e5feac4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt index 8eb2c06..26983485 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -49,35 +49,35 @@ LayoutText {#text} at (2,1) size 36x18 text run at (2,1) width 36: "11pm" LayoutBlockFlow {P} at (0,98) size 784x36 - LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 57.94x13 - LayoutText {#text} at (0,0) size 58x13 + LayoutButton {BUTTON} at (271.66,0) size 74.20x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 58.20x13 + LayoutText {#text} at (0,0) size 59x13 text run at (0,0) width 18: "No " - text run at (17,0) width 41: "borders" - LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 77.84x13 + text run at (17,0) width 42: "borders" + LayoutButton {BUTTON} at (345.86,0) size 93.98x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 77.98x13 LayoutText {#text} at (0,0) size 78x13 text run at (0,0) width 44: "Exterior " text run at (43,0) width 35: "border" - LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 56.23x13 + LayoutButton {BUTTON} at (439.84,0) size 72.50x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 56.50x13 LayoutText {#text} at (0,0) size 57x13 text run at (0,0) width 17: "All " text run at (16,0) width 41: "borders" - LayoutBR {BR} at (512,13) size 0x0 - LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 82.83x13 - LayoutText {#text} at (0,0) size 83x13 + LayoutBR {BR} at (512,13) size 1x0 + LayoutButton {BUTTON} at (238.42,18) size 99.11x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 83.11x13 + LayoutText {#text} at (0,0) size 84x13 text run at (0,0) width 43: "Column " - text run at (42,0) width 41: "borders" - LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 80.91x13 - LayoutText {#text} at (0,0) size 81x13 + text run at (42,0) width 42: "borders" + LayoutButton {BUTTON} at (337.53,18) size 97.33x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 81.33x13 + LayoutText {#text} at (0,0) size 82x13 text run at (0,0) width 41: "Groups " - text run at (40,0) width 41: "borders" - LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] - LayoutBlockFlow (anonymous) at (8,2) size 93.27x13 - LayoutText {#text} at (0,0) size 94x13 + text run at (40,0) width 42: "borders" + LayoutButton {BUTTON} at (434.86,18) size 110.70x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)] + LayoutBlockFlow (anonymous) at (8,2) size 94.70x13 + LayoutText {#text} at (0,0) size 95x13 text run at (0,0) width 32: "Table " - text run at (31,0) width 63: "row borders" + text run at (31,0) width 64: "row borders" LayoutText {#text} at (0,0) size 0x0
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 20d9f95..067ee23 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/win7/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt index 0dfa1a3..f6172e2 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@ LayoutBlockFlow (anonymous) at (0,34) size 784x20 LayoutMenuList {SELECT} at (0,0) size 113x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] LayoutBlockFlow (anonymous) at (1,1) size 111x18 - LayoutText (anonymous) at (4,1) size 82x16 - text run at (4,1) width 82 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" + LayoutText (anonymous) at (4,1) size 91x16 + text run at (4,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}" LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {HR} at (0,308) size 784x2 [border: (1px inset #EEEEEE)] LayoutBlockFlow {P} at (0,326) size 784x18
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp b/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp index 845cd1f..a3b9353 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp
@@ -102,9 +102,9 @@ if (!shouldCheckRootEditableInHotMode(*rootEditable, position)) return; - SpellCheckRequest* request = SpellCheckRequest::create( - calculateHotModeCheckingRange(*rootEditable, position)); - m_requester->requestCheckingFor(request); + const EphemeralRange& checkingRange = + calculateHotModeCheckingRange(*rootEditable, position); + m_requester->requestCheckingFor(checkingRange); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp b/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp index bfe787480..404a7ff 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp
@@ -173,8 +173,7 @@ // Check the full content if it is short. if (fullLength <= kColdModeChunkSize) { - SpellCheckRequest* fullRequest = SpellCheckRequest::create(fullRange); - spellCheckRequester().requestCheckingFor(fullRequest); + spellCheckRequester().requestCheckingFor(fullRange); return; } @@ -195,9 +194,7 @@ chunkIndex >= 1 ? expandEndToSentenceBoundary(chunkRange) : expandRangeToSentenceBoundary(chunkRange); - SpellCheckRequest* chunkRequest = - SpellCheckRequest::create(checkRange, chunkIndex); - spellCheckRequester().requestCheckingFor(chunkRequest); + spellCheckRequester().requestCheckingFor(checkRange, chunkIndex); chunkStart = checkRange.endPosition(); }
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp index caa71e5..aab2e39 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
@@ -143,7 +143,13 @@ invokeRequest(m_requestQueue.takeFirst()); } -void SpellCheckRequester::requestCheckingFor(SpellCheckRequest* request) { +void SpellCheckRequester::requestCheckingFor(const EphemeralRange& range) { + requestCheckingFor(range, 0); +} + +void SpellCheckRequester::requestCheckingFor(const EphemeralRange& range, + int requestNum) { + SpellCheckRequest* request = SpellCheckRequest::create(range, requestNum); if (!request) return;
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h index 4fd4c54..5717608 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h +++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h
@@ -43,10 +43,11 @@ class SpellCheckRequester; class TextCheckerClient; +// TODO(xiaochengh): Move this class to dedicated files. class SpellCheckRequest final : public TextCheckingRequest { public: static SpellCheckRequest* create(const EphemeralRange& checkingRange, - int requestNumber = 0); + int requestNumber); ~SpellCheckRequest() override; void dispose(); @@ -87,7 +88,8 @@ ~SpellCheckRequester(); DECLARE_TRACE(); - void requestCheckingFor(SpellCheckRequest*); + void requestCheckingFor(const EphemeralRange&); + void requestCheckingFor(const EphemeralRange&, int requestNum); void cancelCheck(); int lastRequestSequence() const { return m_lastRequestSequence; }
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp index c99df19..4371ed5 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
@@ -504,9 +504,7 @@ // Check the full paragraph instead if the paragraph is short, which saves // the cost on sentence boundary finding. if (fullParagraphToCheck.rangeLength() <= kChunkSize) { - SpellCheckRequest* request = SpellCheckRequest::create(paragraphRange, 0); - if (request) - m_spellCheckRequester->requestCheckingFor(request); + m_spellCheckRequester->requestCheckingFor(paragraphRange); return; } @@ -522,10 +520,7 @@ ? expandEndToSentenceBoundary(chunkRange) : expandRangeToSentenceBoundary(chunkRange); - SpellCheckRequest* request = - SpellCheckRequest::create(checkRange, requestNum); - if (request) - m_spellCheckRequester->requestCheckingFor(request); + m_spellCheckRequester->requestCheckingFor(checkRange, requestNum); if (!checkRangeIterator.atEnd()) { checkRangeIterator.advance(1);
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp index 5d6d52c..73fd82b32 100644 --- a/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp
@@ -548,9 +548,11 @@ // FIXME: Having any font feature settings enabled can lead to selection gaps // on Chromium-mac. https://bugs.webkit.org/show_bug.cgi?id=113418 bool canUseCachedWordMeasurements = - font.canShapeWordByWord() && !font.getFontDescription().featureSettings(); + font.canShapeWordByWord() && + !font.getFontDescription().featureSettings() && layoutText.is8Bit(); #else - bool canUseCachedWordMeasurements = font.canShapeWordByWord(); + bool canUseCachedWordMeasurements = + font.canShapeWordByWord() && layoutText.is8Bit(); #endif if (canUseCachedWordMeasurements) {
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp index 348b3b9..acc863e 100644 --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
@@ -26,9 +26,8 @@ namespace blink { -PaintPropertyTreeBuilderContext -PaintPropertyTreeBuilder::setupInitialContext() { - PaintPropertyTreeBuilderContext context; +void PaintPropertyTreeBuilder::setupInitialContext( + PaintPropertyTreeBuilderContext& context) { context.current.clip = context.absolutePosition.clip = context.fixedPosition.clip = ClipPaintPropertyNode::root(); context.currentEffect = EffectPaintPropertyNode::root(); @@ -37,7 +36,6 @@ context.fixedPosition.transform = TransformPaintPropertyNode::root(); context.current.scroll = context.absolutePosition.scroll = context.fixedPosition.scroll = ScrollPaintPropertyNode::root(); - return context; } // True if a new property was created, false if an existing one was updated.
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h index dd18716..669ff3e3 100644 --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
@@ -95,7 +95,7 @@ // InPrePaint phase. class PaintPropertyTreeBuilder { public: - PaintPropertyTreeBuilderContext setupInitialContext(); + void setupInitialContext(PaintPropertyTreeBuilderContext&); // Update the paint properties for a frame and ensure the context is up to // date. void updateProperties(FrameView&, PaintPropertyTreeBuilderContext&);
diff --git a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp index 10c5d49..d6e05ed 100644 --- a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp +++ b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
@@ -16,18 +16,25 @@ struct PrePaintTreeWalkContext { PrePaintTreeWalkContext() - : paintInvalidatorContext(treeBuilderContext), + : treeBuilderContext( + WTF::wrapUnique(new PaintPropertyTreeBuilderContext)), + paintInvalidatorContext(*treeBuilderContext), ancestorOverflowPaintLayer(nullptr), ancestorTransformedOrRootPaintLayer(nullptr) {} PrePaintTreeWalkContext(const PrePaintTreeWalkContext& parentContext) - : treeBuilderContext(parentContext.treeBuilderContext), - paintInvalidatorContext(treeBuilderContext, + : treeBuilderContext(WTF::wrapUnique(new PaintPropertyTreeBuilderContext( + *parentContext.treeBuilderContext))), + paintInvalidatorContext(*treeBuilderContext, parentContext.paintInvalidatorContext), ancestorOverflowPaintLayer(parentContext.ancestorOverflowPaintLayer), ancestorTransformedOrRootPaintLayer( parentContext.ancestorTransformedOrRootPaintLayer) {} - PaintPropertyTreeBuilderContext treeBuilderContext; + // PaintPropertyTreeBuilderContext is large and can lead to stack overflows + // when recursion is deep so this context object is allocated on the heap. + // See: https://crbug.com/698653. + std::unique_ptr<PaintPropertyTreeBuilderContext> treeBuilderContext; + PaintInvalidatorContext paintInvalidatorContext; // The ancestor in the PaintLayer tree which has overflow clip, or @@ -42,8 +49,7 @@ DocumentLifecycle::InPrePaint); PrePaintTreeWalkContext initialContext; - initialContext.treeBuilderContext = - m_propertyTreeBuilder.setupInitialContext(); + m_propertyTreeBuilder.setupInitialContext(*initialContext.treeBuilderContext); initialContext.ancestorTransformedOrRootPaintLayer = rootFrame.layoutView()->layer(); @@ -67,7 +73,8 @@ PrePaintTreeWalkContext context(parentContext); // ancestorOverflowLayer does not cross frame boundaries. context.ancestorOverflowPaintLayer = nullptr; - m_propertyTreeBuilder.updateProperties(frameView, context.treeBuilderContext); + m_propertyTreeBuilder.updateProperties(frameView, + *context.treeBuilderContext); m_paintInvalidator.invalidatePaintIfNeeded(frameView, context.paintInvalidatorContext); @@ -152,8 +159,6 @@ .paintProperties(); PropertyTreeState ancestorState = *ancestorPaintProperties.localBorderBoxProperties(); - const EffectPaintPropertyNode* effect = - context.treeBuilderContext.currentEffect; #ifdef CHECK_CLIP_RECTS ShouldRespectOverflowClipType respectOverflowClip = RespectOverflowClip; @@ -180,7 +185,9 @@ context.ancestorTransformedOrRootPaintLayer->layoutObject().paintOffset(); FloatClipRect clipRect; - computeClipRectForContext(context.treeBuilderContext.current, effect, + const EffectPaintPropertyNode* effect = + context.treeBuilderContext->currentEffect; + computeClipRectForContext(context.treeBuilderContext->current, effect, ancestorState, ancestorPaintOffset, hasClip, clipRect); clipRects->setOverflowClipRect(clipRect); @@ -190,7 +197,7 @@ << "rect= " << clipRects->overflowClipRect().toString(); #endif - computeClipRectForContext(context.treeBuilderContext.fixedPosition, effect, + computeClipRectForContext(context.treeBuilderContext->fixedPosition, effect, ancestorState, ancestorPaintOffset, hasClip, clipRect); clipRects->setFixedClipRect(clipRect); @@ -199,8 +206,8 @@ << " fixed=" << clipRects->fixedClipRect().toString(); #endif - computeClipRectForContext(context.treeBuilderContext.absolutePosition, effect, - ancestorState, ancestorPaintOffset, hasClip, + computeClipRectForContext(context.treeBuilderContext->absolutePosition, + effect, ancestorState, ancestorPaintOffset, hasClip, clipRect); clipRects->setPosClipRect(clipRect); #ifdef CHECK_CLIP_RECTS @@ -230,7 +237,7 @@ return ( !object.needsPaintPropertyUpdate() && !object.descendantNeedsPaintPropertyUpdate() && - !context.treeBuilderContext.forceSubtreeUpdate && + !context.treeBuilderContext->forceSubtreeUpdate && !context.paintInvalidatorContext.forcedSubtreeInvalidationFlags && !object .shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState()); @@ -241,24 +248,20 @@ if (shouldEndWalkBefore(object, parentContext)) return; - // PrePaintTreeWalkContext is large and can lead to stack overflows when - // recursion is deep so this context object is allocated on the heap. - // See: https://crbug.com/698653. - std::unique_ptr<PrePaintTreeWalkContext> context = - WTF::wrapUnique(new PrePaintTreeWalkContext(parentContext)); + PrePaintTreeWalkContext context(parentContext); // This must happen before updatePropertiesForSelf, because the latter reads // some of the state computed here. - updateAuxiliaryObjectProperties(object, *context); + updateAuxiliaryObjectProperties(object, context); m_propertyTreeBuilder.updatePropertiesForSelf(object, - context->treeBuilderContext); + *context.treeBuilderContext); m_paintInvalidator.invalidatePaintIfNeeded(object, - context->paintInvalidatorContext); + context.paintInvalidatorContext); m_propertyTreeBuilder.updatePropertiesForChildren( - object, context->treeBuilderContext); + object, *context.treeBuilderContext); - invalidatePaintLayerOptimizationsIfNeeded(object, *context); + invalidatePaintLayerOptimizationsIfNeeded(object, context); for (const LayoutObject* child = object.slowFirstChild(); child; child = child->nextSibling()) { @@ -266,19 +269,19 @@ child->getMutableForPainting().clearPaintFlags(); continue; } - walk(*child, *context); + walk(*child, context); } if (object.isLayoutPart()) { const LayoutPart& layoutPart = toLayoutPart(object); FrameViewBase* frameViewBase = layoutPart.frameViewBase(); if (frameViewBase && frameViewBase->isFrameView()) { - context->treeBuilderContext.current.paintOffset += + context.treeBuilderContext->current.paintOffset += layoutPart.replacedContentRect().location() - frameViewBase->frameRect().location(); - context->treeBuilderContext.current.paintOffset = - roundedIntPoint(context->treeBuilderContext.current.paintOffset); - walk(*toFrameView(frameViewBase), *context); + context.treeBuilderContext->current.paintOffset = + roundedIntPoint(context.treeBuilderContext->current.paintOffset); + walk(*toFrameView(frameViewBase), context); } // TODO(pdr): Investigate RemoteFrameView (crbug.com/579281). }
diff --git a/third_party/WebKit/Source/devtools/BUILD.gn b/third_party/WebKit/Source/devtools/BUILD.gn index 582de16..d01a5dc 100644 --- a/third_party/WebKit/Source/devtools/BUILD.gn +++ b/third_party/WebKit/Source/devtools/BUILD.gn
@@ -263,6 +263,7 @@ "front_end/inline_editor/CSSShadowModel.js", "front_end/inline_editor/cssShadowSwatch.css", "front_end/inline_editor/module.json", + "front_end/inline_editor/swatchPopover.css", "front_end/inline_editor/SwatchPopoverHelper.js", "front_end/inspector.js", "front_end/inspector.json",
diff --git a/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js b/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js index 261abff..6b5486b 100644 --- a/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js +++ b/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js
@@ -173,7 +173,8 @@ /** * @param {!Element} anchor - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(anchor, popover) { var animGroup; @@ -184,20 +185,22 @@ console.assert(animGroup); var screenshots = animGroup.screenshots(); if (!screenshots.length) - return; + return Promise.resolve(false); + var fulfill; + var promise = new Promise(x => fulfill = x); if (!screenshots[0].complete) screenshots[0].onload = onFirstScreenshotLoaded.bind(null, screenshots); else onFirstScreenshotLoaded(screenshots); + return promise; /** * @param {!Array.<!Image>} screenshots */ function onFirstScreenshotLoaded(screenshots) { - var content = new Animation.AnimationScreenshotPopover(screenshots); - popover.setNoPadding(true); - popover.showView(content, anchor); + new Animation.AnimationScreenshotPopover(screenshots).show(popover.contentElement); + fulfill(true); } }
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js index 1314883..5df8f45 100644 --- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js +++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
@@ -581,22 +581,27 @@ /** * @param {!Element} link - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(link, popover) { var node = this.selectedDOMNode(); - if (node) { - Components.DOMPresentationUtils.buildImagePreviewContents( - node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover); - } + if (!node) + return Promise.resolve(false); + + var fulfill; + var promise = new Promise(x => fulfill = x); + Components.DOMPresentationUtils.buildImagePreviewContents( + node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover); + return promise; /** * @param {!Element=} contents */ function showPopover(contents) { - if (!contents) - return; - popover.showForAnchor(contents, link); + if (contents) + popover.contentElement.appendChild(contents); + fulfill(!!contents); } } @@ -903,6 +908,7 @@ if (this._popoverHelper) this._popoverHelper.hidePopover(); this._popoverHelper = new UI.PopoverHelper(tabbedPane.element); + this._popoverHelper.setHasPadding(true); this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this)); this._popoverHelper.setTimeout(0);
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js index e60a30a4..d48b56d 100644 --- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js +++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
@@ -77,6 +77,7 @@ this._popoverHelper = new UI.PopoverHelper(this._element); this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this)); + this._popoverHelper.setHasPadding(true); this._popoverHelper.setTimeout(0, 100); /** @type {!Map<!SDK.DOMNode, !Elements.ElementsTreeOutline.UpdateRecord>} */ @@ -572,23 +573,27 @@ /** * @param {!Element} link - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(link, popover) { + var fulfill; + var promise = new Promise(x => fulfill = x); var listItem = link.enclosingNodeOrSelfWithNodeName('li'); var node = /** @type {!Elements.ElementsTreeElement} */ (listItem.treeElement).node(); this._loadDimensionsForNode( node, Components.DOMPresentationUtils.buildImagePreviewContents.bind( Components.DOMPresentationUtils, node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover)); + return promise; /** * @param {!Element=} contents */ function showPopover(contents) { - if (!contents) - return; - popover.showForAnchor(contents, link); + if (contents) + popover.contentElement.appendChild(contents); + fulfill(!!contents); } }
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js b/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js index b2c9436..e060c8b 100644 --- a/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js +++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js
@@ -7,8 +7,11 @@ InlineEditor.SwatchPopoverHelper = class extends Common.Object { constructor() { super(); - this._popover = new UI.Popover(); - this._popover.setNoPadding(true); + this._popover = new UI.GlassPane(); + this._popover.registerRequiredCSS('inline_editor/swatchPopover.css'); + this._popover.setBlockPointerEvents(false); + this._popover.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent); + this._popover.setShowArrow(true); this._popover.element.addEventListener('mousedown', e => e.consume(), false); this._hideProxy = this.hide.bind(this, true); @@ -61,9 +64,11 @@ } reposition() { - // Unbind "blur" listener to avoid reenterability: |popover.showView| will hide the popover and trigger it synchronously. + // Unbind "blur" listener to avoid reenterability: |popover.show()| will hide the popover and trigger it synchronously. this._view.contentElement.removeEventListener('focusout', this._boundFocusOut, false); - this._popover.showView(this._view, this._anchorElement); + this._view.show(this._popover.contentElement); + this._popover.setContentAnchorBox(this._anchorElement.boxInWindow()); + this._popover.show(this._anchorElement.ownerDocument); this._view.contentElement.addEventListener('focusout', this._boundFocusOut, false); if (!this._focusRestorer) this._focusRestorer = new UI.WidgetFocusRestorer(this._view);
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json b/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json index b37b283..00185f75 100644 --- a/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json +++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json
@@ -15,6 +15,7 @@ "colorSwatch.css", "bezierSwatch.css", "cssShadowSwatch.css", - "cssShadowEditor.css" + "cssShadowEditor.css", + "swatchPopover.css" ] }
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css b/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css new file mode 100644 index 0000000..177a70a1 --- /dev/null +++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css
@@ -0,0 +1,15 @@ +/* + * 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. + */ + +.widget { + display: flex; + background: white; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.1); + border-radius: 2px; + overflow: auto; + -webkit-user-select: text; + line-height: 11px; +}
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js index 2e2f3e4..766294e 100644 --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
@@ -91,6 +91,7 @@ this._popoverHelper = new UI.PopoverHelper(this._networkLogView.element); this._popoverHelper.initializeCallbacks( this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this)); + this._popoverHelper.setHasPadding(true); /** @type {!DataGrid.SortableDataGrid<!Network.NetworkNode>} */ this._dataGrid = @@ -538,14 +539,16 @@ /** * @param {!Element} anchor - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(anchor, popover) { var request = /** @type {!SDK.NetworkRequest} */ (anchor.request); var initiator = /** @type {!Protocol.Network.Initiator} */ (request.initiator()); var content = Components.DOMPresentationUtils.buildStackTracePreviewContents( request.target(), this._popupLinkifier, initiator.stack); - popover.showForAnchor(content, anchor); + popover.contentElement.appendChild(content); + return Promise.resolve(true); } _onHidePopover() {
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js index 5c8f581..0acb3b1 100644 --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
@@ -35,6 +35,7 @@ this._popoverHelper = new UI.PopoverHelper(this.element); this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this)); + this._popoverHelper.setHasPadding(true); this._popoverHelper.setTimeout(300, 300); /** @type {!Array<!Network.NetworkNode>} */ @@ -168,16 +169,18 @@ /** * @param {!Element|!AnchorBox} anchor - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(anchor, popover) { if (!this._hoveredNode) - return; + return Promise.resolve(false); var request = this._hoveredNode.request(); if (!request) - return; + return Promise.resolve(false); var content = Network.RequestTimingView.createTimingTable(request, this._calculator); - popover.showForAnchor(content, anchor); + popover.contentElement.appendChild(content); + return Promise.resolve(true); } /**
diff --git a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js index b790cd03..72df881 100644 --- a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js +++ b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
@@ -42,6 +42,7 @@ constructor(panelElement, getAnchor, queryObject, onHide, disableOnClick) { super(panelElement, disableOnClick); this.initializeCallbacks(getAnchor, this._showObjectPopover.bind(this), this._onHideObjectPopover.bind(this)); + this.setHasPadding(true); this._queryObject = queryObject; this._onHideCallback = onHide; this._popoverObjectGroup = 'popover'; @@ -50,20 +51,23 @@ /** * @param {!Element} element - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showObjectPopover(element, popover) { + var fulfill; + var promise = new Promise(x => fulfill = x); + /** * @param {!SDK.RemoteObject} funcObject * @param {!Element} popoverContentElement * @param {!Element} popoverValueElement - * @param {!Element} anchorElement * @param {?Array.<!SDK.RemoteObjectProperty>} properties * @param {?Array.<!SDK.RemoteObjectProperty>} internalProperties * @this {ObjectUI.ObjectPopoverHelper} */ function didGetFunctionProperties( - funcObject, popoverContentElement, popoverValueElement, anchorElement, properties, internalProperties) { + funcObject, popoverContentElement, popoverValueElement, properties, internalProperties) { if (internalProperties) { for (var i = 0; i < internalProperties.length; i++) { if (internalProperties[i].name === '[[TargetFunction]]') { @@ -75,18 +79,19 @@ ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(funcObject, popoverValueElement, true); funcObject.debuggerModel() .functionDetailsPromise(funcObject) - .then(didGetFunctionDetails.bind(this, popoverContentElement, anchorElement)); + .then(didGetFunctionDetails.bind(this, popoverContentElement)); } /** * @param {!Element} popoverContentElement - * @param {!Element} anchorElement * @param {?SDK.DebuggerModel.FunctionDetails} response * @this {ObjectUI.ObjectPopoverHelper} */ - function didGetFunctionDetails(popoverContentElement, anchorElement, response) { - if (!response || this._disposed) + function didGetFunctionDetails(popoverContentElement, response) { + if (!response || this._disposed) { + fulfill(false); return; + } var container = createElementWithClass('div', 'object-popover-container'); var title = container.createChild('div', 'function-popover-title source-code'); @@ -99,24 +104,29 @@ if (rawLocation && sourceURL) linkContainer.appendChild(this._lazyLinkifier().linkifyRawLocation(rawLocation, sourceURL)); container.appendChild(popoverContentElement); - popover.showForAnchor(container, anchorElement); + popover.contentElement.appendChild(container); + fulfill(true); } /** * @param {!SDK.RemoteObject} result * @param {boolean} wasThrown - * @param {!Element=} anchorOverride + * @param {!Element|!AnchorBox=} anchorOverride * @this {ObjectUI.ObjectPopoverHelper} */ function didQueryObject(result, wasThrown, anchorOverride) { - if (this._disposed) + if (this._disposed) { + fulfill(false); return; + } if (wasThrown) { this.hidePopover(); + fulfill(false); return; } this._objectTarget = result.target(); - var anchorElement = anchorOverride || element; + var anchor = anchorOverride || element; + popover.setContentAnchorBox(anchor instanceof AnchorBox ? anchor : anchor.boxInWindow()); var description = result.description.trimEnd(ObjectUI.ObjectPopoverHelper.MaxPopoverTextLength); var popoverContentElement = null; if (result.type !== 'object') { @@ -134,10 +144,11 @@ if (result.type === 'function') { result.getOwnProperties( false /* generatePreview */, - didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement, anchorElement)); + didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement)); return; } - popover.showForAnchor(popoverContentElement, anchorElement); + popover.contentElement.appendChild(popoverContentElement); + fulfill(true); } else { if (result.subtype === 'node') { SDK.DOMModel.highlightObjectAsDOMNode(result); @@ -160,11 +171,13 @@ } popover.setMaxContentSize(new UI.Size(300, 250)); popover.setSizeBehavior(UI.GlassPane.SizeBehavior.SetExactSize); - popover.showForAnchor(popoverContentElement, anchorElement); + popover.contentElement.appendChild(popoverContentElement); + fulfill(true); } } this._disposed = false; this._queryObject(element, didQueryObject.bind(this), this._popoverObjectGroup); + return promise; } _onHideObjectPopover() {
diff --git a/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css b/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css index c903e287..c04f202 100644 --- a/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css +++ b/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css
@@ -51,6 +51,11 @@ margin-left: 10px; } +.function-title-link-container .devtools-link { + white-space: nowrap; + overflow: hidden; +} + .function-location-step-into { position: relative; height: 14px;
diff --git a/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js b/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js index f3e5010..4194f99 100644 --- a/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js +++ b/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js
@@ -56,6 +56,7 @@ this._popoverHelper = new UI.PopoverHelper(this._cursorArea); this._popoverHelper.initializeCallbacks( this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this)); + this._popoverHelper.setHasPadding(true); this._popoverHelper.setTimeout(0); this._updateThrottler = new Common.Throttler(100); @@ -76,22 +77,26 @@ /** * @param {!Element} anchor - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showPopover(anchor, popover) { - this._buildPopoverContents().then(maybeShowPopover.bind(this)); + return this._buildPopoverContents().then(maybeShowPopover.bind(this)); + /** * @this {PerfUI.TimelineOverviewPane} * @param {!DocumentFragment} fragment + * @return {boolean} */ function maybeShowPopover(fragment) { if (!fragment.firstChild) - return; + return false; var content = new PerfUI.TimelineOverviewPane.PopoverContents(); this._popoverContents = content.contentElement.createChild('div'); this._popoverContents.appendChild(fragment); this._popover = popover; - popover.showView(content, this._cursorElement); + content.show(popover.contentElement); + return true; } }
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js index 50b36024..2f7119f 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
@@ -422,8 +422,10 @@ * @return {!Protocol.InspectorBackend.Connection} */ _createMainConnection(params) { - if (Runtime.queryParam('ws')) { - var ws = 'ws://' + Runtime.queryParam('ws'); + var wsParam = Runtime.queryParam('ws'); + var wssParam = Runtime.queryParam('wss'); + if (wsParam || wssParam) { + var ws = wsParam ? `ws://${wsParam}` : `wss://${wssParam}`; this._mainConnection = new SDK.WebSocketConnection(ws, this._webSocketConnectionLostCallback, params); } else if (InspectorFrontendHost.isHostedMode()) { this._mainConnection = new SDK.StubConnection(params);
diff --git a/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js b/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js index c9f57c9..d1db34b 100644 --- a/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js +++ b/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js
@@ -74,6 +74,7 @@ this._errorPopoverHelper = new UI.PopoverHelper(this.element); this._errorPopoverHelper.initializeCallbacks(this._getErrorAnchor.bind(this), this._showErrorPopover.bind(this)); + this._errorPopoverHelper.setHasPadding(true); this._errorPopoverHelper.setTimeout(100, 100); @@ -400,14 +401,17 @@ /** * @param {!Element} anchor - * @param {!UI.Popover} popover + * @param {!UI.GlassPane} popover + * @return {!Promise<boolean>} */ _showErrorPopover(anchor, popover) { var messageBucket = anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration')._messageBucket; var messagesOutline = messageBucket.messagesDescription(); - var popoverAnchor = - anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration-icon') ? anchor : this._errorWavePopoverAnchor; - popover.showForAnchor(messagesOutline, popoverAnchor); + popover.setContentAnchorBox( + anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration-icon') ? anchor.boxInWindow() : + this._errorWavePopoverAnchor); + popover.contentElement.appendChild(messagesOutline); + return Promise.resolve(true); } _updateBucketDecorations() {
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Popover.js b/third_party/WebKit/Source/devtools/front_end/ui/Popover.js index a6ab9a8..8364ab74 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/Popover.js +++ b/third_party/WebKit/Source/devtools/front_end/ui/Popover.js
@@ -28,83 +28,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -UI.Popover = class extends UI.GlassPane { - /** - * @param {!UI.PopoverHelper=} popoverHelper - */ - constructor(popoverHelper) { - super(); - this.registerRequiredCSS('ui/popover.css'); - this.setBlockPointerEvents(false); - this.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent); - this.setShowArrow(true); - this._popoverHelper = popoverHelper; - } - - /** - * @param {!Element} element - * @param {!Element|!AnchorBox} anchor - */ - showForAnchor(element, anchor) { - this._innerShow(null, element, anchor); - } - - /** - * @param {!UI.Widget} view - * @param {!Element|!AnchorBox} anchor - */ - showView(view, anchor) { - this._innerShow(view, view.element, anchor); - } - - /** - * @param {?UI.Widget} widget - * @param {!Element} contentElement - * @param {!Element|!AnchorBox} anchor - */ - _innerShow(widget, contentElement, anchor) { - // This should not happen, but we hide previous popup to be on the safe side. - if (UI.Popover._popover) - UI.Popover._popover.hide(); - UI.Popover._popover = this; - - var document = - /** @type {!Document} */ (anchor instanceof Element ? anchor.ownerDocument : contentElement.ownerDocument); - var anchorBox = anchor instanceof AnchorBox ? anchor : anchor.boxInWindow(); - this.setContentAnchorBox(anchorBox); - - if (widget) - widget.show(this.contentElement); - else - this.contentElement.appendChild(contentElement); - - super.show(document); - - if (this._popoverHelper) { - this.contentElement.addEventListener( - 'mousemove', this._popoverHelper._killHidePopoverTimer.bind(this._popoverHelper), true); - this.contentElement.addEventListener( - 'mouseout', this._popoverHelper._popoverMouseOut.bind(this._popoverHelper), true); - } - } - - /** - * @override - */ - hide() { - super.hide(); - delete UI.Popover._popover; - } - - /** - * @param {boolean} noPadding - */ - setNoPadding(noPadding) { - // TODO(dgozman): remove this. Clients should add padding themselves. - this.contentElement.classList.toggle('no-padding', noPadding); - } -}; - /** * @unrestricted */ @@ -115,6 +38,7 @@ */ constructor(panelElement, disableOnClick) { this._disableOnClick = !!disableOnClick; + this._hasPadding = false; panelElement.addEventListener('mousedown', this._mouseDown.bind(this), false); panelElement.addEventListener('mousemove', this._mouseMove.bind(this), false); panelElement.addEventListener('mouseout', this._mouseOut.bind(this), false); @@ -123,7 +47,7 @@ /** * @param {function(!Element, !Event):(!Element|!AnchorBox|undefined)} getAnchor - * @param {function(!Element, !UI.Popover):undefined} showPopover + * @param {function(!Element, !UI.GlassPane):!Promise<boolean>} showPopover * @param {function()=} onHide */ initializeCallbacks(getAnchor, showPopover, onHide) { @@ -145,6 +69,13 @@ } /** + * @param {boolean} hasPadding + */ + setHasPadding(hasPadding) { + this._hasPadding = hasPadding; + } + + /** * @param {!MouseEvent} event * @return {boolean} */ @@ -212,7 +143,8 @@ if (!this._hoverElement) return; const toolTipDelay = isMouseDown ? 0 : (this._popup ? this._timeout * 0.6 : this._timeout); - this._hoverTimer = setTimeout(this._mouseHover.bind(this, this._hoverElement), toolTipDelay); + this._hoverTimer = + setTimeout(this._mouseHover.bind(this, this._hoverElement, event.target.ownerDocument), toolTipDelay); } _resetHoverTimer() { @@ -238,6 +170,7 @@ if (!this._popover) return; + delete UI.PopoverHelper._popover; if (this._onHide) this._onHide(); @@ -247,12 +180,33 @@ this._hoverElement = null; } - _mouseHover(element) { + _mouseHover(element, document) { delete this._hoverTimer; this._hoverElement = element; this._hidePopover(); - this._popover = new UI.Popover(this); - this._showPopover(element, this._popover); + + this._popover = new UI.GlassPane(); + this._popover.registerRequiredCSS('ui/popover.css'); + this._popover.setBlockPointerEvents(false); + this._popover.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent); + this._popover.setShowArrow(true); + this._popover.contentElement.classList.toggle('has-padding', this._hasPadding); + this._popover.contentElement.addEventListener('mousemove', this._killHidePopoverTimer.bind(this), true); + this._popover.contentElement.addEventListener('mouseout', this._popoverMouseOut.bind(this), true); + this._popover.setContentAnchorBox( + this._hoverElement instanceof AnchorBox ? this._hoverElement : this._hoverElement.boxInWindow()); + + // This should not happen, but we hide previous popover to be on the safe side. + if (UI.PopoverHelper._popover) { + console.error('One popover is already visible'); + UI.PopoverHelper._popover.hide(); + } + UI.PopoverHelper._popover = this._popover; + var popover = this._popover; + this._showPopover(element, this._popover).then(success => { + if (success && this._popover === popover && this._hoverElement === element) + popover.show(document); + }); } _killHidePopoverTimer() {
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/popover.css b/third_party/WebKit/Source/devtools/front_end/ui/popover.css index 493f8de..a1a1bb6 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/popover.css +++ b/third_party/WebKit/Source/devtools/front_end/ui/popover.css
@@ -12,9 +12,8 @@ overflow: auto; -webkit-user-select: text; line-height: 11px; - padding: 6px; } -.widget.no-padding { - padding: 0; +.widget.has-padding { + padding: 6px; }
diff --git a/third_party/WebKit/Source/modules/vr/DEPS b/third_party/WebKit/Source/modules/vr/DEPS index c7d7eec..fd6692e 100644 --- a/third_party/WebKit/Source/modules/vr/DEPS +++ b/third_party/WebKit/Source/modules/vr/DEPS
@@ -2,4 +2,5 @@ "+mojo/public/cpp/bindings/binding.h", "+device/vr/vr_service.mojom-blink.h", "+gpu/command_buffer/client/gles2_interface.h", + "+gpu/command_buffer/common/mailbox_holder.h", ]
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp index cc8f103..97475f1 100644 --- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp +++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -8,13 +8,17 @@ #include "core/dom/DOMException.h" #include "core/dom/DocumentUserGestureToken.h" #include "core/dom/FrameRequestCallback.h" -#include "core/dom/Fullscreen.h" #include "core/dom/ScriptedAnimationController.h" #include "core/dom/TaskRunnerHelper.h" +#include "core/frame/FrameView.h" +#include "core/frame/ImageBitmap.h" #include "core/frame/UseCounter.h" #include "core/inspector/ConsoleMessage.h" +#include "core/layout/LayoutView.h" +#include "core/layout/compositing/PaintLayerCompositor.h" #include "core/loader/DocumentLoader.h" #include "gpu/command_buffer/client/gles2_interface.h" +#include "gpu/command_buffer/common/mailbox_holder.h" #include "modules/EventTargetModules.h" #include "modules/vr/NavigatorVR.h" #include "modules/vr/VRController.h" @@ -27,6 +31,7 @@ #include "modules/webgl/WebGLRenderingContextBase.h" #include "platform/Histogram.h" #include "platform/UserGestureIndicator.h" +#include "platform/instrumentation/tracing/TraceEvent.h" #include "public/platform/Platform.h" #include "wtf/AutoReset.h" #include "wtf/Time.h" @@ -37,10 +42,6 @@ namespace { -// Magic numbers used to mark valid pose index values encoded in frame -// data. Must match the magic numbers used in vr_shell.cc. -static constexpr std::array<uint8_t, 2> kWebVrPosePixelMagicNumbers{{42, 142}}; - VREye stringToVREye(const String& whichEye) { if (whichEye == "left") return VREyeLeft; @@ -59,12 +60,8 @@ m_capabilities(new VRDisplayCapabilities()), m_eyeParametersLeft(new VREyeParameters()), m_eyeParametersRight(new VREyeParameters()), - m_fullscreenCheckTimer( - TaskRunnerHelper::get(TaskType::UnspecedTimer, - navigatorVR->document()->frame()), - this, - &VRDisplay::onFullscreenCheck), m_display(std::move(display)), + m_submit_frame_client_binding(this), m_displayClientBinding(this, std::move(request)) {} VRDisplay::~VRDisplay() {} @@ -239,17 +236,6 @@ return promise; } - // TODO(mthiesse): Remove fullscreen requirement for presentation. See - // crbug.com/687369 - Document* doc = this->document(); - if (!doc || !Fullscreen::fullscreenEnabled(*doc)) { - DOMException* exception = - DOMException::create(InvalidStateError, "Fullscreen is not enabled."); - resolver->reject(exception); - ReportPresentationResult(PresentationResult::FullscreenNotEnabled); - return promise; - } - // A valid number of layers must be provided in order to present. if (layers.size() == 0 || layers.size() > m_capabilities->maxLayers()) { forceExitPresent(); @@ -324,9 +310,12 @@ } m_pendingPresentResolvers.append(resolver); - m_display->RequestPresent(secureContext, convertToBaseCallback(WTF::bind( - &VRDisplay::onPresentComplete, - wrapPersistent(this)))); + m_submit_frame_client_binding.Close(); + m_display->RequestPresent( + secureContext, + m_submit_frame_client_binding.CreateInterfacePtrAndBind(), + convertToBaseCallback( + WTF::bind(&VRDisplay::onPresentComplete, wrapPersistent(this)))); } else { updateLayerBounds(); resolver->resolve(); @@ -395,50 +384,9 @@ return; } else { if (m_layer.source().isHTMLCanvasElement()) { - HTMLCanvasElement* canvas = m_layer.source().getAsHTMLCanvasElement(); - // TODO(klausw,crbug.com/655722): Need a proper VR compositor, but - // for the moment on mobile we'll just make the canvas fullscreen - // so that VrShell can pick it up through the standard (high - // latency) compositing path. auto canvas = - // m_layer.source().getAsHTMLCanvasElement(); - auto inlineStyle = canvas->inlineStyle(); - if (inlineStyle) { - // THREE.js's VREffect sets explicit style.width/height on its rendering - // canvas based on the non-fullscreen window dimensions, and it keeps - // those unchanged when presenting. Unfortunately it appears that a - // fullscreened canvas just gets centered if it has explicitly set a - // size smaller than the fullscreen dimensions. Manually set size to - // 100% in this case and restore it when exiting fullscreen. This is a - // stopgap measure since THREE.js's usage appears legal according to the - // WebVR API spec. This will no longer be necessary once we can get rid - // of this fullscreen hack. - m_fullscreenOrigWidth = inlineStyle->getPropertyValue(CSSPropertyWidth); - if (!m_fullscreenOrigWidth.isNull()) { - canvas->setInlineStyleProperty(CSSPropertyWidth, "100%"); - } - m_fullscreenOrigHeight = - inlineStyle->getPropertyValue(CSSPropertyHeight); - if (!m_fullscreenOrigHeight.isNull()) { - canvas->setInlineStyleProperty(CSSPropertyHeight, "100%"); - } - } else { - m_fullscreenOrigWidth = String(); - m_fullscreenOrigHeight = String(); - } - - if (doc) { - // Since the callback for requestPresent is asynchronous, we've lost our - // UserGestureToken, and need to create a new one to enter fullscreen. - gestureIndicator = WTF::wrapUnique( - new UserGestureIndicator(DocumentUserGestureToken::create( - doc, UserGestureToken::Status::PossiblyExistingGesture))); - } - Fullscreen::requestFullscreen(*canvas); - - // Check to see if the canvas is still the current fullscreen - // element once every 2 seconds. - m_fullscreenCheckTimer.startRepeating(2.0, BLINK_FROM_HERE); - m_reenteredFullscreen = false; + // TODO(klausw,crbug.com/698923): suppress compositor updates + // since they aren't needed, they do a fair amount of extra + // work. } else { DCHECK(m_layer.source().isOffscreenCanvas()); // TODO(junov, crbug.com/695497): Implement OffscreenCanvas presentation @@ -519,7 +467,8 @@ } m_display->UpdateLayerBounds(m_vrFrameId, std::move(leftBounds), - std::move(rightBounds)); + std::move(rightBounds), m_sourceWidth, + m_sourceHeight); } HeapVector<VRLayer> VRDisplay::getLayers() { @@ -535,6 +484,7 @@ void VRDisplay::submitFrame() { if (!m_display) return; + TRACE_EVENT1("gpu", "submitFrame", "frame", m_vrFrameId); Document* doc = this->document(); if (!m_isPresenting) { @@ -563,42 +513,109 @@ // No frame Id to write before submitting the frame. if (m_vrFrameId < 0) { - m_display->SubmitFrame(m_framePose.Clone()); + // TODO(klausw): There used to be a submitFrame here, but we can't + // submit without a frameId and associated pose data. Just drop it. return; } - // Write the frame number for the pose used into a bottom left pixel block. - // It is read by chrome/browser/android/vr_shell/vr_shell.cc to associate - // the correct corresponding pose for submission. - auto gl = m_contextGL; + m_contextGL->Flush(); - // We must ensure that the WebGL app's GL state is preserved. We do this by - // calling low-level GL commands directly so that the rendering context's - // saved parameters don't get overwritten. + // Check if the canvas got resized, if yes send a bounds update. + int currentWidth = m_renderingContext->drawingBufferWidth(); + int currentHeight = m_renderingContext->drawingBufferHeight(); + if ((currentWidth != m_sourceWidth || currentHeight != m_sourceHeight) && + currentWidth != 0 && currentHeight != 0) { + m_sourceWidth = currentWidth; + m_sourceHeight = currentHeight; + updateLayerBounds(); + } - gl->Enable(GL_SCISSOR_TEST); - // Use a few pixels to ensure we get a clean color. The resolution for the - // WebGL buffer may not match the final rendered destination size, and - // texture filtering could interfere for single pixels. This isn't visible - // since the final rendering hides the edges via a vignette effect. - gl->Scissor(0, 0, 4, 4); - gl->ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - // Careful with the arithmetic here. Float color 1.f is equivalent to int 255. - // Use the low byte of the index as the red component, and store an arbitrary - // magic number in green/blue. This number must match the reading code in - // vr_shell.cc. Avoid all-black/all-white. - gl->ClearColor((m_vrFrameId & 255) / 255.0f, - kWebVrPosePixelMagicNumbers[0] / 255.0f, - kWebVrPosePixelMagicNumbers[1] / 255.0f, 1.0f); - gl->Clear(GL_COLOR_BUFFER_BIT); + // There's two types of synchronization needed for submitting frames: + // + // - Before submitting, need to wait for the previous frame to be + // pulled off the transfer surface to avoid lost frames. This + // is currently a compile-time option, normally we always want + // to defer this wait to increase parallelism. + // + // - After submitting, need to wait for the mailbox to be consumed, + // and must remain inside the execution context while waiting. + // The waitForPreviousTransferToFinish option defers this wait + // until the next frame. That's more efficient, but seems to + // cause wobbly framerates. + bool waitForPreviousTransferToFinish = + RuntimeEnabledFeatures::webVRExperimentalRenderingEnabled(); - // Set the GL state back to what was set by the WebVR application. - m_renderingContext->restoreScissorEnabled(); - m_renderingContext->restoreScissorBox(); - m_renderingContext->restoreColorMask(); - m_renderingContext->restoreClearColor(); + if (waitForPreviousTransferToFinish) { + TRACE_EVENT0("gpu", "VRDisplay::waitForPreviousTransferToFinish"); + while (m_pendingSubmitFrame) { + if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) { + DLOG(ERROR) << "Failed to receive SubmitFrame response"; + break; + } + } + } - m_display->SubmitFrame(m_framePose.Clone()); + RefPtr<Image> imageRef = m_renderingContext->getImage( + PreferAcceleration, SnapshotReasonCreateImageBitmap); + + // Hardware-accelerated rendering should always be texture backed. + // I hope nobody is trying to do WebVR with software rendering. + DCHECK(imageRef->isTextureBacked()); + + // The AcceleratedStaticBitmapImage must be kept alive until the + // mailbox is used via createAndConsumeTextureCHROMIUM, the mailbox + // itself does not keep it alive. We must keep a reference to the + // image until the mailbox was consumed. + StaticBitmapImage* staticImage = + static_cast<StaticBitmapImage*>(imageRef.get()); + staticImage->ensureMailbox(); + + if (waitForPreviousTransferToFinish) { + // Save a reference to the image to keep it alive until next frame, + // where we'll wait for the transfer to finish before overwriting + // it. + m_previousImage = std::move(imageRef); + } + + // Wait for the previous render to finish, to avoid losing frames in the + // Android Surface / GLConsumer pair. TODO(klausw): make this tunable? + // Other devices may have different preferences. + { + TRACE_EVENT0("gpu", "waitForPreviousRenderToFinish"); + while (m_pendingPreviousFrameRender) { + if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) { + DLOG(ERROR) << "Failed to receive SubmitFrame response"; + break; + } + } + } + + m_pendingPreviousFrameRender = true; + m_pendingSubmitFrame = true; + m_display->SubmitFrame( + m_vrFrameId, gpu::MailboxHolder(staticImage->mailbox(), + staticImage->syncToken(), GL_TEXTURE_2D)); + + // If we're not deferring the wait for transferring the mailbox, + // we need to wait for it now to prevent the image going out of + // scope before its mailbox is retrieved. + if (!waitForPreviousTransferToFinish) { + TRACE_EVENT0("gpu", "waitForCurrentTransferToFinish"); + while (m_pendingSubmitFrame) { + if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) { + DLOG(ERROR) << "Failed to receive SubmitFrame response"; + break; + } + } + } +} + +void VRDisplay::OnSubmitFrameTransferred() { + m_pendingSubmitFrame = false; +} + +void VRDisplay::OnSubmitFrameRendered() { + m_pendingPreviousFrameRender = false; } Document* VRDisplay::document() { @@ -607,7 +624,7 @@ void VRDisplay::OnPresentChange() { if (m_isPresenting && !m_isValidDeviceForPresenting) { - VLOG(1) << __FUNCTION__ << ": device not valid, not sending event"; + DVLOG(1) << __FUNCTION__ << ": device not valid, not sending event"; return; } m_navigatorVR->enqueueVREvent(VRDisplayEvent::create( @@ -636,19 +653,8 @@ if (m_isPresenting) { if (!m_capabilities->hasExternalDisplay()) { if (m_layer.source().isHTMLCanvasElement()) { - auto canvas = m_layer.source().getAsHTMLCanvasElement(); - Fullscreen::fullyExitFullscreen(canvas->document()); - m_fullscreenCheckTimer.stop(); - if (!m_fullscreenOrigWidth.isNull()) { - canvas->setInlineStyleProperty(CSSPropertyWidth, - m_fullscreenOrigWidth); - m_fullscreenOrigWidth = String(); - } - if (!m_fullscreenOrigHeight.isNull()) { - canvas->setInlineStyleProperty(CSSPropertyWidth, - m_fullscreenOrigHeight); - m_fullscreenOrigHeight = String(); - } + // TODO(klausw,crbug.com/698923): If compositor updates are + // suppressed, restore them here. } else { // TODO(junov, crbug.com/695497): Implement for OffscreenCanvas } @@ -661,6 +667,8 @@ m_renderingContext = nullptr; m_contextGL = nullptr; + m_pendingSubmitFrame = false; + m_pendingPreviousFrameRender = false; } void VRDisplay::OnActivate(device::mojom::blink::VRDisplayEventReason reason) { @@ -683,18 +691,12 @@ switch (error) { case device::mojom::blink::VRVSyncProvider::Status::SUCCESS: break; - case device::mojom::blink::VRVSyncProvider::Status::RETRY: - m_vrVSyncProvider->GetVSync(convertToBaseCallback( - WTF::bind(&VRDisplay::OnVSync, wrapWeakPersistent(this)))); + case device::mojom::blink::VRVSyncProvider::Status::CLOSING: return; } m_pendingVsync = false; - if (m_displayBlurred) - return; - if (!m_scriptedAnimationController) - return; Document* doc = this->document(); - if (!doc) + if (!doc || m_displayBlurred || !m_scriptedAnimationController) return; WTF::TimeDelta timeDelta = @@ -716,6 +718,8 @@ if (!m_navigatorVR->isFocused() || m_vrVSyncProvider.is_bound()) return; m_display->GetVRVSyncProvider(mojo::MakeRequest(&m_vrVSyncProvider)); + m_vrVSyncProvider.set_connection_error_handler(convertToBaseCallback( + WTF::bind(&VRDisplay::OnVSyncConnectionError, wrapWeakPersistent(this)))); if (m_pendingRaf && !m_displayBlurred) { m_pendingVsync = true; m_vrVSyncProvider->GetVSync(convertToBaseCallback( @@ -723,42 +727,9 @@ } } -void VRDisplay::onFullscreenCheck(TimerBase*) { - DCHECK(m_layer.source().isHTMLCanvasElement()); - if (!m_isPresenting) { - m_fullscreenCheckTimer.stop(); - return; - } - // TODO: This is a temporary measure to track if fullscreen mode has been - // exited by the UA. If so we need to end VR presentation. Soon we won't - // depend on the Fullscreen API to fake VR presentation, so this will - // become unnessecary. Until that point, though, this seems preferable to - // adding a bunch of notification plumbing to Fullscreen. - if (!Fullscreen::isCurrentFullScreenElement( - *m_layer.source().getAsHTMLCanvasElement())) { - // TODO(mthiesse): Due to asynchronous resizing, we might get kicked out of - // fullscreen when changing display parameters upon entering WebVR. So one - // time only, we reenter fullscreen after having left it; otherwise we exit - // presentation. - if (m_reenteredFullscreen) { - m_isPresenting = false; - OnPresentChange(); - m_fullscreenCheckTimer.stop(); - if (m_display) - m_display->ExitPresent(); - return; - } - m_reenteredFullscreen = true; - auto canvas = m_layer.source().getAsHTMLCanvasElement(); - Document* doc = this->document(); - std::unique_ptr<UserGestureIndicator> gestureIndicator; - if (doc) { - gestureIndicator = WTF::wrapUnique( - new UserGestureIndicator(DocumentUserGestureToken::create( - doc, UserGestureToken::Status::PossiblyExistingGesture))); - } - Fullscreen::requestFullscreen(*canvas); - } +void VRDisplay::OnVSyncConnectionError() { + m_vrVSyncProvider.reset(); + ConnectVSyncProvider(); } ScriptedAnimationController& VRDisplay::ensureScriptedAnimationController(
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.h b/third_party/WebKit/Source/modules/vr/VRDisplay.h index af955c5..3eaa741 100644 --- a/third_party/WebKit/Source/modules/vr/VRDisplay.h +++ b/third_party/WebKit/Source/modules/vr/VRDisplay.h
@@ -41,7 +41,8 @@ class VRDisplay final : public EventTargetWithInlineData, public ActiveScriptWrappable<VRDisplay>, public ContextLifecycleObserver, - public device::mojom::blink::VRDisplayClient { + public device::mojom::blink::VRDisplayClient, + public device::mojom::blink::VRSubmitFrameClient { DEFINE_WRAPPERTYPEINFO(); USING_GARBAGE_COLLECTED_MIXIN(VRDisplay); USING_PRE_FINALIZER(VRDisplay, dispose); @@ -116,7 +117,6 @@ VRController* controller(); private: - void onFullscreenCheck(TimerBase*); void onPresentComplete(bool); void onConnected(); @@ -126,6 +126,10 @@ void OnPresentChange(); + // VRSubmitFrameClient + void OnSubmitFrameTransferred(); + void OnSubmitFrameRendered(); + // VRDisplayClient void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override; void OnExitPresent() override; @@ -139,6 +143,7 @@ int16_t frameId, device::mojom::blink::VRVSyncProvider::Status); void ConnectVSyncProvider(); + void OnVSyncConnectionError(); ScriptedAnimationController& ensureScriptedAnimationController(Document*); @@ -162,24 +167,33 @@ double m_depthNear = 0.01; double m_depthFar = 10000.0; + // Current dimensions of the WebVR source canvas. May be different from + // the recommended renderWidth/Height if the client overrides dimensions. + int m_sourceWidth = 0; + int m_sourceHeight = 0; + void dispose(); - TaskRunnerTimer<VRDisplay> m_fullscreenCheckTimer; - String m_fullscreenOrigWidth; - String m_fullscreenOrigHeight; gpu::gles2::GLES2Interface* m_contextGL = nullptr; Member<WebGLRenderingContextBase> m_renderingContext; + // Used to keep the image alive until the next frame if using + // waitForPreviousTransferToFinish. + RefPtr<Image> m_previousImage; + Member<ScriptedAnimationController> m_scriptedAnimationController; bool m_pendingRaf = false; bool m_pendingVsync = false; bool m_inAnimationFrame = false; bool m_displayBlurred = false; - bool m_reenteredFullscreen = false; double m_timebase = -1; + bool m_pendingPreviousFrameRender = false; + bool m_pendingSubmitFrame = false; device::mojom::blink::VRDisplayPtr m_display; + mojo::Binding<device::mojom::blink::VRSubmitFrameClient> + m_submit_frame_client_binding; mojo::Binding<device::mojom::blink::VRDisplayClient> m_displayClientBinding; device::mojom::blink::VRVSyncProviderPtr m_vrVSyncProvider;
diff --git a/third_party/WebKit/public/blink_typemaps.gni b/third_party/WebKit/public/blink_typemaps.gni index 0ae60711..7d0461d4 100644 --- a/third_party/WebKit/public/blink_typemaps.gni +++ b/third_party/WebKit/public/blink_typemaps.gni
@@ -11,5 +11,6 @@ "//cc/ipc/surface_id.typemap", "//cc/ipc/surface_info.typemap", "//cc/ipc/surface_sequence.typemap", + "//gpu/ipc/common/mailbox_holder_for_blink.typemap", "//gpu/ipc/common/sync_token.typemap", ]
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index a61d57e..a6958aa8 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -51098,6 +51098,10 @@ </histogram> <histogram name="Power.BatteryDischargePercentPerHour" units="%"> + <obsolete> + Deprecated 02/2017 in favor of power benchmarks that have less variability + than data from users' machines. + </obsolete> <owner>jeremy@chromium.org</owner> <summary> The percentage of battery capacity used per hour relative to a full @@ -51124,6 +51128,10 @@ </histogram> <histogram name="Power.BatteryDischargeRate_15" units="%"> + <obsolete> + Deprecated 02/2017 in favor of power benchmarks that have less variability + than data from users' machines. + </obsolete> <owner>jeremy@chromium.org</owner> <summary> The percent of depleted battery capacity relative to a full battery over @@ -51138,6 +51146,10 @@ </histogram> <histogram name="Power.BatteryDischargeRate_30" units="%"> + <obsolete> + Deprecated 02/2017 in favor of power benchmarks that have less variability + than data from users' machines. + </obsolete> <owner>jeremy@chromium.org</owner> <summary> The percent of depleted battery capacity relative to a full battery over @@ -51152,6 +51164,10 @@ </histogram> <histogram name="Power.BatteryDischargeRate_5" units="%"> + <obsolete> + Deprecated 02/2017 in favor of power benchmarks that have less variability + than data from users' machines. + </obsolete> <owner>jeremy@chromium.org</owner> <summary> The percent of depleted battery capacity relative to a full battery over
diff --git a/ui/views/OWNERS b/ui/views/OWNERS index adf4500..c4ad8565 100644 --- a/ui/views/OWNERS +++ b/ui/views/OWNERS
@@ -4,3 +4,5 @@ sadrul@chromium.org sky@chromium.org tapted@chromium.org + +# COMPONENT: Internals>Views
diff --git a/ui/views/bubble/OWNERS b/ui/views/bubble/OWNERS index 807123d..f04407c 100644 --- a/ui/views/bubble/OWNERS +++ b/ui/views/bubble/OWNERS
@@ -1,2 +1,4 @@ msw@chromium.org per-file tray_bubble_view.*=stevenjb@chromium.org + +# COMPONENT: UI>Browser>Bubbles
diff --git a/ui/views/controls/tabbed_pane/OWNERS b/ui/views/controls/tabbed_pane/OWNERS index 80d20216..dba3e503 100644 --- a/ui/views/controls/tabbed_pane/OWNERS +++ b/ui/views/controls/tabbed_pane/OWNERS
@@ -1,2 +1,4 @@ ellyjones@chromium.org msw@chromium.org + +# COMPONENT: Internals>Views
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc index c64b0ca..513db16 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -1679,6 +1679,7 @@ max_size_in_pixels_ = maximum_in_pixels; XSizeHints hints; + hints.flags = 0; long supplied_return; XGetWMNormalHints(xdisplay_, xwindow_, &hints, &supplied_return);
diff --git a/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp b/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp index a54aaa9..41b2bcd 100644 --- a/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp +++ b/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp
@@ -6,6 +6,7 @@ { 'target_name': 'cr_slider', 'dependencies': [ + '<(DEPTH)/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp:cr_policy_pref_behavior', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert', '<(DEPTH)/third_party/polymer/v1_0/components-chromium/paper-slider/compiled_resources2.gyp:paper-slider-extracted', ],
diff --git a/ui/webui/resources/cr_elements/cr_slider/cr_slider.html b/ui/webui/resources/cr_elements/cr_slider/cr_slider.html index 890950b..6e07aeb4 100644 --- a/ui/webui/resources/cr_elements/cr_slider/cr_slider.html +++ b/ui/webui/resources/cr_elements/cr_slider/cr_slider.html
@@ -1,10 +1,24 @@ -<link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_behavior.html"> +<link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-slider/paper-slider.html"> <dom-module id="cr-slider"> <template> <style> + :host { + display: inline-flex; + } + + cr-policy-pref-indicator { + -webkit-margin-start: var(--checkbox-spacing); + align-self: center; + } + + #labels[disabled] { + color: var(--paper-grey-400); + } + div.outer { align-items: stretch; display: flex; @@ -41,12 +55,16 @@ width: 100%; } </style> + <template is="dom-if" if="[[pref.controlledBy]]" restamp> + <cr-policy-pref-indicator pref="[[pref]]"></cr-policy-pref-indicator> + </template> <div class="outer"> - <paper-slider id="slider" disabled="[[disabled]]" snaps + <paper-slider id="slider" + disabled$="[[disableSlider_]]" snaps on-immediate-value-changed="onSliderChanged_" max="[[max]]" min="[[min]]"> </paper-slider> - <div id="labels"> + <div id="labels" disabled$="[[disableSlider_]]"> <div id="label-begin">[[labelMin]]</div> <div id="label-end">[[labelMax]]</div> </div>
diff --git a/ui/webui/resources/cr_elements/cr_slider/cr_slider.js b/ui/webui/resources/cr_elements/cr_slider/cr_slider.js index c95743a1..a7be6284 100644 --- a/ui/webui/resources/cr_elements/cr_slider/cr_slider.js +++ b/ui/webui/resources/cr_elements/cr_slider/cr_slider.js
@@ -14,22 +14,15 @@ Polymer({ is: 'cr-slider', + behaviors: [CrPolicyPrefBehavior], + properties: { - /** The value the slider represents and controls. */ - value: { - type: Number, - notify: true, - }, + /** @type {!chrome.settingsPrivate.PrefObject} */ + pref: Object, /** @type {!Array<number>} Values corresponding to each tick. */ tickValues: {type: Array, value: []}, - disabled: { - type: Boolean, - value: false, - reflectToAttribute: true, - }, - min: Number, max: Number, @@ -37,33 +30,48 @@ labelMin: String, labelMax: String, + + /** @private */ + disableSlider_: { + computed: 'computeDisableSlider_(pref.*)', + type: Boolean, + }, }, observers: [ - 'valueChanged_(value, tickValues.*)', + 'valueChanged_(pref.*, tickValues.*)', ], /** - * Sets the |value| property to the value corresponding to the knob position - * after a user action. + * Sets the |pref.value| property to the value corresponding to the knob + * position after a user action. * @private */ onSliderChanged_: function() { + var newValue; if (this.tickValues && this.tickValues.length > 0) - this.value = this.tickValues[this.$.slider.immediateValue]; + newValue = this.tickValues[this.$.slider.immediateValue]; else - this.value = this.$.slider.immediateValue; + newValue = this.$.slider.immediateValue; + + this.set('pref.value', newValue); + }, + + /** @private */ + computeDisableSlider_: function() { + return this.hasAttribute('disabled') || this.isPrefEnforced(); }, /** - * Updates the knob position when |value| changes. If the knob is still being - * dragged, this instead forces |value| back to the current position. + * Updates the knob position when |pref.value| changes. If the knob is still + * being dragged, this instead forces |pref.value| back to the current + * position. * @private */ valueChanged_: function() { // If |tickValues| is empty, simply set current value to the slider. if (this.tickValues.length == 0) { - this.$.slider.value = this.value; + this.$.slider.value = this.pref.value; return; } @@ -76,23 +84,27 @@ this.$.slider.maxMarkers = numTicks < MAX_TICKS ? numTicks : 0; if (this.$.slider.dragging && this.tickValues.length > 0 && - this.value != this.tickValues[this.$.slider.immediateValue]) { + this.pref.value != this.tickValues[this.$.slider.immediateValue]) { // The value changed outside cr-slider but we're still holding the knob, // so set the value back to where the knob was. // Async so we don't confuse Polymer's data binding. this.async(function() { - this.value = this.tickValues[this.$.slider.immediateValue]; + var newValue = this.tickValues[this.$.slider.immediateValue]; + this.set('pref.value', newValue); }); return; } // Convert from the public |value| to the slider index (where the knob // should be positioned on the slider). - var sliderIndex = - this.tickValues.length > 0 ? this.tickValues.indexOf(this.value) : 0; + var sliderIndex = this.tickValues.length > 0 ? + this.tickValues.indexOf(/** @type {number} */ (this.pref.value)) : + 0; if (sliderIndex == -1) { // No exact match. - sliderIndex = this.findNearestIndex_(this.tickValues, this.value); + sliderIndex = this.findNearestIndex_( + this.tickValues, + /** @type {number} */ (this.pref.value)); } this.$.slider.value = sliderIndex; },
diff --git a/ui/webui/resources/cr_elements/network/cr_network_list_item.html b/ui/webui/resources/cr_elements/network/cr_network_list_item.html index 8a03c87..96bac4f 100644 --- a/ui/webui/resources/cr_elements/network/cr_network_list_item.html +++ b/ui/webui/resources/cr_elements/network/cr_network_list_item.html
@@ -4,8 +4,8 @@ <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html"> <link rel="import" href="chrome://resources/cr_elements/network/cr_network_icon.html"> <link rel="import" href="chrome://resources/cr_elements/network/cr_onc_types.html"> +<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html"> <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_behavior.html"> -<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html"> <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html"> <dom-module id="cr-network-list-item"> @@ -85,7 +85,7 @@ -webkit-margin-end: 8px; } - cr-policy-pref-indicator { + cr-policy-indicator { padding: 0 var(--cr-icon-padding); } </style> @@ -109,9 +109,9 @@ </div> </div> <template is="dom-if" if="[[isPolicySource(networkState.Source)]]"> - <cr-policy-pref-indicator + <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource(networkState.Source)]]"> - </cr-policy-pref-indicator> + </cr-policy-indicator> </template> <template is="dom-if" if="[[isSubpageButtonVisible_(networkState, showButtons)]]">
diff --git a/ui/webui/resources/cr_elements/policy/README.md b/ui/webui/resources/cr_elements/policy/README.md index 673fd24..90cad32a 100644 --- a/ui/webui/resources/cr_elements/policy/README.md +++ b/ui/webui/resources/cr_elements/policy/README.md
@@ -19,10 +19,10 @@ ## Using an indicator -Elements like `<cr-policy-pref-indicator>` and `<cr-policy-network-indicator>` -are provided to be reused in WebUI pages: +Elements like `<cr-policy-indicator>` and `<cr-policy-pref-indicator>` are +provided to be reused in WebUI pages: - <cr-policy-pref-indicator pref="[[pref]]"></cr-policy-pref-indicator> + <cr-policy-indicator indicator-type="userPolicy"></cr-policy-indicator> Example: [settings-checkbox].
diff --git a/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp b/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp index 9f82600b..d1fc61e3 100644 --- a/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp +++ b/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp
@@ -4,6 +4,14 @@ { 'targets': [ { + 'target_name': 'cr_policy_indicator', + 'dependencies': [ + '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert', + 'cr_policy_indicator_behavior', + ], + 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { 'target_name': 'cr_policy_indicator_behavior', 'dependencies': [ '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
diff --git a/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html new file mode 100644 index 0000000..cff4f8c --- /dev/null +++ b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html
@@ -0,0 +1,28 @@ +<link rel="import" href="chrome://resources/cr_elements/icons.html"> +<link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-tooltip/paper-tooltip.html"> +<link rel="import" href="cr_policy_indicator_behavior.html"> +<link rel="import" href="cr_policy_vars_css.html"> + +<dom-module id="cr-policy-indicator"> + <style> + :host { + @apply(--cr-policy-indicator); + } + + paper-tooltip { + --paper-tooltip: var(--cr-policy-tooltip); + } + </style> + <template> + <iron-icon id="indicator" tabindex="0" aria-label$="[[iconAriaLabel]]" + aria-describedby="tooltip" hidden$="[[!indicatorVisible]]" + icon="[[indicatorIcon]]"></iron-icon> + <paper-tooltip id="tooltip" for="indicator" position="top" + fit-to-visible-bounds> + [[indicatorTooltip]] + </paper-tooltip> + </template> + <script src="cr_policy_indicator.js"></script> +</dom-module>
diff --git a/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js new file mode 100644 index 0000000..bf4f0c5 --- /dev/null +++ b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js
@@ -0,0 +1,14 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** @fileoverview Polymer element for indicating policies by type. */ +Polymer({ + is: 'cr-policy-indicator', + + behaviors: [CrPolicyIndicatorBehavior], + + properties: { + iconAriaLabel: String, + }, +});
diff --git a/ui/webui/resources/cr_elements_resources.grdp b/ui/webui/resources/cr_elements_resources.grdp index a643686..162cc35a 100644 --- a/ui/webui/resources/cr_elements_resources.grdp +++ b/ui/webui/resources/cr_elements_resources.grdp
@@ -83,6 +83,12 @@ type="chrome_html" preprocess="true" /> </if> + <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_HTML" + file="../../webui/resources/cr_elements/policy/cr_policy_indicator.html" + type="chrome_html" /> + <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_JS" + file="../../webui/resources/cr_elements/policy/cr_policy_indicator.js" + type="chrome_html" /> <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_BEHAVIOR_HTML" file="../../webui/resources/cr_elements/policy/cr_policy_indicator_behavior.html" type="chrome_html" />