diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn index fa4ec72c..5b19530 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn
@@ -137,7 +137,7 @@ # to configure warnings. is_clang = current_os == "mac" || current_os == "ios" || current_os == "chromeos" || - current_os == "fuchsia" || + current_os == "fuchsia" || current_os == "win" || (current_os == "linux" && current_cpu != "s390x" && current_cpu != "s390" && current_cpu != "ppc64" && current_cpu != "ppc")
diff --git a/cc/paint/skia_paint_canvas.cc b/cc/paint/skia_paint_canvas.cc index 8c69d875..a01e4eb 100644 --- a/cc/paint/skia_paint_canvas.cc +++ b/cc/paint/skia_paint_canvas.cc
@@ -8,6 +8,7 @@ #include "cc/paint/display_item_list.h" #include "cc/paint/paint_recorder.h" #include "third_party/skia/include/core/SkAnnotation.h" +#include "third_party/skia/include/core/SkColorSpaceXformCanvas.h" #include "third_party/skia/include/core/SkMetaData.h" #include "third_party/skia/include/utils/SkNWayCanvas.h" @@ -22,8 +23,23 @@ const SkSurfaceProps& props) : canvas_(new SkCanvas(bitmap, props)), owned_(canvas_) {} +SkiaPaintCanvas::SkiaPaintCanvas(SkCanvas* canvas, + sk_sp<SkColorSpace> target_color_space) + : canvas_(canvas) { + WrapCanvasInColorSpaceXformCanvas(target_color_space); +} + SkiaPaintCanvas::~SkiaPaintCanvas() = default; +void SkiaPaintCanvas::WrapCanvasInColorSpaceXformCanvas( + sk_sp<SkColorSpace> target_color_space) { + if (target_color_space) { + color_space_xform_canvas_ = + SkCreateColorSpaceXformCanvas(canvas_, target_color_space); + canvas_ = color_space_xform_canvas_.get(); + } +} + SkMetaData& SkiaPaintCanvas::getMetaData() { return canvas_->getMetaData(); }
diff --git a/cc/paint/skia_paint_canvas.h b/cc/paint/skia_paint_canvas.h index 1fd313b53..a1b174a2 100644 --- a/cc/paint/skia_paint_canvas.h +++ b/cc/paint/skia_paint_canvas.h
@@ -28,6 +28,9 @@ explicit SkiaPaintCanvas(SkCanvas* canvas); explicit SkiaPaintCanvas(const SkBitmap& bitmap); explicit SkiaPaintCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props); + // If |target_color_space| is non-nullptr, then this will wrap |canvas| in a + // SkColorSpaceXformCanvas. + SkiaPaintCanvas(SkCanvas* canvas, sk_sp<SkColorSpace> target_color_space); ~SkiaPaintCanvas() override; SkMetaData& getMetaData() override; @@ -139,8 +142,11 @@ using PaintCanvas::drawPicture; private: + void WrapCanvasInColorSpaceXformCanvas( + sk_sp<SkColorSpace> target_color_space); SkCanvas* canvas_; std::unique_ptr<SkCanvas> owned_; + std::unique_ptr<SkCanvas> color_space_xform_canvas_; DISALLOW_COPY_AND_ASSIGN(SkiaPaintCanvas); };
diff --git a/chrome/VERSION b/chrome/VERSION index 2ab7b9b..b5cad96 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=61 MINOR=0 -BUILD=3115 +BUILD=3116 PATCH=0
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc index 1ba1bd5..5c032d1 100644 --- a/chrome/browser/after_startup_task_utils.cc +++ b/chrome/browser/after_startup_task_utils.cc
@@ -13,6 +13,7 @@ #include "base/metrics/histogram_macros.h" #include "base/process/process_info.h" #include "base/rand_util.h" +#include "base/sequence_checker.h" #include "base/synchronization/atomic_flag.h" #include "base/task_runner.h" #include "base/tracked_objects.h" @@ -122,16 +123,19 @@ // Observes the first visible page load and sets the startup complete // flag accordingly. -class StartupObserver : public WebContentsObserver, public base::NonThreadSafe { +class StartupObserver : public WebContentsObserver { public: StartupObserver() : weak_factory_(this) {} - ~StartupObserver() override { DCHECK(IsBrowserStartupComplete()); } + ~StartupObserver() override { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(IsBrowserStartupComplete()); + } void Start(); private: void OnStartupComplete() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); SetBrowserStartupIsComplete(); delete this; } @@ -156,6 +160,8 @@ void WebContentsDestroyed() override { OnStartupComplete(); } + SEQUENCE_CHECKER(sequence_checker_); + base::WeakPtrFactory<StartupObserver> weak_factory_; DISALLOW_COPY_AND_ASSIGN(StartupObserver);
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index fca71f7..7334e710 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc
@@ -278,6 +278,7 @@ } BrowserProcessImpl::~BrowserProcessImpl() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if BUILDFLAG(ENABLE_EXTENSIONS) extensions::ExtensionsBrowserClient::Set(nullptr); #endif @@ -542,7 +543,7 @@ metrics_services_manager::MetricsServicesManager* BrowserProcessImpl::GetMetricsServicesManager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!metrics_services_manager_) { metrics_services_manager_.reset( new metrics_services_manager::MetricsServicesManager( @@ -553,28 +554,28 @@ } metrics::MetricsService* BrowserProcessImpl::metrics_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return GetMetricsServicesManager()->GetMetricsService(); } rappor::RapporServiceImpl* BrowserProcessImpl::rappor_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return GetMetricsServicesManager()->GetRapporServiceImpl(); } ukm::UkmRecorder* BrowserProcessImpl::ukm_recorder() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return GetMetricsServicesManager()->GetUkmService(); } IOThread* BrowserProcessImpl::io_thread() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(io_thread_.get()); return io_thread_.get(); } WatchDogThread* BrowserProcessImpl::watchdog_thread() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_watchdog_thread_) CreateWatchdogThread(); DCHECK(watchdog_thread_.get() != NULL); @@ -582,26 +583,26 @@ } ProfileManager* BrowserProcessImpl::profile_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_profile_manager_) CreateProfileManager(); return profile_manager_.get(); } PrefService* BrowserProcessImpl::local_state() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_local_state_) CreateLocalState(); return local_state_.get(); } net::URLRequestContextGetter* BrowserProcessImpl::system_request_context() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return io_thread()->system_url_request_context_getter(); } variations::VariationsService* BrowserProcessImpl::variations_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return GetMetricsServicesManager()->GetVariationsService(); } @@ -619,7 +620,7 @@ } NotificationUIManager* BrowserProcessImpl::notification_ui_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // TODO(miguelg) return NULL for MAC as well once native notifications // are enabled by default. #if defined(OS_ANDROID) @@ -642,12 +643,12 @@ } message_center::MessageCenter* BrowserProcessImpl::message_center() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return message_center::MessageCenter::Get(); } policy::BrowserPolicyConnector* BrowserProcessImpl::browser_policy_connector() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_browser_policy_connector_) { DCHECK(!browser_policy_connector_); browser_policy_connector_ = platform_part_->CreateBrowserPolicyConnector(); @@ -661,21 +662,21 @@ } IconManager* BrowserProcessImpl::icon_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_icon_manager_) CreateIconManager(); return icon_manager_.get(); } GpuProfileCache* BrowserProcessImpl::gpu_profile_cache() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!gpu_profile_cache_.get()) gpu_profile_cache_.reset(GpuProfileCache::Create()); return gpu_profile_cache_.get(); } GpuModeManager* BrowserProcessImpl::gpu_mode_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!gpu_mode_manager_.get()) gpu_mode_manager_.reset(new GpuModeManager()); return gpu_mode_manager_.get(); @@ -684,7 +685,7 @@ void BrowserProcessImpl::CreateDevToolsHttpProtocolHandler( const std::string& ip, uint16_t port) { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if !defined(OS_ANDROID) // StartupBrowserCreator::LaunchBrowser can be run multiple times when browser // is started with several profiles or existing browser process is reused. @@ -695,7 +696,7 @@ } void BrowserProcessImpl::CreateDevToolsAutoOpener() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if !defined(OS_ANDROID) // StartupBrowserCreator::LaunchBrowser can be run multiple times when browser // is started with several profiles or existing browser process is reused. @@ -705,21 +706,21 @@ } bool BrowserProcessImpl::IsShuttingDown() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // TODO(crbug.com/560486): Fix the tests that make the check of // |tearing_down_| necessary here. return shutting_down_ || tearing_down_; } printing::PrintJobManager* BrowserProcessImpl::print_job_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return print_job_manager_.get(); } printing::PrintPreviewDialogController* BrowserProcessImpl::print_preview_dialog_controller() { #if BUILDFLAG(ENABLE_PRINT_PREVIEW) - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!print_preview_dialog_controller_.get()) CreatePrintPreviewDialogController(); return print_preview_dialog_controller_.get(); @@ -732,7 +733,7 @@ printing::BackgroundPrintingManager* BrowserProcessImpl::background_printing_manager() { #if BUILDFLAG(ENABLE_PRINT_PREVIEW) - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!background_printing_manager_.get()) CreateBackgroundPrintingManager(); return background_printing_manager_.get(); @@ -743,7 +744,7 @@ } IntranetRedirectDetector* BrowserProcessImpl::intranet_redirect_detector() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!intranet_redirect_detector_.get()) CreateIntranetRedirectDetector(); return intranet_redirect_detector_.get(); @@ -801,14 +802,14 @@ } gcm::GCMDriver* BrowserProcessImpl::gcm_driver() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!gcm_driver_) CreateGCMDriver(); return gcm_driver_.get(); } memory::TabManager* BrowserProcessImpl::GetTabManager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) if (!tab_manager_.get()) tab_manager_.reset(new memory::TabManager()); @@ -825,7 +826,7 @@ physical_web::PhysicalWebDataSource* BrowserProcessImpl::GetPhysicalWebDataSource() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if defined(OS_ANDROID) if (!physical_web_data_source_) { CreatePhysicalWebDataSource(); @@ -875,14 +876,14 @@ } DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!download_request_limiter_.get()) download_request_limiter_ = new DownloadRequestLimiter(); return download_request_limiter_.get(); } BackgroundModeManager* BrowserProcessImpl::background_mode_manager() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); #if BUILDFLAG(ENABLE_BACKGROUND) if (!background_mode_manager_.get()) CreateBackgroundModeManager(); @@ -901,7 +902,7 @@ } StatusTray* BrowserProcessImpl::status_tray() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!status_tray_.get()) CreateStatusTray(); return status_tray_.get(); @@ -909,7 +910,7 @@ safe_browsing::SafeBrowsingService* BrowserProcessImpl::safe_browsing_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_safe_browsing_service_) CreateSafeBrowsingService(); return safe_browsing_service_.get(); @@ -917,7 +918,7 @@ safe_browsing::ClientSideDetectionService* BrowserProcessImpl::safe_browsing_detection_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (safe_browsing_service()) return safe_browsing_service()->safe_browsing_detection_service(); return NULL; @@ -925,7 +926,7 @@ subresource_filter::ContentRulesetService* BrowserProcessImpl::subresource_filter_ruleset_service() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_subresource_filter_ruleset_service_) CreateSubresourceFilterRulesetService(); return subresource_filter_ruleset_service_.get(); @@ -1321,7 +1322,7 @@ } void BrowserProcessImpl::Pin() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // CHECK(!IsShuttingDown()); if (IsShuttingDown()) { @@ -1333,7 +1334,7 @@ } void BrowserProcessImpl::Unpin() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); release_last_reference_callstack_ = base::debug::StackTrace(); shutting_down_ = true;
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h index ac66b06..b3f81e36 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h
@@ -18,7 +18,7 @@ #include "base/debug/stack_trace.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/threading/non_thread_safe.h" +#include "base/sequence_checker.h" #include "base/timer/timer.h" #include "build/build_config.h" #include "chrome/browser/browser_process.h" @@ -65,7 +65,6 @@ // Real implementation of BrowserProcess that creates and returns the services. class BrowserProcessImpl : public BrowserProcess, - public base::NonThreadSafe, public KeepAliveStateObserver { public: // |local_state_task_runner| must be a shutdown-blocking task runner. @@ -354,6 +353,8 @@ std::unique_ptr<physical_web::PhysicalWebDataSource> physical_web_data_source_; + SEQUENCE_CHECKER(sequence_checker_); + DISALLOW_COPY_AND_ASSIGN(BrowserProcessImpl); };
diff --git a/chrome/browser/browser_process_platform_part_chromeos.cc b/chrome/browser/browser_process_platform_part_chromeos.cc index c8340b7..08f4c21 100644 --- a/chrome/browser/browser_process_platform_part_chromeos.cc +++ b/chrome/browser/browser_process_platform_part_chromeos.cc
@@ -32,7 +32,9 @@ BrowserProcessPlatformPart::BrowserProcessPlatformPart() : created_profile_helper_(false) {} -BrowserProcessPlatformPart::~BrowserProcessPlatformPart() {} +BrowserProcessPlatformPart::~BrowserProcessPlatformPart() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} void BrowserProcessPlatformPart::InitializeAutomaticRebootManager() { DCHECK(!automatic_reboot_manager_); @@ -95,7 +97,7 @@ } chromeos::ProfileHelper* BrowserProcessPlatformPart::profile_helper() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!created_profile_helper_) CreateProfileHelper(); return profile_helper_.get();
diff --git a/chrome/browser/browser_process_platform_part_chromeos.h b/chrome/browser/browser_process_platform_part_chromeos.h index e0c970e1..11348eff 100644 --- a/chrome/browser/browser_process_platform_part_chromeos.h +++ b/chrome/browser/browser_process_platform_part_chromeos.h
@@ -11,7 +11,7 @@ #include "base/compiler_specific.h" #include "base/containers/flat_set.h" #include "base/macros.h" -#include "base/threading/non_thread_safe.h" +#include "base/sequence_checker.h" #include "chrome/browser/browser_process_platform_part_base.h" namespace chromeos { @@ -38,8 +38,7 @@ class ScopedKeepAlive; -class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase, - public base::NonThreadSafe { +class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase { public: BrowserProcessPlatformPart(); ~BrowserProcessPlatformPart() override; @@ -132,6 +131,8 @@ base::flat_set<std::string> compatible_cros_components_; + SEQUENCE_CHECKER(sequence_checker_); + DISALLOW_COPY_AND_ASSIGN(BrowserProcessPlatformPart); };
diff --git a/chrome/browser/chromeos/drive/debug_info_collector.cc b/chrome/browser/chromeos/drive/debug_info_collector.cc index bfbb7a5..1ed296b 100644 --- a/chrome/browser/chromeos/drive/debug_info_collector.cc +++ b/chrome/browser/chromeos/drive/debug_info_collector.cc
@@ -110,9 +110,8 @@ blocking_task_runner_->PostTaskAndReply( FROM_HERE, - base::Bind(&IterateFileCacheInternal, - metadata_, - google_apis::CreateRelayCallback(iteration_callback)), + base::BindOnce(&IterateFileCacheInternal, metadata_, + google_apis::CreateRelayCallback(iteration_callback)), completion_callback); }
diff --git a/chrome/browser/chromeos/drive/download_handler.cc b/chrome/browser/chromeos/drive/download_handler.cc index 4be75ca..96b7b38 100644 --- a/chrome/browser/chromeos/drive/download_handler.cc +++ b/chrome/browser/chromeos/drive/download_handler.cc
@@ -287,8 +287,9 @@ return; base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, base::Bind(&DownloadHandler::FreeDiskSpaceIfNeededImmediately, - weak_ptr_factory_.GetWeakPtr()), + FROM_HERE, + base::BindOnce(&DownloadHandler::FreeDiskSpaceIfNeededImmediately, + weak_ptr_factory_.GetWeakPtr()), free_disk_space_delay_); has_pending_free_disk_space_ = true; @@ -322,12 +323,11 @@ // Remove any persisted Drive DownloadItem. crbug.com/171384 if (IsPersistedDriveDownload(drive_tmp_download_path_, download)) { // Remove download later, since doing it here results in a crash. - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&DownloadHandler::RemoveDownload, - weak_ptr_factory_.GetWeakPtr(), - static_cast<void*>(manager), - download->GetId())); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&DownloadHandler::RemoveDownload, + weak_ptr_factory_.GetWeakPtr(), + static_cast<void*>(manager), download->GetId())); } }
diff --git a/chrome/browser/chromeos/drive/file_system_util.cc b/chrome/browser/chromeos/drive/file_system_util.cc index 6be109e..dbb73a7 100644 --- a/chrome/browser/chromeos/drive/file_system_util.cc +++ b/chrome/browser/chromeos/drive/file_system_util.cc
@@ -193,7 +193,8 @@ FileSystemInterface* file_system = GetFileSystemByProfile(profile); if (!file_system || !IsUnderDriveMountPoint(path)) { content::BrowserThread::GetBlockingPool()->PostTask( - FROM_HERE, base::Bind(callback, FILE_ERROR_FAILED, base::FilePath())); + FROM_HERE, + base::BindOnce(callback, FILE_ERROR_FAILED, base::FilePath())); return; } @@ -215,7 +216,7 @@ true /* is_recursive */, callback); } else { base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, FILE_ERROR_OK)); + FROM_HERE, base::BindOnce(callback, FILE_ERROR_OK)); } }
diff --git a/chrome/browser/chromeos/drive/fileapi/async_file_util.cc b/chrome/browser/chromeos/drive/fileapi/async_file_util.cc index a2fae23..bb3debda 100644 --- a/chrome/browser/chromeos/drive/fileapi/async_file_util.cc +++ b/chrome/browser/chromeos/drive/fileapi/async_file_util.cc
@@ -55,15 +55,14 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&fileapi_internal::RunFileSystemCallback, - file_system_getter, function, - on_error_callback.is_null() ? - base::Closure() : - base::Bind(&google_apis::RunTaskWithTaskRunner, - base::ThreadTaskRunnerHandle::Get(), - on_error_callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&fileapi_internal::RunFileSystemCallback, + file_system_getter, function, + on_error_callback.is_null() + ? base::Closure() + : base::Bind(&google_apis::RunTaskWithTaskRunner, + base::ThreadTaskRunnerHandle::Get(), + on_error_callback))); } // Runs CreateOrOpenFile callback based on the given |error| and |file|.
diff --git a/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc b/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc index e42ce7f..df019a6 100644 --- a/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc +++ b/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc
@@ -38,8 +38,8 @@ entry->file_specific_info().is_hosted_document()) { url = GURL(entry->file_specific_info().alternate_url()); } - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, url)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, url)); } // Called on the UI thread after @@ -52,14 +52,14 @@ FileSystemInterface* const file_system = fileapi_internal::GetFileSystemFromUrl(url); if (!file_system) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, GURL())); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, GURL())); return; } const base::FilePath file_path = util::ExtractDrivePathFromFileSystemUrl(url); if (file_path.empty()) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, GURL())); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, GURL())); return; } @@ -136,9 +136,8 @@ const storage::URLCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&GetRedirectURLForContentsOnUIThread, url, callback)); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&GetRedirectURLForContentsOnUIThread, url, callback)); } } // namespace drive
diff --git a/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc b/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc index 684d8415..033d62d 100644 --- a/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc +++ b/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc
@@ -341,9 +341,9 @@ base::File::FLAG_APPEND)) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(callback, - Passed(base::File(base::File::FILE_ERROR_FAILED)), - base::Closure())); + base::BindOnce(callback, + Passed(base::File(base::File::FILE_ERROR_FAILED)), + base::Closure())); return; }
diff --git a/chrome/browser/chromeos/drive/fileapi/webkit_file_stream_writer_impl.cc b/chrome/browser/chromeos/drive/fileapi/webkit_file_stream_writer_impl.cc index 6953256..878d3e5 100644 --- a/chrome/browser/chromeos/drive/fileapi/webkit_file_stream_writer_impl.cc +++ b/chrome/browser/chromeos/drive/fileapi/webkit_file_stream_writer_impl.cc
@@ -28,16 +28,14 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind( - &fileapi_internal::RunFileSystemCallback, - file_system_getter, - base::Bind(&fileapi_internal::CreateWritableSnapshotFile, - drive_path, google_apis::CreateRelayCallback(callback)), - google_apis::CreateRelayCallback(base::Bind( - callback, base::File::FILE_ERROR_FAILED, base::FilePath(), - base::Closure())))); + BrowserThread::UI, FROM_HERE, + base::BindOnce( + &fileapi_internal::RunFileSystemCallback, file_system_getter, + base::Bind(&fileapi_internal::CreateWritableSnapshotFile, drive_path, + google_apis::CreateRelayCallback(callback)), + google_apis::CreateRelayCallback( + base::Bind(callback, base::File::FILE_ERROR_FAILED, + base::FilePath(), base::Closure())))); } } // namespace
diff --git a/chrome/browser/chromeos/drive/write_on_cache_file.cc b/chrome/browser/chromeos/drive/write_on_cache_file.cc index 0430801..0cfbbd3 100644 --- a/chrome/browser/chromeos/drive/write_on_cache_file.cc +++ b/chrome/browser/chromeos/drive/write_on_cache_file.cc
@@ -41,8 +41,9 @@ base::PostTaskWithTraitsAndReply( FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_BLOCKING}, - base::Bind(file_io_task_callback, error, local_cache_path), - base::Bind(&RunCloseCallbackAndReplyTask, close_callback, reply, error)); + base::BindOnce(file_io_task_callback, error, local_cache_path), + base::BindOnce(&RunCloseCallbackAndReplyTask, close_callback, reply, + error)); } } // namespace
diff --git a/chrome/browser/chromeos/extensions/file_manager/device_event_router.cc b/chrome/browser/chromeos/extensions/file_manager/device_event_router.cc index a2e8168..3c4fac88 100644 --- a/chrome/browser/chromeos/extensions/file_manager/device_event_router.cc +++ b/chrome/browser/chromeos/extensions/file_manager/device_event_router.cc
@@ -37,8 +37,8 @@ is_starting_up_ = true; base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, - base::Bind(&DeviceEventRouter::StartupDelayed, - weak_factory_.GetWeakPtr()), + base::BindOnce(&DeviceEventRouter::StartupDelayed, + weak_factory_.GetWeakPtr()), startup_time_delta_); } @@ -130,8 +130,8 @@ DCHECK(thread_checker_.CalledOnValidThread()); base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, - base::Bind(&DeviceEventRouter::SuspendDoneDelayed, - weak_factory_.GetWeakPtr()), + base::BindOnce(&DeviceEventRouter::SuspendDoneDelayed, + weak_factory_.GetWeakPtr()), resume_time_delta_); }
diff --git a/chrome/browser/chromeos/extensions/file_manager/event_router.cc b/chrome/browser/chromeos/extensions/file_manager/event_router.cc index 3e469d7..c667b28c 100644 --- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc +++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc
@@ -540,8 +540,8 @@ if (is_on_drive) { // For Drive, file watching is done via OnDirectoryChanged(). - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, - base::Bind(callback, true)); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(callback, true)); } else { // For local files, start watching using FileWatcher. watcher->WatchLocalFile( @@ -555,8 +555,8 @@ file_watchers_[watch_path] = std::move(watcher); } else { iter->second->AddExtension(extension_id); - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, - base::Bind(callback, true)); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(callback, true)); } }
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc index 1972a4b..c981b2c 100644 --- a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc +++ b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc
@@ -184,8 +184,8 @@ // function. base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(&FileSelectorImpl::FileSelectionCanceled, - base::Unretained(this), static_cast<void*>(NULL))); + base::BindOnce(&FileSelectorImpl::FileSelectionCanceled, + base::Unretained(this), static_cast<void*>(NULL))); } }
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api_test.cc b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api_test.cc index f0de2b0..9e476e8 100644 --- a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api_test.cc +++ b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api_test.cc
@@ -114,7 +114,7 @@ // The callback will take a reference to the function and keep it alive. base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind( + base::BindOnce( &FileBrowserHandlerInternalSelectFileFunction::OnFilePathSelected, function, success_, selected_path_)); delete this; @@ -300,8 +300,10 @@ // Let's check that the file has the expected content. const std::string expected_contents = "hello from test extension."; - content::BrowserThread::PostTask(content::BrowserThread::FILE, FROM_HERE, - base::Bind(&ExpectFileContentEquals, selected_path, expected_contents)); + content::BrowserThread::PostTask( + content::BrowserThread::FILE, FROM_HERE, + base::BindOnce(&ExpectFileContentEquals, selected_path, + expected_contents)); // Make sure test doesn't finish until we check on file thread that the // selected file's content is as expected.
diff --git a/chrome/browser/chromeos/extensions/file_manager/job_event_router.cc b/chrome/browser/chromeos/extensions/file_manager/job_event_router.cc index 529bc17..9a56685 100644 --- a/chrome/browser/chromeos/extensions/file_manager/job_event_router.cc +++ b/chrome/browser/chromeos/extensions/file_manager/job_event_router.cc
@@ -104,8 +104,9 @@ SendDriveFileTransferEvent(); } else if (no_pending_task) { base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, base::Bind(&JobEventRouter::SendDriveFileTransferEvent, - weak_factory_.GetWeakPtr()), + FROM_HERE, + base::BindOnce(&JobEventRouter::SendDriveFileTransferEvent, + weak_factory_.GetWeakPtr()), event_delay_); } }
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc index fd96aa9..cfdd9e3b 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
@@ -138,9 +138,8 @@ BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&NotifyCopyProgress, - profile_id, *operation_id, type, - source_url, destination_url, size)); + base::BindOnce(&NotifyCopyProgress, profile_id, *operation_id, type, + source_url, destination_url, size)); } // Notifies the copy completion to extensions via event router. @@ -172,9 +171,8 @@ BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&NotifyCopyCompletion, - profile_id, *operation_id, - source_url, destination_url, error)); + base::BindOnce(&NotifyCopyCompletion, profile_id, *operation_id, + source_url, destination_url, error)); } // Starts the copy operation via FileSystemOperationRunner. @@ -237,7 +235,7 @@ const std::string& hash) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback, hash)); + base::BindOnce(callback, hash)); } // Calls a response callback on the UI thread. @@ -247,7 +245,7 @@ const base::File::Info& file_info) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback, result, file_info)); + base::BindOnce(callback, result, file_info)); } } // namespace @@ -311,7 +309,7 @@ bool success) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback, success)); + base::BindOnce(callback, success)); } void PostNotificationCallbackTaskToUIThread( @@ -319,7 +317,7 @@ storage::WatcherManager::ChangeType type) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(callback, type)); + base::BindOnce(callback, type)); } } // namespace @@ -356,10 +354,11 @@ file_manager::EventRouter* const event_router = file_manager::EventRouterFactory::GetForProfile(GetProfile()); - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(&FileWatchFunctionBase::RunAsyncOnIOThread, - this, file_system_context, file_system_url, - event_router->GetWeakPtr())); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(&FileWatchFunctionBase::RunAsyncOnIOThread, this, + file_system_context, file_system_url, + event_router->GetWeakPtr())); return true; } @@ -375,7 +374,7 @@ if (!watcher_manager) { BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind( + base::BindOnce( &FileWatchFunctionBase::PerformFallbackFileWatchOperationOnUIThread, this, file_system_url, event_router)); return; @@ -498,10 +497,11 @@ uint64_t* remaining_size = new uint64_t(0); base::PostTaskWithTraitsAndReply( FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, - base::Bind(&GetSizeStatsAsync, volume->mount_path(), total_size, - remaining_size), - base::Bind(&FileManagerPrivateGetSizeStatsFunction::OnGetSizeStats, - this, base::Owned(total_size), base::Owned(remaining_size))); + base::BindOnce(&GetSizeStatsAsync, volume->mount_path(), total_size, + remaining_size), + base::BindOnce(&FileManagerPrivateGetSizeStatsFunction::OnGetSizeStats, + this, base::Owned(total_size), + base::Owned(remaining_size))); } return true; } @@ -667,16 +667,17 @@ file_manager::util::GetDownloadsMountPointName(GetProfile())) { return BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, - base::Bind(&GetFileMetadataOnIOThread, file_system_context, source_url_, - storage::FileSystemOperation::GET_METADATA_FIELD_SIZE, - base::Bind(&FileManagerPrivateInternalStartCopyFunction:: - RunAfterGetFileMetadata, - this))); + base::BindOnce(&GetFileMetadataOnIOThread, file_system_context, + source_url_, + storage::FileSystemOperation::GET_METADATA_FIELD_SIZE, + base::Bind(&FileManagerPrivateInternalStartCopyFunction:: + RunAfterGetFileMetadata, + this))); } return BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind( + base::BindOnce( &FileManagerPrivateInternalStartCopyFunction::RunAfterFreeDiskSpace, this, true)); } @@ -759,10 +760,9 @@ GetProfile(), render_frame_host()); // We don't much take care about the result of cancellation. - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(&CancelCopyOnIOThread, file_system_context, params->copy_id)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(&CancelCopyOnIOThread, + file_system_context, params->copy_id)); SendResponse(true); return true; } @@ -873,10 +873,11 @@ &ComputeChecksumRespondOnUIThread, base::Bind(&FileManagerPrivateInternalComputeChecksumFunction::Respond, this)); - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(&FileStreamMd5Digester::GetMd5Digest, - base::Unretained(digester_.get()), - base::Passed(&reader), result_callback)); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(&FileStreamMd5Digester::GetMd5Digest, + base::Unretained(digester_.get()), base::Passed(&reader), + result_callback)); return true; }
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc index a8864b93..304c7c7 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
@@ -102,11 +102,11 @@ // readable from avfs/fuse if needed. base::PostTaskWithTraits( FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_BLOCKING}, - base::Bind(&EnsureReadableFilePermissionAsync, path, - google_apis::CreateRelayCallback( - base::Bind(&FileManagerPrivateAddMountFunction:: - RunAfterMarkCacheFileAsMounted, - this, path.BaseName())))); + base::BindOnce(&EnsureReadableFilePermissionAsync, path, + google_apis::CreateRelayCallback( + base::Bind(&FileManagerPrivateAddMountFunction:: + RunAfterMarkCacheFileAsMounted, + this, path.BaseName())))); } else { RunAfterMarkCacheFileAsMounted( path.BaseName(), drive::FILE_ERROR_OK, path);
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc index cc9fb9fc..2358ebb6 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc
@@ -357,8 +357,8 @@ } base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::Bind(&GetSelectedFileInfoInternal, profile, base::Passed(¶ms))); + FROM_HERE, base::BindOnce(&GetSelectedFileInfoInternal, profile, + base::Passed(¶ms))); } void SetupProfileFileAccessPermissions(int render_view_process_id,
diff --git a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc index a8a4589..caf05486 100644 --- a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc +++ b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
@@ -243,8 +243,8 @@ (current_offset + 1 < *entry->metadata->size) && (current_length - 1); const int task_id = tracker_.PostTask(base::ThreadTaskRunnerHandle::Get().get(), FROM_HERE, - base::Bind(callback, 1 /* chunk_length */, has_more, - base::File::FILE_OK)); + base::BindOnce(callback, 1 /* chunk_length */, + has_more, base::File::FILE_OK)); task_ids.push_back(task_id); current_offset++; current_length--;
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader_unittest.cc b/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader_unittest.cc index 8238e15..95c271e0 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader_unittest.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader_unittest.cc
@@ -55,7 +55,7 @@ if (return_error_ != net::OK) { base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, return_error_)); + FROM_HERE, base::BindOnce(callback, return_error_)); return net::ERR_IO_PENDING; } @@ -63,14 +63,14 @@ memcpy(buf->data(), fake_data.c_str(), buf_len); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, buf_len)); + FROM_HERE, base::BindOnce(callback, buf_len)); return net::ERR_IO_PENDING; } int64_t GetLength(const net::Int64CompletionCallback& callback) override { DCHECK_EQ(net::OK, return_error_); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, kFileSize)); + FROM_HERE, base::BindOnce(callback, kFileSize)); return net::ERR_IO_PENDING; }
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_writer_unittest.cc b/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_writer_unittest.cc index 7227b1d..dce5438b 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_writer_unittest.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_writer_unittest.cc
@@ -62,7 +62,8 @@ pending_bytes_ += buf_len; base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(callback, write_error_ == net::OK ? buf_len : write_error_)); + base::BindOnce(callback, + write_error_ == net::OK ? buf_len : write_error_)); return net::ERR_IO_PENDING; } @@ -71,7 +72,7 @@ DCHECK_EQ(net::OK, write_error_); ++(*cancel_counter_); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, net::OK)); + FROM_HERE, base::BindOnce(callback, net::OK)); return net::ERR_IO_PENDING; } @@ -80,7 +81,7 @@ flush_log_->push_back(pending_bytes_); pending_bytes_ = 0; base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(callback, net::OK)); + FROM_HERE, base::BindOnce(callback, net::OK)); return net::ERR_IO_PENDING; }
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc index 51d1f5b3..997eff81 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc
@@ -47,9 +47,8 @@ util::FileSystemURLParser parser(url); if (!parser.Parse()) { BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(callback, base::File::FILE_ERROR_SECURITY)); + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, base::File::FILE_ERROR_SECURITY)); return; } @@ -75,11 +74,9 @@ // If the file system got unmounted, then abort the reading operation. if (!file_system_.get()) { - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - callback, 0, false /* has_more */, base::File::FILE_ERROR_ABORT)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, 0, false /* has_more */, + base::File::FILE_ERROR_ABORT)); return; } @@ -103,9 +100,9 @@ if (!file_system_.get()) { BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, - base::Bind(callback, - base::Passed(base::WrapUnique<EntryMetadata>(NULL)), - base::File::FILE_ERROR_ABORT)); + base::BindOnce(callback, + base::Passed(base::WrapUnique<EntryMetadata>(NULL)), + base::File::FILE_ERROR_ABORT)); return; } @@ -151,8 +148,8 @@ if (result == base::File::FILE_OK) file_handle_ = file_handle; - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } // Forwards a metadata to the IO thread. @@ -164,9 +161,8 @@ abort_callback_ = AbortCallback(); BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(callback, base::Passed(&metadata), result)); + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, base::Passed(&metadata), result)); } // Forwards a response of reading from a file to the IO thread. @@ -180,10 +176,9 @@ if (!has_more) abort_callback_ = AbortCallback(); - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(chunk_received_callback, chunk_length, has_more, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(chunk_received_callback, + chunk_length, has_more, result)); } AbortCallback abort_callback_; @@ -213,7 +208,7 @@ // destructor. BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&OperationRunner::CloseRunnerOnUIThread, runner_)); + base::BindOnce(&OperationRunner::CloseRunnerOnUIThread, runner_)); // If a read is in progress, mark it as completed. TRACE_EVENT_ASYNC_END0("file_system_provider", "FileStreamReader::Read", @@ -227,15 +222,11 @@ state_ = INITIALIZING; BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&OperationRunner::OpenFileOnUIThread, - runner_, - url_, - base::Bind(&FileStreamReader::OnOpenFileCompleted, - weak_ptr_factory_.GetWeakPtr(), - pending_closure, - error_callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&OperationRunner::OpenFileOnUIThread, runner_, url_, + base::Bind(&FileStreamReader::OnOpenFileCompleted, + weak_ptr_factory_.GetWeakPtr(), pending_closure, + error_callback))); } void FileStreamReader::OnOpenFileCompleted( @@ -257,14 +248,11 @@ // Verify the last modification time. BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&OperationRunner::GetMetadataOnUIThread, - runner_, - base::Bind(&FileStreamReader::OnInitializeCompleted, - weak_ptr_factory_.GetWeakPtr(), - pending_closure, - error_callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&OperationRunner::GetMetadataOnUIThread, runner_, + base::Bind(&FileStreamReader::OnInitializeCompleted, + weak_ptr_factory_.GetWeakPtr(), pending_closure, + error_callback))); } void FileStreamReader::OnInitializeCompleted( @@ -391,16 +379,11 @@ current_length_ = 0; BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&OperationRunner::ReadFileOnUIThread, - runner_, - buffer, - current_offset_, - buffer_length, - base::Bind(&FileStreamReader::OnReadChunkReceived, - weak_ptr_factory_.GetWeakPtr(), - callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&OperationRunner::ReadFileOnUIThread, runner_, buffer, + current_offset_, buffer_length, + base::Bind(&FileStreamReader::OnReadChunkReceived, + weak_ptr_factory_.GetWeakPtr(), callback))); } void FileStreamReader::GetLengthAfterInitialized( @@ -409,14 +392,11 @@ DCHECK_EQ(INITIALIZED, state_); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind( - &OperationRunner::GetMetadataOnUIThread, - runner_, + BrowserThread::UI, FROM_HERE, + base::BindOnce( + &OperationRunner::GetMetadataOnUIThread, runner_, base::Bind(&FileStreamReader::OnGetMetadataForGetLengthReceived, - weak_ptr_factory_.GetWeakPtr(), - callback))); + weak_ptr_factory_.GetWeakPtr(), callback))); } void FileStreamReader::OnReadChunkReceived(
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.cc b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.cc index 9851d30d..f6e2d30 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer.cc
@@ -40,9 +40,8 @@ util::FileSystemURLParser parser(url); if (!parser.Parse()) { BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(callback, base::File::FILE_ERROR_SECURITY)); + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, base::File::FILE_ERROR_SECURITY)); return; } @@ -66,9 +65,8 @@ // If the file system got unmounted, then abort the writing operation. if (!file_system_.get()) { BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(callback, base::File::FILE_ERROR_ABORT)); + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, base::File::FILE_ERROR_ABORT)); return; } @@ -115,8 +113,8 @@ if (result == base::File::FILE_OK) file_handle_ = file_handle; - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } // Forwards a response of writing to a file to the IO thread. @@ -126,8 +124,8 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); abort_callback_ = AbortCallback(); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } AbortCallback abort_callback_; @@ -151,7 +149,7 @@ if (state_ != CANCELLING) { BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&OperationRunner::CloseRunnerOnUIThread, runner_)); + base::BindOnce(&OperationRunner::CloseRunnerOnUIThread, runner_)); } // If a write is in progress, mark it as completed. @@ -167,15 +165,11 @@ state_ = INITIALIZING; BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&OperationRunner::OpenFileOnUIThread, - runner_, - url_, - base::Bind(&FileStreamWriter::OnOpenFileCompleted, - weak_ptr_factory_.GetWeakPtr(), - pending_closure, - error_callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&OperationRunner::OpenFileOnUIThread, runner_, url_, + base::Bind(&FileStreamWriter::OnOpenFileCompleted, + weak_ptr_factory_.GetWeakPtr(), pending_closure, + error_callback))); } void FileStreamWriter::OnOpenFileCompleted( @@ -262,9 +256,9 @@ // files. BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&OperationRunner::CloseRunnerOnUIThread, runner_)); - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, - base::Bind(callback, net::OK)); + base::BindOnce(&OperationRunner::CloseRunnerOnUIThread, runner_)); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(callback, net::OK)); // If a write is in progress, mark it as completed. TRACE_EVENT_ASYNC_END0("file_system_provider", "FileStreamWriter::Write", @@ -279,7 +273,8 @@ base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(callback, state_ == INITIALIZED ? net::OK : net::ERR_FAILED)); + base::BindOnce(callback, + state_ == INITIALIZED ? net::OK : net::ERR_FAILED)); return net::ERR_IO_PENDING; } @@ -327,17 +322,12 @@ state_ = EXECUTING; BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&OperationRunner::WriteFileOnUIThread, - runner_, - buffer, - current_offset_, - buffer_length, - base::Bind(&FileStreamWriter::OnWriteFileCompleted, - weak_ptr_factory_.GetWeakPtr(), - buffer_length, - callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce( + &OperationRunner::WriteFileOnUIThread, runner_, buffer, + current_offset_, buffer_length, + base::Bind(&FileStreamWriter::OnWriteFileCompleted, + weak_ptr_factory_.GetWeakPtr(), buffer_length, callback))); } } // namespace file_system_provider
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc b/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc index 1ad0dd0..5d62b9de 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc
@@ -54,9 +54,9 @@ std::unique_ptr<EntryMetadata> metadata, base::File::Error result) { if (result != base::File::FILE_OK) { - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(callback, result, base::File::Info())); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result, base::File::Info())); return; } @@ -78,9 +78,9 @@ file_info.is_symbolic_link = false; // Not supported. - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(callback, base::File::FILE_OK, file_info)); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, base::File::FILE_OK, file_info)); } // Executes ReadDirectory on the UI thread. @@ -105,9 +105,9 @@ base::File::Error result, const storage::AsyncFileUtil::EntryList& entry_list, bool has_more) { - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(callback, result, entry_list, has_more)); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result, entry_list, has_more)); } // Executes CreateDirectory on the UI thread. @@ -138,8 +138,8 @@ ? base::File::FILE_OK : result; - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, error)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, error)); } // Executes DeleteEntry on the UI thread. @@ -160,8 +160,8 @@ // Routes the response of DeleteEntry back to the IO thread. void OnDeleteEntry(const storage::AsyncFileUtil::StatusCallback& callback, base::File::Error result) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } // Executes CreateFile on the UI thread. @@ -190,8 +190,8 @@ const base::File::Error error = result == base::File::FILE_ERROR_EXISTS ? base::File::FILE_OK : result; - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, error, created)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, error, created)); } // Executes CopyEntry on the UI thread. @@ -217,8 +217,8 @@ // IO thread. void OnCopyEntry(const storage::AsyncFileUtil::StatusCallback& callback, base::File::Error result) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } // Executes MoveEntry on the UI thread. @@ -244,8 +244,8 @@ // IO thread. void OnMoveEntry(const storage::AsyncFileUtil::StatusCallback& callback, base::File::Error result) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } // Executes Truncate on the UI thread. @@ -266,8 +266,8 @@ // Routes the response of Truncate back to the IO thread. void OnTruncate(const storage::AsyncFileUtil::StatusCallback& callback, base::File::Error result) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, base::Bind(callback, result)); + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, + base::BindOnce(callback, result)); } } // namespace @@ -302,12 +302,9 @@ const EnsureFileExistsCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&CreateFileOnUIThread, - base::Passed(&context), - url, - base::Bind(&OnCreateFileForEnsureFileExists, callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&CreateFileOnUIThread, base::Passed(&context), url, + base::Bind(&OnCreateFileForEnsureFileExists, callback))); } void ProviderAsyncFileUtil::CreateDirectory( @@ -318,14 +315,10 @@ const StatusCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&CreateDirectoryOnUIThread, - base::Passed(&context), - url, - exclusive, - recursive, - base::Bind(&OnCreateDirectory, exclusive, callback))); + BrowserThread::UI, FROM_HERE, + base::BindOnce(&CreateDirectoryOnUIThread, base::Passed(&context), url, + exclusive, recursive, + base::Bind(&OnCreateDirectory, exclusive, callback))); } void ProviderAsyncFileUtil::GetFileInfo( @@ -336,8 +329,8 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&GetFileInfoOnUIThread, base::Passed(&context), url, fields, - base::Bind(&OnGetFileInfo, fields, callback))); + base::BindOnce(&GetFileInfoOnUIThread, base::Passed(&context), url, + fields, base::Bind(&OnGetFileInfo, fields, callback))); } void ProviderAsyncFileUtil::ReadDirectory( @@ -345,12 +338,10 @@ const storage::FileSystemURL& url, const ReadDirectoryCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&ReadDirectoryOnUIThread, - base::Passed(&context), - url, - base::Bind(&OnReadDirectory, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&ReadDirectoryOnUIThread, base::Passed(&context), url, + base::Bind(&OnReadDirectory, callback))); } void ProviderAsyncFileUtil::Touch( @@ -369,13 +360,10 @@ int64_t length, const StatusCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&TruncateOnUIThread, - base::Passed(&context), - url, - length, - base::Bind(&OnTruncate, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&TruncateOnUIThread, base::Passed(&context), url, length, + base::Bind(&OnTruncate, callback))); } void ProviderAsyncFileUtil::CopyFileLocal( @@ -388,13 +376,10 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); // TODO(mtomasz): Consier adding support for options (preserving last modified // time) as well as the progress callback. - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&CopyEntryOnUIThread, - base::Passed(&context), - src_url, - dest_url, - base::Bind(&OnCopyEntry, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&CopyEntryOnUIThread, base::Passed(&context), src_url, + dest_url, base::Bind(&OnCopyEntry, callback))); } void ProviderAsyncFileUtil::MoveFileLocal( @@ -406,13 +391,10 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); // TODO(mtomasz): Consier adding support for options (preserving last modified // time) as well as the progress callback. - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&MoveEntryOnUIThread, - base::Passed(&context), - src_url, - dest_url, - base::Bind(&OnMoveEntry, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&MoveEntryOnUIThread, base::Passed(&context), src_url, + dest_url, base::Bind(&OnMoveEntry, callback))); } void ProviderAsyncFileUtil::CopyInForeignFile( @@ -429,13 +411,11 @@ const storage::FileSystemURL& url, const StatusCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&DeleteEntryOnUIThread, - base::Passed(&context), - url, - false, // recursive - base::Bind(&OnDeleteEntry, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&DeleteEntryOnUIThread, base::Passed(&context), url, + false, // recursive + base::Bind(&OnDeleteEntry, callback))); } void ProviderAsyncFileUtil::DeleteDirectory( @@ -443,13 +423,11 @@ const storage::FileSystemURL& url, const StatusCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&DeleteEntryOnUIThread, - base::Passed(&context), - url, - false, // recursive - base::Bind(&OnDeleteEntry, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&DeleteEntryOnUIThread, base::Passed(&context), url, + false, // recursive + base::Bind(&OnDeleteEntry, callback))); } void ProviderAsyncFileUtil::DeleteRecursively( @@ -457,13 +435,11 @@ const storage::FileSystemURL& url, const StatusCallback& callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BrowserThread::PostTask(BrowserThread::UI, - FROM_HERE, - base::Bind(&DeleteEntryOnUIThread, - base::Passed(&context), - url, - true, // recursive - base::Bind(&OnDeleteEntry, callback))); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::BindOnce(&DeleteEntryOnUIThread, base::Passed(&context), url, + true, // recursive + base::Bind(&OnDeleteEntry, callback))); } void ProviderAsyncFileUtil::CreateSnapshotFile(
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc b/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc index 0a2b63a7..c479bcb 100644 --- a/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc +++ b/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
@@ -25,14 +25,14 @@ base::File::Error error) { DCHECK_CURRENTLY_ON(BrowserThread::UI); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(callback, error)); + base::BindOnce(callback, error)); } void CallNotificationCallbackOnIOThread(const NotificationCallback& callback, ChangeType type) { DCHECK_CURRENTLY_ON(BrowserThread::UI); BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - base::Bind(callback, type)); + base::BindOnce(callback, type)); } void AddWatcherOnUIThread(const storage::FileSystemURL& url, @@ -83,10 +83,10 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&AddWatcherOnUIThread, url, recursive, - base::Bind(&CallStatusCallbackOnIOThread, callback), - base::Bind(&CallNotificationCallbackOnIOThread, - notification_callback))); + base::BindOnce(&AddWatcherOnUIThread, url, recursive, + base::Bind(&CallStatusCallbackOnIOThread, callback), + base::Bind(&CallNotificationCallbackOnIOThread, + notification_callback))); } void WatcherManager::RemoveWatcher(const storage::FileSystemURL& url, @@ -95,8 +95,8 @@ DCHECK_CURRENTLY_ON(BrowserThread::IO); BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&RemoveWatcherOnUIThread, url, recursive, - base::Bind(&CallStatusCallbackOnIOThread, callback))); + base::BindOnce(&RemoveWatcherOnUIThread, url, recursive, + base::Bind(&CallStatusCallbackOnIOThread, callback))); } } // namespace file_system_provider
diff --git a/chrome/browser/chromeos/file_system_provider/queue.cc b/chrome/browser/chromeos/file_system_provider/queue.cc index 66e8d995..b626c986 100644 --- a/chrome/browser/chromeos/file_system_provider/queue.cc +++ b/chrome/browser/chromeos/file_system_provider/queue.cc
@@ -47,7 +47,8 @@ #endif pending_.push_back(Task(token, callback)); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); + FROM_HERE, + base::BindOnce(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); } void Queue::Complete(size_t token) { @@ -55,7 +56,8 @@ DCHECK(it != executed_.end()); executed_.erase(it); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); + FROM_HERE, + base::BindOnce(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); } void Queue::MaybeRun() { @@ -94,7 +96,7 @@ pending_.erase(it); base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); + base::BindOnce(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); return; } }
diff --git a/chrome/browser/chromeos/file_system_provider/scoped_file_opener_unittest.cc b/chrome/browser/chromeos/file_system_provider/scoped_file_opener_unittest.cc index 319831f..f87e6ce 100644 --- a/chrome/browser/chromeos/file_system_provider/scoped_file_opener_unittest.cc +++ b/chrome/browser/chromeos/file_system_provider/scoped_file_opener_unittest.cc
@@ -97,7 +97,7 @@ const ProvidedFileSystemInterface::OpenFileCallback open_callback = file_system.open_callback(); base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(open_callback, 123, base::File::FILE_OK)); + FROM_HERE, base::BindOnce(open_callback, 123, base::File::FILE_OK)); } // Wait until the open callback is called asynchonously.
diff --git a/chrome/browser/process_singleton.h b/chrome/browser/process_singleton.h index 3d126cd9..f0effd2 100644 --- a/chrome/browser/process_singleton.h +++ b/chrome/browser/process_singleton.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_PROCESS_SINGLETON_H_ #define CHROME_BROWSER_PROCESS_SINGLETON_H_ +#include "base/sequence_checker.h" #include "build/build_config.h" #if defined(OS_WIN) @@ -21,7 +22,6 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/process/process.h" -#include "base/threading/non_thread_safe.h" #include "ui/gfx/native_widget_types.h" #if defined(OS_POSIX) && !defined(OS_ANDROID) @@ -47,7 +47,7 @@ // - the Windows implementation uses an invisible global message window; // - the Linux implementation uses a Unix domain socket in the user data dir. -class ProcessSingleton : public base::NonThreadSafe { +class ProcessSingleton { public: // Used to send the reason of remote hang process termination as histogram. enum RemoteHungProcessTerminateReason { @@ -218,6 +218,8 @@ scoped_refptr<LinuxWatcher> watcher_; #endif + SEQUENCE_CHECKER(sequence_checker_); + DISALLOW_COPY_AND_ASSIGN(ProcessSingleton); };
diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc index c684f51..1962d655 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc
@@ -754,6 +754,7 @@ } ProcessSingleton::~ProcessSingleton() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() {
diff --git a/chrome/browser/process_singleton_startup_lock.cc b/chrome/browser/process_singleton_startup_lock.cc index f564de7..939fb236 100644 --- a/chrome/browser/process_singleton_startup_lock.cc +++ b/chrome/browser/process_singleton_startup_lock.cc
@@ -12,7 +12,9 @@ : locked_(true), original_callback_(original_callback) {} -ProcessSingletonStartupLock::~ProcessSingletonStartupLock() {} +ProcessSingletonStartupLock::~ProcessSingletonStartupLock() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} ProcessSingleton::NotificationCallback ProcessSingletonStartupLock::AsNotificationCallback() { @@ -21,7 +23,7 @@ } void ProcessSingletonStartupLock::Unlock() { - DCHECK(CalledOnValidThread()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); locked_ = false; // Replay the command lines of the messages which were received while the
diff --git a/chrome/browser/process_singleton_startup_lock.h b/chrome/browser/process_singleton_startup_lock.h index 9aa69ad..eb3d1fc 100644 --- a/chrome/browser/process_singleton_startup_lock.h +++ b/chrome/browser/process_singleton_startup_lock.h
@@ -12,7 +12,7 @@ #include "base/command_line.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "base/threading/non_thread_safe.h" +#include "base/sequence_checker.h" #include "chrome/browser/process_singleton.h" // Provides a ProcessSingleton::NotificationCallback that can queue up @@ -23,7 +23,7 @@ // when the process is prepared to handle command-line invocations. // // Once unlocked, notifications are forwarded to a wrapped NotificationCallback. -class ProcessSingletonStartupLock : public base::NonThreadSafe { +class ProcessSingletonStartupLock { public: explicit ProcessSingletonStartupLock( const ProcessSingleton::NotificationCallback& original_callback); @@ -51,6 +51,8 @@ std::vector<DelayedStartupMessage> saved_startup_messages_; ProcessSingleton::NotificationCallback original_callback_; + SEQUENCE_CHECKER(sequence_checker_); + DISALLOW_COPY_AND_ASSIGN(ProcessSingletonStartupLock); };
diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc index 1004257..3d83b26 100644 --- a/chrome/browser/process_singleton_win.cc +++ b/chrome/browser/process_singleton_win.cc
@@ -269,6 +269,7 @@ } ProcessSingleton::~ProcessSingleton() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (lock_file_ != INVALID_HANDLE_VALUE) ::CloseHandle(lock_file_); }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index e84b8c78..bc4e7fe 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2710,10 +2710,6 @@ crbug.com/707359 [ Mac ] fast/css-grid-layout/grid-self-baseline-vertical-rl-04.html [ Failure ] crbug.com/707359 [ Mac ] fast/css-grid-layout/grid-self-baseline-vertical-rl-05.html [ Failure ] -# [css-align] -crbug.com/668639 external/wpt/css/css-align-3/default-alignment/place-items-shorthand-006.html [ Failure ] -crbug.com/668639 external/wpt/css/css-align-3/self-alignment/place-self-shorthand-006.html [ Failure ] - # [selectors-4] crbug.com/706118 external/wpt/css/selectors4/hover-001-manual.html [ Skip ] crbug.com/576815 external/wpt/css/selectors4/selectors-dir-selector-ltr-001.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/css-properties-expected.txt b/third_party/WebKit/LayoutTests/css3/flexbox/css-properties-expected.txt index 9880226f..8ac700e 100644 --- a/third_party/WebKit/LayoutTests/css3/flexbox/css-properties-expected.txt +++ b/third_party/WebKit/LayoutTests/css3/flexbox/css-properties-expected.txt
@@ -31,12 +31,12 @@ PASS flexbox.style.justifyContent is "" PASS window.getComputedStyle(flexbox, null).justifyContent is "normal" PASS flexbox.style.alignSelf is "" -PASS window.getComputedStyle(flexbox, null).alignSelf is "normal" -PASS window.getComputedStyle(document.documentElement, null).alignSelf is "normal" +PASS window.getComputedStyle(flexbox, null).alignSelf is "auto" +PASS window.getComputedStyle(document.documentElement, null).alignSelf is "auto" PASS flexbox.style.alignSelf is "" -PASS window.getComputedStyle(flexbox, null).alignSelf is "normal" +PASS window.getComputedStyle(flexbox, null).alignSelf is "auto" PASS flexbox.style.alignSelf is "auto" -PASS window.getComputedStyle(flexbox, null).alignSelf is "normal" +PASS window.getComputedStyle(flexbox, null).alignSelf is "auto" PASS flexbox.style.alignSelf is "flex-start" PASS window.getComputedStyle(flexbox, null).alignSelf is "flex-start" PASS flexbox.style.alignSelf is "flex-end" @@ -48,41 +48,41 @@ PASS flexbox.style.alignSelf is "baseline" PASS window.getComputedStyle(flexbox, null).alignSelf is "baseline" PASS flexbox.style.alignSelf is "" -PASS window.getComputedStyle(flexbox, null).alignSelf is "normal" +PASS window.getComputedStyle(flexbox, null).alignSelf is "auto" PASS flexbox.style.alignItems is "" PASS flexitem.style.alignSelf is "" PASS window.getComputedStyle(flexbox, null).alignItems is "normal" -PASS window.getComputedStyle(flexitem, null).alignSelf is "normal" +PASS window.getComputedStyle(flexitem, null).alignSelf is "auto" PASS flexbox.style.alignItems is "" PASS flexitem.style.alignSelf is "" PASS window.getComputedStyle(flexbox, null).alignItems is "normal" -PASS window.getComputedStyle(flexitem, null).alignSelf is "normal" +PASS window.getComputedStyle(flexitem, null).alignSelf is "auto" PASS flexbox.style.alignItems is "" PASS flexitem.style.alignSelf is "" PASS window.getComputedStyle(flexbox, null).alignItems is "normal" -PASS window.getComputedStyle(flexitem, null).alignSelf is "normal" +PASS window.getComputedStyle(flexitem, null).alignSelf is "auto" PASS flexbox.style.alignItems is "flex-start" PASS flexitem.style.alignSelf is "" PASS window.getComputedStyle(flexbox, null).alignItems is "flex-start" -PASS window.getComputedStyle(flexitem, null).alignSelf is "flex-start" +FAIL window.getComputedStyle(flexitem, null).alignSelf should be flex-start. Was auto. PASS flexbox.style.alignItems is "flex-end" PASS window.getComputedStyle(flexbox, null).alignItems is "flex-end" -PASS window.getComputedStyle(flexitem, null).alignSelf is "flex-end" +FAIL window.getComputedStyle(flexitem, null).alignSelf should be flex-end. Was auto. PASS flexbox.style.alignItems is "center" PASS window.getComputedStyle(flexbox, null).alignItems is "center" -PASS window.getComputedStyle(flexitem, null).alignSelf is "center" +FAIL window.getComputedStyle(flexitem, null).alignSelf should be center. Was auto. PASS flexbox.style.alignItems is "stretch" PASS window.getComputedStyle(flexbox, null).alignItems is "stretch" -PASS window.getComputedStyle(flexitem, null).alignSelf is "stretch" +FAIL window.getComputedStyle(flexitem, null).alignSelf should be stretch. Was auto. PASS flexbox.style.alignItems is "baseline" PASS window.getComputedStyle(flexbox, null).alignItems is "baseline" -PASS window.getComputedStyle(flexitem, null).alignSelf is "baseline" +FAIL window.getComputedStyle(flexitem, null).alignSelf should be baseline. Was auto. PASS flexbox.style.alignItems is "" PASS window.getComputedStyle(flexbox, null).alignItems is "normal" -PASS window.getComputedStyle(flexitem, null).alignSelf is "normal" +PASS window.getComputedStyle(flexitem, null).alignSelf is "auto" PASS flexbox.style.alignItems is "" PASS window.getComputedStyle(flexbox, null).alignItems is "normal" -PASS window.getComputedStyle(flexitem, null).alignSelf is "normal" +PASS window.getComputedStyle(flexitem, null).alignSelf is "auto" PASS window.getComputedStyle(detachedFlexbox, null).alignSelf is "" PASS window.getComputedStyle(detachedFlexItem, null).alignSelf is "" PASS flexbox.style.flexDirection is ""
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/css-properties.html b/third_party/WebKit/LayoutTests/css3/flexbox/css-properties.html index b95bb5a1..75e796e3 100644 --- a/third_party/WebKit/LayoutTests/css3/flexbox/css-properties.html +++ b/third_party/WebKit/LayoutTests/css3/flexbox/css-properties.html
@@ -84,17 +84,17 @@ shouldBeEqualToString('window.getComputedStyle(flexbox, null).justifyContent', 'normal'); shouldBeEqualToString('flexbox.style.alignSelf', ''); -// The initial value is 'auto', which will be resolved depending on parent's style (except for the 'document' element). -shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'normal'); -shouldBeEqualToString('window.getComputedStyle(document.documentElement, null).alignSelf', 'normal'); +// The initial value is 'auto'. +shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'auto'); +shouldBeEqualToString('window.getComputedStyle(document.documentElement, null).alignSelf', 'auto'); flexbox.style.alignSelf = 'foo'; shouldBeEqualToString('flexbox.style.alignSelf', ''); -shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'auto'); flexbox.style.alignSelf = 'auto'; shouldBeEqualToString('flexbox.style.alignSelf', 'auto'); -shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'auto'); flexbox.style.alignSelf = 'flex-start'; shouldBeEqualToString('flexbox.style.alignSelf', 'flex-start'); @@ -118,26 +118,26 @@ flexbox.style.alignSelf = ''; shouldBeEqualToString('flexbox.style.alignSelf', ''); -shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignSelf', 'auto'); shouldBeEqualToString('flexbox.style.alignItems', ''); shouldBeEqualToString('flexitem.style.alignSelf', ''); -// The initial value is 'auto', which will be resolved to 'normal' in case of flexbox containers. +// The initial value is 'auto'. shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignItems', 'normal'); -shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'auto'); flexbox.style.alignItems = 'foo'; shouldBeEqualToString('flexbox.style.alignItems', ''); shouldBeEqualToString('flexitem.style.alignSelf', ''); shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignItems', 'normal'); -shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'auto'); // The 'auto' value is not valid for the align-items property. flexbox.style.alignItems = 'auto'; shouldBeEqualToString('flexbox.style.alignItems', ''); shouldBeEqualToString('flexitem.style.alignSelf', ''); shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignItems', 'normal'); -shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'auto'); flexbox.style.alignItems = 'flex-start'; shouldBeEqualToString('flexbox.style.alignItems', 'flex-start'); @@ -168,12 +168,12 @@ flexbox.style.alignItems = ''; shouldBeEqualToString('flexbox.style.alignItems', ''); shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignItems', 'normal'); -shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'auto'); flexbox.style.display = 'none'; shouldBeEqualToString('flexbox.style.alignItems', ''); shouldBeEqualToString('window.getComputedStyle(flexbox, null).alignItems', 'normal'); -shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'normal'); +shouldBeEqualToString('window.getComputedStyle(flexitem, null).alignSelf', 'auto'); flexbox.style.display = 'flex';
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-align-3/default-alignment/place-items-shorthand-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-align-3/default-alignment/place-items-shorthand-006.html index 7aa3e88..4af3ad5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-align-3/default-alignment/place-items-shorthand-006.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-align-3/default-alignment/place-items-shorthand-006.html
@@ -10,7 +10,7 @@ <script> var values = ["normal", "stretch"].concat(selfPositionValues, baselineValues); values.forEach(function(alignValue) { - ["", "auto"].concat(values).forEach(function(justifyValue) { + [""].concat(values).forEach(function(justifyValue) { var value = (alignValue + " " + justifyValue).trim(); test(function() { checkPlaceShorhand("place-items", alignValue, justifyValue)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/scroll-into-view/check-scroll-position.html b/third_party/WebKit/LayoutTests/external/wpt/scroll-into-view/check-scroll-position.html deleted file mode 100644 index 200491a..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/scroll-into-view/check-scroll-position.html +++ /dev/null
@@ -1,77 +0,0 @@ -<!DOCTYPE HTML> -<script src='/resources/testharness.js'></script> -<script src='/resources/testharnessreport.js'></script> -<title> Check End Position of ScrollIntoView</title> -<div id='container' style='height: 2500px; width: 2500px;'> - <div id='content' style='height: 500px; width: 500px;margin-left: 1000px; margin-right: 1000px; margin-top: 1000px;margin-bottom: 1000px'> - </div> -</div> -<script> - -var frames = 0; -var content_height = 500; -var content_width = 500; -var window_height = document.documentElement.clientHeight; -var window_width = document.documentElement.clientWidth; -var content = document.getElementById('content'); - -function animate (funct, x, y, next) { - if (frames < 500) { - ++frames; - requestAnimationFrame(animate.bind(null, funct, x, y, next)); - } else { - funct.step(function() { - assert_approx_equals(window.scrollX, x, 1); - assert_approx_equals(window.scrollY, y, 1); - funct.done(); - if (next) - next(); - }); - } -} - -var checkNearest = async_test("Smooth ScrollIntoView should scroll the element to the 'nearest' position"); -checkNearest.step(function() { - content.scrollIntoView( - {behavior: 'smooth', block: 'nearest', inlinePosition: 'nearest'}); - frames = 0; - var x = content.offsetLeft + content_width - window_width; - var y = content.offsetTop + content_height - window_height; - animate(checkNearest, x, y, test2); -}); - -var checkStart = async_test("Smooth ScrollIntoView should scroll the element to the 'start' position"); -function test2() { - checkStart.step(function() { - content.scrollIntoView( - {behavior: 'smooth', block: 'start', inlinePosition: 'start'}); - frames = 0; - animate(checkStart, content.offsetLeft, content.offsetTop, test3); - }); -} - -var checkCenter = async_test("Smooth ScrollIntoView should scroll the element to the 'center' position"); -function test3() { - checkCenter.step(function() { - content.scrollIntoView( - {behavior: 'smooth', block: 'center', inlinePosition: 'center'}); - frames = 0; - var x = content.offsetLeft + (content_width - window_width) / 2; - var y = content.offsetTop + (content_height - window_height) / 2; - animate(checkCenter, x, y, test4); - }); -} - -var checkEnd = async_test("Smooth ScrollIntoView should scroll the element to the 'end' position"); -function test4() { - checkEnd.step(function() { - content.scrollIntoView( - {behavior: 'smooth', block: 'end', inlinePosition: 'end'}); - frames = 0; - var x = content.offsetLeft + content_width - window_width; - var y = content.offsetTop + content_height - window_height; - animate(checkEnd, x, y, null); - }); -} - -</script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/windowclient-navigate-worker.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/windowclient-navigate-worker.js new file mode 100644 index 0000000..8c2c2c66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/windowclient-navigate-worker.js
@@ -0,0 +1,66 @@ +function match_query(query_string) { + return self.location.search.substr(1) == query_string; +} + +function navigate_test(e) { + var port = e.data.port; + var url = e.data.url; + + return clients.matchAll({ includeUncontrolled : true }) + .then(function(client_list) { + for (var i = 0; i < client_list.length; i++) { + var client = client_list[i]; + if (client.frameType == 'nested') { + return client.navigate(url); + } + } + port.postMessage('Could not locate window client.'); + }) + .then(function(new_client) { + if (new_client === null) + port.postMessage(new_client); + else + port.postMessage(new_client.url); + }) + .catch(function(error) { + port.postMessage(error.name); + }); +} + +function getTestClient() { + return clients.matchAll({ includeUncontrolled: true }) + .then(function(client_list) { + for (var i = 0; i < client_list.length; i++) { + var client = client_list[i]; + + if (/windowclient-navigate\.https\.html/.test(client.url)) { + return client; + } + } + + throw new Error('Service worker was unable to locate test client.'); + }); +} + +function waitForMessage(client) { + var channel = new MessageChannel(); + client.postMessage({ port: channel.port2 }, [channel.port2]); + + return new Promise(function(resolve) { + channel.port1.onmessage = resolve; + }); +} + +// The worker must remain in the "installing" state for the duration of some +// sub-tests. In order to achieve this coordination without relying on global +// state, the worker must create a message channel with the client from within +// the "install" event handler. +if (match_query('installing')) { + self.addEventListener('install', function(e) { + e.waitUntil(getTestClient().then(waitForMessage)); + }); +} + +self.addEventListener('message', function(e) { + e.waitUntil(navigate_test(e)); + });
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/synced-state.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/synced-state.https.html index d842378b..c4a9b66 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/synced-state.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/synced-state.https.html
@@ -5,60 +5,89 @@ <script src="resources/test-helpers.sub.js"></script> <script> // Tests that ServiceWorker objects representing the same Service Worker -// entity have the same state. JS object equality is not tested, since the spec -// does not require it. +// entity have the same state. JS-level equality is now required according to +// the spec. +'use strict'; + +function nextChange(worker) { + return new Promise(function(resolve, reject) { + worker.addEventListener('statechange', function handler(event) { + try { + worker.removeEventListener('statechange', handler); + resolve(event.currentTarget.state); + } catch (err) { + reject(err); + } + }); + }); +} + promise_test(function(t) { var scope = 'resources/synced-state'; var script = 'resources/empty-worker.js'; + var registration, worker; + return service_worker_unregister_and_register(t, script, scope) - .then(function(registration) { - return new Promise(function(resolve) { - var step = 0; - registration.installing.addEventListener('statechange', - function(e) { - step++; - if (step == 1) { - assert_equals(e.currentTarget.state, 'installed', - 'original SW should be installed'); - assert_equals(registration.installing, null, - 'in installed, .installing should be null'); - // The Activate algorithm may have cleared the waiting worker - // by now. - if (registration.waiting) { - assert_equals(registration.waiting.state, 'installed', - 'in installed, .waiting should be installed'); - assert_equals(registration.active, null, - 'in installed, .active should be null'); - } else { - assert_equals(registration.active.state, 'activating', - 'in installed, .active should be activating'); - } - } else if (step == 2) { - assert_equals(e.currentTarget.state, 'activating', - 'original SW should be activating'); - assert_equals(registration.installing, null, - 'in activating, .installing should be null'); - assert_equals(registration.waiting, null, - 'in activating, .waiting should be null'); - assert_equals( - registration.active.state, 'activating', - 'in activating, .active should be activating'); - } else if (step == 3) { - assert_equals(e.currentTarget.state, 'activated', - 'original SW should be activated'); - assert_equals(registration.installing, null, - 'in activated, .installing should be null'); - assert_equals(registration.waiting, null, - 'in activated, .waiting should be null'); - assert_equals(registration.active.state, 'activated', - 'in activated .active should be activated'); - resolve(); - } - }) - }) + .then(function(r) { + registration = r; + worker = registration.installing; + + t.add_cleanup(function() { + r.unregister(); + }); + + return nextChange(worker); + }) + .then(function(state) { + assert_equals(state, 'installed', + 'original SW should be installed'); + assert_equals(registration.installing, null, + 'in installed, .installing should be null'); + assert_equals(registration.waiting, worker, + 'in installed, .waiting should be equal to the ' + + 'original worker'); + assert_equals(registration.waiting.state, 'installed', + 'in installed, .waiting should be installed'); + assert_equals(registration.active, null, + 'in installed, .active should be null'); + + return nextChange(worker); + }) + .then(function(state) { + assert_equals(state, 'activating', + 'original SW should be activating'); + assert_equals(registration.installing, null, + 'in activating, .installing should be null'); + assert_equals(registration.waiting, null, + 'in activating, .waiting should be null'); + assert_equals(registration.active, worker, + 'in activating, .active should be equal to the ' + + 'original worker'); + assert_equals( + registration.active.state, 'activating', + 'in activating, .active should be activating'); + + return nextChange(worker); + }) + .then(function(state) { + assert_equals(state, 'activated', + 'original SW should be activated'); + assert_equals(registration.installing, null, + 'in activated, .installing should be null'); + assert_equals(registration.waiting, null, + 'in activated, .waiting should be null'); + assert_equals(registration.active, worker, + 'in activated, .active should be equal to the ' + + 'original worker'); + assert_equals(registration.active.state, 'activated', + 'in activated .active should be activated'); }) .then(function() { - return service_worker_unregister_and_done(t, scope); + return navigator.serviceWorker.getRegistration(scope); + }) + .then(function(r) { + assert_equals(r, registration, 'getRegistration should return the ' + + 'same object'); }); }, 'worker objects for the same entity have the same state'); </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/windowclient-navigate.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/windowclient-navigate.https.html new file mode 100644 index 0000000..8fb467a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/windowclient-navigate.https.html
@@ -0,0 +1,178 @@ +<!DOCTYPE html> +<title>Service Worker: WindowClient.navigate() tests</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<body> +<script> +'use strict'; + +const SCOPE = 'resources/blank.html'; +const SCRIPT_URL = 'resources/windowclient-navigate-worker.js'; +const CROSS_ORIGIN_URL = get_host_info()['HTTPS_REMOTE_ORIGIN'] + base_path() + + 'resources/blank.html'; + +navigate_test({ + description: 'normal', + dest_url: 'blank.html?navigate', + expected: normalizeURL(SCOPE) + '?navigate', + }); + +navigate_test({ + description: 'blank url', + dest_url: '', + expected: normalizeURL(SCRIPT_URL) + }); + +navigate_test({ + description: 'in scope but not controlled test on installing worker', + dest_url: 'blank.html?navigate', + expected: 'TypeError', + wait_state: 'installing', + }); + +navigate_test({ + description: 'in scope but not controlled test on active worker', + dest_url: 'blank.html?navigate', + expected: 'TypeError', + should_be_reload: false, + }); + +navigate_test({ + description: 'out of scope', + src_url: '/common/blank.html', + dest_url: 'blank.html?navigate', + expected: 'TypeError', + }); + +navigate_test({ + description: 'cross orgin url', + dest_url: CROSS_ORIGIN_URL, + expected: null + }); + +navigate_test({ + description: 'invalid url (http://[example.com])', + dest_url: 'http://[example].com', + expected: 'TypeError' + }); + +navigate_test({ + description: 'invalid url (view-source://example.com)', + dest_url: 'view-source://example.com', + expected: 'TypeError' + }); + +navigate_test({ + description: 'invalid url (file:///)', + dest_url: 'file:///', + expected: 'TypeError' + }); + +navigate_test({ + description: 'invalid url (about:blank)', + dest_url: 'about:blank', + expected: 'TypeError' + }); + +function navigate_test(override_parameters) { + // default parameters + var parameters = { + description: null, + src_url: SCOPE, + dest_url: null, + expected: null, + wait_state: 'activated', + scope: SCOPE, + should_be_reload: true + }; + var key; + + for (key in override_parameters) + parameters[key] = override_parameters[key]; + + promise_test(function(test) { + var service_worker; + var client_frame; + var registration; + var pausedLifecyclePort; + var script_url = SCRIPT_URL; + + // For in-scope-but-not-controlled test on installing worker, + // if the wait_state is "installing", then append the query to script_url. + if (parameters.wait_state == 'installing') { + script_url += '?' + parameters.wait_state; + + navigator.serviceWorker.addEventListener('message', function(event) { + pausedLifecyclePort = event.data.port; + }); + } + + var cleanup = function() { + if (client_frame && client_frame) { + client_frame.remove(); + } + + // Some tests require that the worker remain in a given lifecycle phase. + // "Clean up" logic for these tests requires signaling the worker to + // release the hold; this allows the worker to be properly discarded + // prior to the execution of additional tests. + if (pausedLifecyclePort) { + // The value of the posted message is inconsequential. A string is + // specified here solely to aid in test debugging. + pausedLifecyclePort.postMessage('continue lifecycle'); + } + + if (registration) { + return registration.unregister(); + } + }; + + var test_body = with_iframe(parameters.src_url) + .then(function(frame) { + client_frame = frame; + return service_worker_unregister_and_register( + test, script_url, parameters.scope); + }) + .then(function(r) { + registration = r; + service_worker = registration.installing; + return wait_for_state(test, service_worker, parameters.wait_state); + }) + .then(function() { + if (parameters.should_be_reload) { + client_frame.remove(); + return with_iframe(parameters.src_url); + } + return client_frame; + }) + .then(function(frame) { + client_frame = frame; + return new Promise(function(resolve) { + var channel = new MessageChannel(); + channel.port1.onmessage = test.step_func(resolve); + service_worker.postMessage({ + port: channel.port2, + url: parameters.dest_url + }, [channel.port2]); + }); + }) + .then(function(response) { + assert_equals(response.data, parameters.expected); + }); + + // Ensure that test "clean up" is deferred until after the test body + // executes. `Test#add_cleanup` cannot be used for this purpose because the + // operation is asynchronous, and `add_cleanup` does not support + // asynchronous operations at the time of this writing. See + // https://github.com/w3c/web-platform-tests/issues/6075 + // Ensure also that test failure is not hidden by successful cleanup + // operation. + return test_body + .then(cleanup, cleanup) + .then(function() { return test_body; }); + }, parameters.description); +} +</script> +</body>
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes-expected.html b/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes-expected.html index 008235b..6104f18 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes-expected.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes-expected.html
@@ -8,18 +8,18 @@ } .grid { display: grid; } .flex { display: flex; } -.itemsCenter { - align-items: center; - justify-items: center; +.selfCenter { + align-self: center; + justify-self: center; } </style> <p>Grid item created as anonymous box to contain the text element. The text element should be centered in both axis due to the Default Alignment 'center' value on its container.</p> -<div class="container grid itemsCenter"> - <div>foobar</div> +<div class="container grid"> + <div class="selfCenter">foobar</div> </div> -<p>Flex item created as anonymous box to contain the text element. The text element should be centered in both axis due to the Default Alignment 'center' value on its container.</p> -<div class="container flex itemsCenter"> - <div>foobar</div> +<p>Flex item created as anonymous box to contain the text element. The text element should be centered in cross axis due to the Default Alignment 'center' value on its container.</p> +<div class="container flex"> + <div class="selfCenter">foobar</div> </div>
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes.html b/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes.html index f7de8d7..e05e095 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/alignment-and-anomymous-boxes.html
@@ -19,7 +19,7 @@ foobar </div> -<p>Flex item created as anonymous box to contain the text element. The text element should be centered in both axis due to the Default Alignment 'center' value on its container.</p> +<p>Flex item created as anonymous box to contain the text element. The text element should be centered in cross axis due to the Default Alignment 'center' value on its container.</p> <div class="container flex itemsCenter"> foobar </div>
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/ensure-flexbox-compatibility-with-initial-values-expected.txt b/third_party/WebKit/LayoutTests/fast/alignment/ensure-flexbox-compatibility-with-initial-values-expected.txt index b1a3b03c5..1e0e745 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/ensure-flexbox-compatibility-with-initial-values-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/alignment/ensure-flexbox-compatibility-with-initial-values-expected.txt
@@ -6,37 +6,37 @@ Verifying initial values are supported when grid is ENABLED. PASS CSS.supports('align-items', 'normal') is true -PASS CSS.supports('align-self', 'normal') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'normal') is true PASS CSS.supports('justify-content', 'normal') is true PASS CSS.supports('align-items', 'normal') is true -PASS CSS.supports('align-self', 'normal') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'normal') is true PASS CSS.supports('justify-content', 'normal') is true PASS CSS.supports('align-items', 'normal') is true -PASS CSS.supports('align-self', 'normal') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'normal') is true PASS CSS.supports('justify-content', 'normal') is true PASS CSS.supports('align-items', 'normal') is true -PASS CSS.supports('align-self', 'normal') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'normal') is true PASS CSS.supports('justify-content', 'normal') is true Verifying initial values are supported when grid is DISABLED. PASS CSS.supports('align-items', 'stretch') is true -PASS CSS.supports('align-self', 'stretch') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'stretch') is true PASS CSS.supports('justify-content', 'flex-start') is true PASS CSS.supports('align-items', 'stretch') is true -PASS CSS.supports('align-self', 'stretch') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'stretch') is true PASS CSS.supports('justify-content', 'flex-start') is true PASS CSS.supports('align-items', 'stretch') is true -PASS CSS.supports('align-self', 'stretch') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'stretch') is true PASS CSS.supports('justify-content', 'flex-start') is true PASS CSS.supports('align-items', 'stretch') is true -PASS CSS.supports('align-self', 'stretch') is true +PASS CSS.supports('align-self', 'auto') is true PASS CSS.supports('align-content', 'stretch') is true PASS CSS.supports('justify-content', 'flex-start') is true PASS successfullyParsed is true
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/new-alignment-values-invalid-if-grid-not-enabled.html b/third_party/WebKit/LayoutTests/fast/alignment/new-alignment-values-invalid-if-grid-not-enabled.html index 5bd8055..b767aa9 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/new-alignment-values-invalid-if-grid-not-enabled.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/new-alignment-values-invalid-if-grid-not-enabled.html
@@ -29,10 +29,10 @@ container.style.webkitAlignItems = value; if (gridEnabled) { checkValues(container, "alignItems", "align-items", value, computedValue); - checkValues(item, "alignSelf", "align-self", "auto", computedValue); + checkValues(item, "alignSelf", "align-self", "auto", "auto"); } else { checkValues(container, "alignItems", "align-items", "flex-end", "flex-end"); - checkValues(item, "alignSelf", "align-self", "auto", "flex-end"); + checkValues(item, "alignSelf", "align-self", "auto", "auto"); } }
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-align-self.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-align-self.html index 149c1a0..8e81f78 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-align-self.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-align-self.html
@@ -16,6 +16,10 @@ align-self: stretch; } +#alignSelfNormal { + align-self: normal; +} + #alignSelfStart { align-self: start; } @@ -89,6 +93,7 @@ <div id="alignSelfFirstBaseline"></div> <div id="alignSelfLastBaseline"></div> <div id="alignSelfStretch"></div> +<div id="alignSelfNormal"></div> <div id="alignSelfStart"></div> <div id="alignSelfEnd"></div> <div id="alignSelfCenter"></div> @@ -120,6 +125,8 @@ checkValues(alignSelfLastBaseline, "alignSelf", "align-self", "", "last baseline"); var alignSelfStretch = document.getElementById("alignSelfStretch"); checkValues(alignSelfStretch, "alignSelf", "align-self", "", "stretch"); + var alignSelfNormal = document.getElementById("alignSelfNormal"); + checkValues(alignSelfNormal, "alignSelf", "align-self", "", "normal"); var alignSelfStart = document.getElementById("alignSelfStart"); checkValues(alignSelfStart, "alignSelf", "align-self", "", "start"); var alignSelfEnd = document.getElementById("alignSelfEnd"); @@ -160,7 +167,7 @@ test(function() { element = document.createElement("div"); document.body.appendChild(element); - checkValues(element, "alignSelf", "align-self", "", "normal"); + checkValues(element, "alignSelf", "align-self", "", "auto"); }, "Test initial value of align-self through JS"); test(function() { @@ -186,16 +193,19 @@ element.style.alignSelf = "self-start"; checkValues(element, "alignSelf", "align-self", "self-start", "self-start"); + element.style.alignSelf = "normal"; + checkValues(element, "alignSelf", "align-self", "normal", "normal"); + element.style.alignSelf = "auto"; - checkValues(element, "alignSelf", "align-self", "auto", "normal"); + checkValues(element, "alignSelf", "align-self", "auto", "auto"); container.style.display = "flex"; element.style.alignSelf = "auto"; - checkValues(element, "alignSelf", "align-self", "auto", "normal"); + checkValues(element, "alignSelf", "align-self", "auto", "auto"); container.style.display = "grid"; element.style.alignSelf = "auto"; - checkValues(element, "alignSelf", "align-self", "auto", "normal"); + checkValues(element, "alignSelf", "align-self", "auto", "auto"); element.style.alignSelf = "self-end"; checkValues(element, "alignSelf", "align-self", "self-end", "self-end"); @@ -203,7 +213,7 @@ test(function() { document.documentElement.style.alignSelf = "auto"; - checkValues(document.documentElement, "alignSelf", "align-self", "auto", "normal"); + checkValues(document.documentElement, "alignSelf", "align-self", "auto", "auto"); }, "Test 'auto' value resolution for the root node"); test(function() { @@ -214,6 +224,9 @@ checkBadValues(element, "alignSelf", "align-self", "auto safe"); checkBadValues(element, "alignSelf", "align-self", "auto left"); + checkBadValues(element, "alignSelf", "align-self", "normal unsafe"); + checkBadValues(element, "alignSelf", "align-self", "normal stretch"); + checkBadValues(element, "alignSelf", "align-self", "baseline normal"); checkBadValues(element, "alignSelf", "align-self", "baseline safe"); checkBadValues(element, "alignSelf", "align-self", "baseline center"); checkBadValues(element, "alignSelf", "align-self", "stretch unsafe"); @@ -239,35 +252,35 @@ test(function() { container.style.display = ""; - checkInitialValues(element, "alignSelf", "align-self", "center", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "center", "auto"); }, "Test the value 'initial'"); test(function() { container.style.display = "grid"; - checkInitialValues(element, "alignSelf", "align-self", "left safe", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "left safe", "auto"); }, "Test the value 'initial' for grid containers"); test(function() { container.style.display = "flex"; - checkInitialValues(element, "alignSelf", "align-self", "right unsafe", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "right unsafe", "auto"); }, "Test the value 'initial' for flex containers"); test(function() { container.style.display = ""; element.style.position = "absolute"; - checkInitialValues(element, "alignSelf", "align-self", "left", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "left", "auto"); }, "Test the value 'initial' for positioned elements"); test(function() { container.style.display = "grid"; element.style.position = "absolute"; - checkInitialValues(element, "alignSelf", "align-self", "right", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "right", "auto"); }, "Test the value 'initial' for positioned elements in grid containers"); test(function() { container.style.display = "flex"; element.style.position = "absolute"; - checkInitialValues(element, "alignSelf", "align-self", "end", "normal"); + checkInitialValues(element, "alignSelf", "align-self", "end", "auto"); }, "Test the value 'initial' for positioned elements in grid containers"); test(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements-expected.txt b/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements-expected.txt deleted file mode 100644 index 7f36c08..0000000 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements-expected.txt +++ /dev/null
@@ -1,30 +0,0 @@ -CONSOLE MESSAGE: line 17: -CONSOLE MESSAGE: line 18: *** Test 'auto' value resolution for the document root node. *** -CONSOLE MESSAGE: line 96: -CONSOLE MESSAGE: line 97: *** Test 'auto' value resolution for the shadow DOM root node. *** -CONSOLE MESSAGE: line 104: -CONSOLE MESSAGE: line 149: -CONSOLE MESSAGE: line 150: *** Test 'auto' value resolution for the shadow DOM 'slotted' elements. *** -This is a testharness.js-based test. -Harness Error. harness_status.status = 1 , harness_status.message = 1 duplicate test name: "Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values." -PASS Check out how the DOM's root element resolves the align-self 'auto' values. -PASS Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values. -PASS Check out how the DOM's root element deals with 'auto' value in align-items. -PASS Check out how the DOM's root element resolves the justify-self 'auto' values. -PASS Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values. -PASS Check out how the DOM's root element deals with 'auto' value in justify-items. -PASS Check out how the DOM's root element justify-items's value with 'legacy' keyword is used to resolve any descendant's justify-items 'auto' values. -PASS Check out how the DOM's root element recomputes its descendant's style when 'legacy' keyword is removed from its justify-items value. -PASS Shadow Node inherits from ShadowHost to resolve the 'auto' values for align-self. -PASS Shadow Node inherits from ShadowHost to resolve the 'auto' values for justify-self. -PASS Check out how the 'legacy' keyword in justify-items propagates from the DOM Tree to the Shadow Node. -PASS Check out how align-self uses the 'shadowHost' as 'slotted' element's parent while 'slot' is not assigned. -PASS Check out how justify-self uses the 'shadowHost' as 'slotted' element's parent while 'slot' is not assigned. -PASS Check out how the 'legacy' keyword in justify-items affects the 'slotted' elements while 'slot' is not assigned. -PASS Check out how align-self uses the 'slot' element's parent (Shadow Node) as 'slotted' element' s parent after the 'slot' is assigned. -PASS Check out how justify-self uses the 'slot' element's parent (Shadow Node) as 'slotted' element' s parent after the 'slot' is assigned. -PASS Check out how the 'legacy' keyword affects the 'slotted' elements after the 'slot' is assigned. -PASS The 'slot' element should not use its parent inside the ShadowDOM tree to resolve the align-self 'auto' values because Blink does not support slots in the flat tree. -PASS The 'slot' element should not use its parent inside the ShadowDOM tree to resolve the justify-self 'auto' values because Blink does not support slots in the flat tree. -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements.html index f55eb56..2143395 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-alignment-of-root-elements.html
@@ -21,7 +21,7 @@ document.documentElement.style.alignSelf = "center"; checkValues(document.documentElement, "alignSelf", "align-self", "center", "center"); document.documentElement.style.alignSelf = "auto"; - checkValues(document.documentElement, "alignSelf", "align-self", "auto", "normal"); + checkValues(document.documentElement, "alignSelf", "align-self", "auto", "auto"); }, "Check out how the DOM's root element resolves the align-self 'auto' values."); test(function() { @@ -30,11 +30,11 @@ document.body.style.alignItems = "auto"; // The 'auto' value is not valid for align-items. document.body.style.alignSelf = "auto"; checkValues(document.body, "alignItems", "align-items", "", "normal"); - checkValues(document.body, "alignSelf", "align-self", "auto", "center"); + checkValues(document.body, "alignSelf", "align-self", "auto", "auto"); block.style.alignItems = ""; // Default value is 'normal' for align-items. block.style.alignSelf = "auto"; checkValues(block, "alignItems", "align-items", "", "normal"); - checkValues(block, "alignSelf", "align-self", "auto", "normal"); + checkValues(block, "alignSelf", "align-self", "auto", "auto"); }, "Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values."); test(function() { @@ -48,7 +48,7 @@ document.documentElement.style.justifySelf = "left"; checkValues(document.documentElement, "justifySelf", "justify-self", "left", "left"); document.documentElement.style.justifySelf = "auto"; - checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "normal"); + checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how the DOM's root element resolves the justify-self 'auto' values."); test(function() { @@ -58,18 +58,18 @@ document.body.style.justifyItems = "auto"; document.body.style.justifySelf = "auto"; checkValues(document.body, "justifyItems", "justify-items", "auto", "normal"); - checkValues(document.body, "justifySelf", "justify-self", "auto", "center"); + checkValues(document.body, "justifySelf", "justify-self", "auto", "auto"); block.style.justifyItems = "auto"; block.style.justifySelf = "auto"; checkValues(block, "justifyItems", "justify-items", "auto", "normal"); - checkValues(block, "justifySelf", "justify-self", "auto", "normal"); -}, "Check out how the DOM's root element align-items's value is used to resolve its children's align-self 'auto' values."); + checkValues(block, "justifySelf", "justify-self", "auto", "auto"); +}, "Check out how the DOM's root element justify-items's value is used to resolve its children's justify-self 'auto' values."); test(function() { document.documentElement.style.justifyItems = "auto"; checkValues(document.documentElement, "justifyItems", "justify-items", "auto", "normal"); - checkValues(document.body, "justifySelf", "justify-self", "auto", "normal"); - checkValues(block, "justifySelf", "justify-self", "auto", "normal"); + checkValues(document.body, "justifySelf", "justify-self", "auto", "auto"); + checkValues(block, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how the DOM's root element deals with 'auto' value in justify-items."); test(function() { @@ -78,19 +78,19 @@ document.body.style.justifyItems = "auto"; document.body.style.justifySelf = "auto"; checkValues(document.body, "justifyItems", "justify-items", "auto", "legacy center"); - checkValues(document.body, "justifySelf", "justify-self", "auto", "center"); + checkValues(document.body, "justifySelf", "justify-self", "auto", "auto"); block.style.justifyItems = "auto"; block.style.justifySelf = "auto"; checkValues(block, "justifyItems", "justify-items", "auto", "legacy center"); - checkValues(block, "justifySelf", "justify-self", "auto", "center"); + checkValues(block, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how the DOM's root element justify-items's value with 'legacy' keyword is used to resolve any descendant's justify-items 'auto' values."); test(function() { document.documentElement.style.justifyItems = "auto"; checkValues(document.body, "justifyItems", "justify-items", "auto", "normal"); - checkValues(document.body, "justifySelf", "justify-self", "auto", "normal"); + checkValues(document.body, "justifySelf", "justify-self", "auto", "auto"); checkValues(block, "justifyItems", "justify-items", "auto", "normal"); - checkValues(block, "justifySelf", "justify-self", "auto", "normal"); + checkValues(block, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how the DOM's root element recomputes its descendant's style when 'legacy' keyword is removed from its justify-items value."); console.log(""); @@ -112,7 +112,7 @@ shadowNode.style.alignItems = ""; checkValues(shadowNode, "alignItems", "align-items", "", "normal"); shadowNode.style.alignSelf = "auto"; - checkValues(shadowNode, "alignSelf", "align-self", "auto", "center"); + checkValues(shadowNode, "alignSelf", "align-self", "auto", "auto"); }, "Shadow Node inherits from ShadowHost to resolve the 'auto' values for align-self."); test(function() { @@ -123,7 +123,7 @@ shadowNode.style.justifyItems = ""; checkValues(shadowNode, "justifyItems", "justify-items", "", "normal"); shadowNode.style.justifySelf = "auto"; - checkValues(shadowNode, "justifySelf", "justify-self", "auto", "center"); + checkValues(shadowNode, "justifySelf", "justify-self", "auto", "auto"); }, "Shadow Node inherits from ShadowHost to resolve the 'auto' values for justify-self."); test(function() { @@ -132,14 +132,14 @@ shadowNode.style.justifySelf = "auto"; checkValues(shadowHost, "justifyItems", "justify-items", "auto", "normal"); checkValues(shadowNode, "justifyItems", "justify-items", "right", "right"); - checkValues(shadowNode, "justifySelf", "justify-self", "auto", "normal"); + checkValues(shadowNode, "justifySelf", "justify-self", "auto", "auto"); checkValues(shadowHost, "justifyItems", "justify-items", "auto", "normal"); document.documentElement.style.justifyItems = "legacy center"; checkValues(document.documentElement, "justifyItems", "justify-items", "legacy center", "legacy center"); checkValues(shadowHost, "justifyItems", "justify-items", "auto", "legacy center"); checkValues(shadowNode, "justifyItems", "justify-items", "right", "right"); - checkValues(shadowNode, "justifySelf", "justify-self", "auto", "center"); + checkValues(shadowNode, "justifySelf", "justify-self", "auto", "auto"); shadowNode.style.justifyItems = "auto"; checkValues(shadowNode, "justifyItems", "justify-items", "auto", "legacy center"); document.documentElement.style.justifyItems = "auto"; @@ -161,7 +161,7 @@ slotted.style.alignSelf = "start"; checkValues(slotted, "alignSelf", "align-self", "start", "start"); slotted.style.alignSelf = "auto"; - checkValues(slotted, "alignSelf", "align-self", "auto", "normal"); + checkValues(slotted, "alignSelf", "align-self", "auto", "auto"); }, "Check out how align-self uses the 'shadowHost' as 'slotted' element's parent while 'slot' is not assigned."); test(function() { @@ -174,7 +174,7 @@ slotted.style.justifySelf = "start"; checkValues(slotted, "justifySelf", "justify-self", "start", "start"); slotted.style.justifySelf = "auto"; - checkValues(slotted, "justifySelf", "justify-self", "auto", "normal"); + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how justify-self uses the 'shadowHost' as 'slotted' element's parent while 'slot' is not assigned."); test(function() { @@ -188,11 +188,11 @@ slotted.style.justifyItems = "auto"; checkValues(slotted, "justifyItems", "justify-items", "auto", "normal"); slotted.style.justifySelf = "auto"; - checkValues(slotted, "justifySelf", "justify-self", "auto", "normal"); + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); shadowNode.style.justifyItems = "auto"; checkValues(shadowNode, "justifyItems", "justify-items", "auto", "legacy center"); checkValues(slotted, "justifyItems", "justify-items", "auto", "normal"); - checkValues(slotted, "justifySelf", "justify-self", "auto", "normal"); + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); document.documentElement.style.justifyItems = "auto"; }, "Check out how the 'legacy' keyword in justify-items affects the 'slotted' elements while 'slot' is not assigned."); @@ -211,7 +211,7 @@ slotted.style.alignSelf = "start"; checkValues(slotted, "alignSelf", "align-self", "start", "start"); slotted.style.alignSelf = "auto"; - checkValues(slotted, "alignSelf", "align-self", "auto", "right"); + checkValues(slotted, "alignSelf", "align-self", "auto", "auto"); }, "Check out how align-self uses the 'slot' element's parent (Shadow Node) as 'slotted' element' s parent after the 'slot' is assigned."); test(function() { @@ -224,7 +224,7 @@ slotted.style.justifySelf = "start"; checkValues(slotted, "justifySelf", "justify-self", "start", "start"); slotted.style.justifySelf = "auto"; - checkValues(slotted, "justifySelf", "justify-self", "auto", "right"); + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); }, "Check out how justify-self uses the 'slot' element's parent (Shadow Node) as 'slotted' element' s parent after the 'slot' is assigned."); test(function() { @@ -238,11 +238,11 @@ slotted.style.justifyItems = "auto"; checkValues(slotted, "justifyItems", "justify-items", "auto", "normal"); // Shadow host is not the parent now, but ShadowNode. slotted.style.justifySelf = "auto"; - checkValues(slotted, "justifySelf", "justify-self", "auto", "right"); // Shadow host is not the parent now, but ShadowNode. + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); // Shadow host is not the parent now, but ShadowNode. shadowNode.style.justifyItems = "auto"; checkValues(shadowNode, "justifyItems", "justify-items", "auto", "legacy center"); checkValues(slotted, "justifyItems", "justify-items", "auto", "legacy center"); // Now that shadowNode is auto, 'legacy' applies. - checkValues(slotted, "justifySelf", "justify-self", "auto", "center"); // Now that shadowNode is auto, 'legacy' applies. + checkValues(slotted, "justifySelf", "justify-self", "auto", "auto"); // Now that shadowNode is auto, 'legacy' applies. document.documentElement.style.justifyItems = "auto"; }, "Check out how the 'legacy' keyword affects the 'slotted' elements after the 'slot' is assigned."); @@ -256,7 +256,7 @@ slot.style.alignSelf = "left"; checkValues(slot, "alignSelf", "align-self", "left", "left"); slot.style.alignSelf = "auto"; - checkValues(slot, "alignSelf", "align-self", "auto", "normal"); + checkValues(slot, "alignSelf", "align-self", "auto", "auto"); }, "The 'slot' element should not use its parent inside the ShadowDOM tree to resolve the align-self 'auto' values because Blink does not support slots in the flat tree."); test(function() { @@ -270,7 +270,7 @@ slot.style.justifySelf = "left"; checkValues(slot, "justifySelf", "justify-self", "left", "left"); slot.style.justifySelf = "auto"; - checkValues(slot, "justifySelf", "justify-self", "auto", "normal"); + checkValues(slot, "justifySelf", "justify-self", "auto", "auto"); }, "The 'slot' element should not use its parent inside the ShadowDOM tree to resolve the justify-self 'auto' values because Blink does not support slots in the flat tree."); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-justify-self.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-justify-self.html index 4a4b760..4e11e1e 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-justify-self.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-justify-self.html
@@ -16,6 +16,10 @@ justify-self: stretch; } +#justifySelfNormal { + justify-self: normal; +} + #justifySelfStart { justify-self: start; } @@ -89,6 +93,7 @@ <div id="justifySelfFirstBaseline"></div> <div id="justifySelfLastBaseline"></div> <div id="justifySelfStretch"></div> +<div id="justifySelfNormal"></div> <div id="justifySelfStart"></div> <div id="justifySelfEnd"></div> <div id="justifySelfCenter"></div> @@ -120,6 +125,8 @@ checkValues(justifySelfLastBaseline, "justifySelf", "justify-self", "", "last baseline"); var justifySelfStretch = document.getElementById("justifySelfStretch"); checkValues(justifySelfStretch, "justifySelf", "justify-self", "", "stretch"); + var justifySelfNormal = document.getElementById("justifySelfNormal"); + checkValues(justifySelfNormal, "justifySelf", "justify-self", "", "normal"); var justifySelfStart = document.getElementById("justifySelfStart"); checkValues(justifySelfStart, "justifySelf", "justify-self", "", "start"); var justifySelfEnd = document.getElementById("justifySelfEnd"); @@ -160,7 +167,7 @@ test(function() { element = document.createElement("div"); document.body.appendChild(element); - checkValues(element, "justifySelf", "justify-self", "", "normal"); + checkValues(element, "justifySelf", "justify-self", "", "auto"); }, "Test initial value of justify-self through JS"); test(function() { @@ -186,16 +193,19 @@ element.style.justifySelf = "self-start"; checkValues(element, "justifySelf", "justify-self", "self-start", "self-start"); + element.style.justifySelf = "normal"; + checkValues(element, "justifySelf", "justify-self", "normal", "normal"); + element.style.justifySelf = "auto"; - checkValues(element, "justifySelf", "justify-self", "auto", "normal"); + checkValues(element, "justifySelf", "justify-self", "auto", "auto"); container.style.display = "flex"; element.style.justifySelf = "auto"; - checkValues(element, "justifySelf", "justify-self", "auto", "normal"); + checkValues(element, "justifySelf", "justify-self", "auto", "auto"); container.style.display = "grid"; element.style.justifySelf = "auto"; - checkValues(element, "justifySelf", "justify-self", "auto", "normal"); + checkValues(element, "justifySelf", "justify-self", "auto", "auto"); element.style.justifySelf = "self-end"; checkValues(element, "justifySelf", "justify-self", "self-end", "self-end"); @@ -203,7 +213,7 @@ test(function() { document.documentElement.style.justifySelf = "auto"; - checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "normal"); + checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "auto"); }, "Test 'auto' value resolution for the root node"); test(function() { @@ -215,6 +225,9 @@ checkBadValues(element, "justifySelf", "justify-self", "unsafe auto"); checkBadValues(element, "justifySelf", "justify-self", "auto safe"); checkBadValues(element, "justifySelf", "justify-self", "auto left"); + checkBadValues(element, "justifySelf", "justify-self", "normal unsafe"); + checkBadValues(element, "justifySelf", "justify-self", "normal stretch"); + checkBadValues(element, "justifySelf", "justify-self", "baseline normal"); checkBadValues(element, "justifySelf", "justify-self", "baseline safe"); checkBadValues(element, "justifySelf", "justify-self", "baseline center"); checkBadValues(element, "justifySelf", "justify-self", "stretch unsafe"); @@ -240,35 +253,35 @@ test(function() { container.style.display = ""; - checkInitialValues(element, "justifySelf", "justify-self", "center", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "center", "auto"); }, "Test the value 'initial'"); test(function() { container.style.display = "grid"; - checkInitialValues(element, "justifySelf", "justify-self", "left safe", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "left safe", "auto"); }, "Test the value 'initial' for grid containers"); test(function() { container.style.display = "flex"; - checkInitialValues(element, "justifySelf", "justify-self", "right unsafe", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "right unsafe", "auto"); }, "Test the value 'initial' for flex containers"); test(function() { container.style.display = ""; element.style.position = "absolute"; - checkInitialValues(element, "justifySelf", "justify-self", "left", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "left", "auto"); }, "Test the value 'initial' for positioned elements"); test(function() { container.style.display = "grid"; element.style.position = "absolute"; - checkInitialValues(element, "justifySelf", "justify-self", "right", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "right", "auto"); }, "Test the value 'initial' for positioned elements in grid containers"); test(function() { container.style.display = "flex"; element.style.position = "absolute"; - checkInitialValues(element, "justifySelf", "justify-self", "end", "normal"); + checkInitialValues(element, "justifySelf", "justify-self", "end", "auto"); }, "Test the value 'initial' for positioned elements in grid containers"); test(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-content.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-content.html index 36cf4816..1da45347 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-content.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-content.html
@@ -49,6 +49,9 @@ #placeContentStartSafe { place-content: start safe; } +#placeContentBaselineSafe { + place-content: baseline safe; +} #placeContentStartEndLeft { place-content: start end left; } @@ -204,8 +207,8 @@ }, "Test setting 'start safe' as incorrect value through CSS."); test(function() { - checkValues(placeContentStartSafe, "placeContent", "place-content", "", "normal normal"); - checkPlaceContentValues(placeContentStartSafe, "", "normal", "normal"); + checkValues(placeContentBaselineSafe, "placeContent", "place-content", "", "normal normal"); + checkPlaceContentValues(placeContentBaselineSafe, "", "normal", "normal"); }, "Test setting 'baseline safe' as incorrect value through CSS."); test(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-items.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-items.html index 407da5cc..712bd1e9 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-items.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-items.html
@@ -58,6 +58,9 @@ #placeItemsStartSafe { place-items: start safe; } +#placeItemsBaselineSafe { + place-items: baseline safe; +} #placeItemsStartEndLeft { place-items: start end left; } @@ -207,8 +210,8 @@ }, "Test setting 'start safe' as incorrect value through CSS."); test(function() { - checkValues(placeItemsStartSafe, "placeItems", "place-items", "", "normal normal"); - checkPlaceItemsValues(placeItemsStartSafe, "", "normal", "normal"); + checkValues(placeItemsBaselineSafe, "placeItems", "place-items", "", "normal normal"); + checkPlaceItemsValues(placeItemsBaselineSafe, "", "normal", "normal"); }, "Test setting 'baseline safe' as incorrect value through CSS."); test(function() { @@ -224,16 +227,16 @@ }, "Test setting values through JS."); test(function() { - checkPlaceItemsValuesBadJS("auto normal", "normal", "normal"); - checkPlaceItemsValuesBadJS("space-between", "normal", "normal"); - checkPlaceItemsValuesBadJS("center safe", "normal", "normal"); - checkPlaceItemsValuesBadJS("center self-start center", "normal", "normal"); - checkPlaceItemsValuesBadJS("asrt", "normal", "normal"); - checkPlaceItemsValuesBadJS("auto", "normal", "normal"); - checkPlaceItemsValuesBadJS("10px", "normal", "normal"); - checkPlaceItemsValuesBadJS("stretch safe", "normal", "normal"); - checkPlaceItemsValuesBadJS("self-start start end", "normal", "normal"); - checkPlaceItemsValuesBadJS("", "normal", "normal"); + checkPlaceItemsValuesBadJS("auto normal"); + checkPlaceItemsValuesBadJS("space-between"); + checkPlaceItemsValuesBadJS("center safe"); + checkPlaceItemsValuesBadJS("center self-start center"); + checkPlaceItemsValuesBadJS("asrt", "normal"); + checkPlaceItemsValuesBadJS("auto", "normal"); + checkPlaceItemsValuesBadJS("10px", "normal"); + checkPlaceItemsValuesBadJS("stretch safe"); + checkPlaceItemsValuesBadJS("self-start start end"); + checkPlaceItemsValuesBadJS(""); }, "Test setting incorrect values through JS."); test(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-self.html b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-self.html index a8e6c0e..4967bdc 100644 --- a/third_party/WebKit/LayoutTests/fast/alignment/parse-place-self.html +++ b/third_party/WebKit/LayoutTests/fast/alignment/parse-place-self.html
@@ -58,6 +58,9 @@ #placeSelfStartSafe { place-self: start safe; } +#placeSelfBaselineSafe { + place-self: baseline safe; +} #placeSelfStartEndLeft { place-self: start end left; } @@ -113,7 +116,7 @@ { element.style.placeSelf = ""; element.style.placeSelf = value; - checkPlaceSelfValues(element, "", "normal", "normal") + checkPlaceSelfValues(element, "", "auto", "auto") } test(function() { @@ -122,8 +125,8 @@ }, "Test getting the Computed Value of place-self's longhand properties when setting 'normal' value through CSS."); test(function() { - checkValues(placeSelfCenterAuto, "placeSelf", "place-self", "", "center normal"); - checkPlaceSelfValues(placeSelfCenterAuto, "", "center", "normal"); + checkValues(placeSelfCenterAuto, "placeSelf", "place-self", "", "center auto"); + checkPlaceSelfValues(placeSelfCenterAuto, "", "center", "auto"); }, "Test getting the Computed Value of place-self's longhand properties when setting 'center auto' value through CSS."); test(function() { @@ -182,38 +185,38 @@ }, "Test getting the Computed Value of place-self's longhand properties when setting 'start baseline' value through CSS."); test(function() { - checkValues(placeSelfAuto, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfAuto, "", "normal", "normal"); + checkValues(placeSelfEmpty, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfEmpty, "", "auto", "auto"); }, "Test setting '' as incorrect value through CSS."); test(function() { - checkValues(placeSelfAuto, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfAuto, "", "normal", "normal"); + checkValues(placeSelfAuto, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfAuto, "", "auto", "auto"); }, "Test setting 'auto' as incorrect value through CSS."); test(function() { - checkValues(placeSelfNone, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfNone, "", "normal", "normal"); + checkValues(placeSelfNone, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfNone, "", "auto", "auto"); }, "Test setting 'none' as incorrect value through CSS."); test(function() { - checkValues(placeSelfSafe, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfSafe, "", "normal", "normal"); + checkValues(placeSelfSafe, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfSafe, "", "auto", "auto"); }, "Test setting 'safe' as incorrect value through CSS."); test(function() { - checkValues(placeSelfStartSafe, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfStartSafe, "", "normal", "normal"); + checkValues(placeSelfStartSafe, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfStartSafe, "", "auto", "auto"); }, "Test setting 'start safe' as incorrect value through CSS."); test(function() { - checkValues(placeSelfStartSafe, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfStartSafe, "", "normal", "normal"); + checkValues(placeSelfBaselineSafe, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfBaselineSafe, "", "auto", "auto"); }, "Test setting 'baseline safe' as incorrect value through CSS."); test(function() { - checkValues(placeSelfStartEndLeft, "placeSelf", "place-self", "", "normal normal"); - checkPlaceSelfValues(placeSelfStartEndLeft, "", "normal", "normal"); + checkValues(placeSelfStartEndLeft, "placeSelf", "place-self", "", "auto auto"); + checkPlaceSelfValues(placeSelfStartEndLeft, "", "auto", "auto"); }, "Test setting 'start end left' as incorrect value through CSS."); test(function() { @@ -221,35 +224,36 @@ checkPlaceSelfValuesJS("center start", "center", "start"); checkPlaceSelfValuesJS("self-start end", "self-start", "end"); checkPlaceSelfValuesJS("normal end", "normal", "end"); + checkPlaceSelfValuesJS("auto right", "auto", "right"); }, "Test setting values through JS."); test(function() { - checkPlaceSelfValuesBadJS("space-between", "normal", "normal"); - checkPlaceSelfValuesBadJS("center safe", "normal", "normal"); - checkPlaceSelfValuesBadJS("center self-start center", "normal", "normal"); - checkPlaceSelfValuesBadJS("asrt", "normal", "normal"); - checkPlaceSelfValuesBadJS("10px", "normal", "normal"); - checkPlaceSelfValuesBadJS("stretch safe", "normal", "normal"); - checkPlaceSelfValuesBadJS("self-start start end", "normal", "normal"); - checkPlaceSelfValuesBadJS("", "normal", "normal"); + checkPlaceSelfValuesBadJS("space-between"); + checkPlaceSelfValuesBadJS("center safe"); + checkPlaceSelfValuesBadJS("center self-start center"); + checkPlaceSelfValuesBadJS("asrt"); + checkPlaceSelfValuesBadJS("10px"); + checkPlaceSelfValuesBadJS("stretch safe"); + checkPlaceSelfValuesBadJS("self-start start end"); + checkPlaceSelfValuesBadJS(""); }, "Test setting incorrect values through JS."); test(function() { element = document.createElement("div"); document.body.appendChild(element); - checkValues(element, "placeSelf", "place-self", "", "normal normal"); + checkValues(element, "placeSelf", "place-self", "", "auto auto"); element.style.placeSelf = "center"; checkPlaceSelfValues(element, "center", "center", "center"); element.style.placeSelf = "initial"; - checkValues(element, "placeSelf", "place-self", "initial", "normal normal"); - checkPlaceSelfValues(element, "initial", "normal", "normal"); + checkValues(element, "placeSelf", "place-self", "initial", "auto auto"); + checkPlaceSelfValues(element, "initial", "auto", "auto"); }, "Test the 'initial' value of the place-self shorthand and its longhand properties' Computed value"); test(function() { document.body.style.placeSelf = "start"; var anotherElement = document.createElement("div"); document.body.appendChild(anotherElement); - checkPlaceSelfValues(anotherElement, "", "normal", "normal"); + checkPlaceSelfValues(anotherElement, "", "auto", "auto"); anotherElement.style.placeSelf = "inherit"; checkPlaceSelfValues(anotherElement, "inherit", "start", "start"); }, "Test the 'inherit' value of the place-self shorthand and its longhand properties' Computed value");
diff --git a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt index cdc5172..e1e19f09 100644 --- a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt
@@ -60,7 +60,7 @@ -webkit-writing-mode: horizontal-tb align-content: normal align-items: normal -align-self: normal +align-self: auto alignment-baseline: auto animation-delay: 0s animation-direction: normal @@ -181,7 +181,7 @@ isolation: auto justify-content: normal justify-items: normal -justify-self: normal +justify-self: auto left: auto letter-spacing: normal lighting-color: rgb(255, 255, 255)
diff --git a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt index 0fc97ee..95a01f87 100644 --- a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
@@ -60,7 +60,7 @@ -webkit-writing-mode: horizontal-tb align-content: normal align-items: normal -align-self: normal +align-self: auto alignment-baseline: auto animation-delay: 0s animation-direction: normal @@ -181,7 +181,7 @@ isolation: auto justify-content: normal justify-items: normal -justify-self: normal +justify-self: auto left: auto letter-spacing: normal lighting-color: rgb(255, 255, 255)
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/windowclient-navigate-worker.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/windowclient-navigate-worker.js deleted file mode 100644 index 10e86d3..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/windowclient-navigate-worker.js +++ /dev/null
@@ -1,51 +0,0 @@ -function match_query(query_string) { - return self.location.search.substr(1) == query_string; -} - -function receive_event(event_name) { - return new Promise(function(resolve) { - var handler = function(e) { - resolve(e); - // To allow waitUntil to be called inside execution of the microtask - // enqueued by above resolve function. - e.waitUntil(Promise.resolve()); - }; - self.addEventListener(event_name, handler, false); - }); -} - -function navigate_test(e) { - var port = e.data.port; - var url = e.data.url; - - return clients.matchAll({ includeUncontrolled : true }) - .then(function(client_list) { - for (var i = 0; i < client_list.length; i++) { - var client = client_list[i]; - if (client.frameType == 'nested') { - return client.navigate(url); - } - } - port.postMessage('Could not found window client.'); - }) - .then(function(new_client) { - if (new_client === null) - port.postMessage(new_client); - else - port.postMessage(new_client.url); - }) - .catch(function(error) { - port.postMessage(error.name); - }); -} -if (match_query('installing')) { - // If the query string is "?installing", then do test on installing worker. - // This is only for in-scope-but-not-controlled test. - receive_event('install').then(function(e) { - e.waitUntil(receive_event('message').then(navigate_test)); - }); -} else { - receive_event('message').then(function(e) { - e.waitUntil(navigate_test(e)); - }); -}
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/state.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/state.html deleted file mode 100644 index ddc08d5..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/state.html +++ /dev/null
@@ -1,69 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="resources/test-helpers.js"></script> -<body> -<script> -(function () { - var t = async_test('Service Worker state property and "statechange" event'); - var currentState = 'test-is-starting'; - var scope = 'resources/state/'; - - service_worker_unregister_and_register( - t, 'resources/empty-worker.js', scope) - .then(t.step_func(function(registration) { - var sw = registration.installing; - sw.addEventListener('statechange', t.step_func(onStateChange(sw))); - assert_equals(sw.state, 'installing', - 'the service worker should be in "installing" state.'); - checkStateTransition(sw.state); - })) - .catch(unreached_rejection(t)); - - function checkStateTransition(newState) { - switch (currentState) { - case 'test-is-starting': - break; // anything goes - case 'installing': - assert_in_array(newState, ['installed', 'redundant']); - break; - case 'installed': - assert_in_array(newState, ['activating', 'redundant']); - break; - case 'activating': - assert_in_array(newState, ['activated', 'redundant']); - break; - case 'activated': - assert_equals(newState, 'redundant'); - break; - case 'redundant': - assert_unreached('a ServiceWorker should not transition out of ' + - 'the "redundant" state'); - break; - default: - assert_unreached('should not transition into unknown state "' + - newState + '"'); - break; - } - currentState = newState; - } - - function onStateChange(expectedTarget) { - return function(event) { - assert_true(event.target instanceof ServiceWorker, - 'the target of the statechange event should be a ' + - 'ServiceWorker.'); - assert_equals(event.target, expectedTarget, - 'the target of the statechange event should be ' + - 'the installing ServiceWorker'); - assert_equals(event.type, 'statechange', - 'the type of the event should be "statechange".'); - - checkStateTransition(event.target.state); - - if (event.target.state == 'activated') - service_worker_unregister_and_done(t, scope); - }; - } -}()); -</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/synced-state.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/synced-state.html deleted file mode 100644 index 52940e0d..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/synced-state.html +++ /dev/null
@@ -1,74 +0,0 @@ -<!doctype html> -<title>ServiceWorker: worker objects have synced state</title> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="resources/test-helpers.js"></script> -<script> -// Tests that ServiceWorker objects representing the same Service Worker -// entity have the same state. JS-level equality is now required according to -// the spec. -promise_test(function(t) { - var scope = 'resources/synced-state'; - var script = 'resources/empty-worker.js'; - var registration; - return service_worker_unregister_and_register(t, script, scope) - .then(function(r) { - var step = 0; - registration = r; - add_completion_callback(function() { r.unregister(); }); - return new Promise(function(resolve) { - r.installing.addEventListener('statechange', function(e) { - step++; - if (step == 1) { - assert_equals(e.currentTarget.state, 'installed', - 'original SW should be installed'); - assert_equals(r.installing, null, - 'in installed, .installing should be null'); - assert_equals(r.waiting.state, 'installed', - 'in installed, the state of .waiting ' + - 'should be installed'); - assert_equals(r.active, null, - 'in installed, .active should be null'); - assert_equals(r.waiting, e.currentTarget, - '.waiting should be equal to the original ' + - 'SW in installed'); - } else if (step == 2) { - assert_equals(e.currentTarget.state, 'activating', - 'original SW should be activating'); - assert_equals(r.installing, null, - 'in activating, .installing should be null'); - assert_equals(r.waiting, null, - 'in activating, .waiting should be null'); - assert_equals(r.active.state, 'activating', - 'in activating, the state of .active ' + - 'should be activating'); - assert_equals(r.active, e.currentTarget, - '.active should be equal to the original ' + - 'SW in activating'); - } else if (step == 3) { - assert_equals(e.currentTarget.state, 'activated', - 'original SW should be activated'); - assert_equals(r.installing, null, - 'in activated, .installing should be null'); - assert_equals(r.waiting, null, - 'in activated, .waiting should be null'); - assert_equals(r.active.state, 'activated', - 'in activated, the state of .active should ' + - 'be activated'); - assert_equals(r.active, e.currentTarget, - '.active should be equal to the original ' + - 'SW in activated'); - resolve(); - } - }); - }); - }) - .then(function() { - return navigator.serviceWorker.getRegistration(scope); - }) - .then(function(r) { - assert_equals(r, registration, 'getRegistration should return the ' + - 'same object with the registered one'); - }); - }, 'worker objects for the same entity have the same state'); -</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/windowclient-navigate.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/windowclient-navigate.html deleted file mode 100644 index bde2ce8..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/windowclient-navigate.html +++ /dev/null
@@ -1,140 +0,0 @@ -<!DOCTYPE html> -<title>Service Worker: WindowClient.navigate() tests</title> -<script src="../resources/testharness.js"></script> -<script src="../resources/testharnessreport.js"></script> -<script src="../resources/get-host-info.js"></script> -<script src="resources/test-helpers.js"></script> -<body> -<script> - -const SCOPE = 'resources/blank.html'; -const SCRIPT_URL = 'resources/windowclient-navigate-worker.js'; -const CROSS_ORIGIN_URL = get_host_info()['HTTP_REMOTE_ORIGIN'] + - '/serviceworker/resources/blank.html'; - -navigate_test({ - description: 'normal test', - dest_url: 'blank.html?navigate', - expected: normalizeURL(SCOPE) + '?navigate', - }); - -navigate_test({ - description: 'blank url test', - dest_url: '', - expected: normalizeURL(SCRIPT_URL) - }); - -navigate_test({ - description: 'in scope but not controlled test on installing worker', - dest_url: 'blank.html?navigate', - expected: 'TypeError', - wait_state: 'installing', - }); - -navigate_test({ - description: 'in scope but not controlled test on active worker', - dest_url: 'blank.html?navigate', - expected: 'TypeError', - should_be_reload: false, - }); - -navigate_test({ - description: 'out scope test', - src_url: 'out_scope/blank.html', - dest_url: 'blank.html?navigate', - expected: 'TypeError', - }); - -navigate_test({ - description: 'cross orgin url test', - dest_url: CROSS_ORIGIN_URL, - expected: null - }); - -navigate_test({ - description: 'invalid url(http://[example.com]) test', - dest_url: 'http://[example].com', - expected: 'TypeError' - }); - -navigate_test({ - description: 'invalid url(view-source://example.com) test', - dest_url: 'view-source://example.com', - expected: 'TypeError' - }); - -navigate_test({ - description: 'invalid url(file:///) test', - dest_url: 'file:///', - expected: 'TypeError' - }); - -navigate_test({ - description: 'invalid url(about:blank) test', - dest_url: 'about:blank', - expected: 'TypeError' - }); - -function navigate_test(override_parameters) { - // default parameters - var parameters = { - description: null, - src_url: SCOPE, - dest_url: null, - expected: null, - wait_state: 'activated', - scope: SCOPE, - should_be_reload: true - }; - - for (key in override_parameters) - parameters[key] = override_parameters[key]; - - promise_test(function(test) { - var service_worker; - var client_frame; - var script_url = SCRIPT_URL; - - // For in-scope-but-not-controlled test on installing worker, - // if the wait_state is "installing", then append the query to script_url. - if (parameters.wait_state == 'installing') - script_url += '?' + parameters.wait_state; - - return with_iframe(parameters.src_url) - .then(function(frame) { - client_frame = frame; - return service_worker_unregister_and_register( - test, script_url, parameters.scope); - }) - .then(function(registration) { - service_worker = registration.installing; - return wait_for_state(test, service_worker, parameters.wait_state); - }) - .then(function(state) { - if (parameters.should_be_reload) { - client_frame.remove(); - return with_iframe(parameters.src_url); - } - return client_frame; - }) - .then(function(frame) { - client_frame = frame; - return new Promise(function(resolve) { - var channel = new MessageChannel(); - channel.port1.onmessage = test.step_func(resolve); - service_worker.postMessage({ - port: channel.port2, - url: parameters.dest_url - }, [channel.port2]); - }); - }) - .then(function(response) { - client_frame && client_frame.remove() - assert_equals(response.data, parameters.expected); - return service_worker_unregister_and_done(test, parameters.scope); - }) - }, parameters.description); -} - -</script> -</body>
diff --git a/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt b/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt index f69ece8..3f261c2 100644 --- a/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt
@@ -60,7 +60,7 @@ -webkit-writing-mode: horizontal-tb align-content: normal align-items: normal -align-self: normal +align-self: auto alignment-baseline: auto animation-delay: 0s animation-direction: normal @@ -181,7 +181,7 @@ isolation: auto justify-content: normal justify-items: normal -justify-self: normal +justify-self: auto left: auto letter-spacing: normal lighting-color: rgb(255, 255, 255)
diff --git a/third_party/WebKit/Source/bindings/core/v8/BUILD.gn b/third_party/WebKit/Source/bindings/core/v8/BUILD.gn index 894fa7d..b723540 100644 --- a/third_party/WebKit/Source/bindings/core/v8/BUILD.gn +++ b/third_party/WebKit/Source/bindings/core/v8/BUILD.gn
@@ -109,8 +109,6 @@ "$blink_core_output_dir/fileapi/BlobPropertyBag.h", "$blink_core_output_dir/fileapi/FilePropertyBag.cpp", "$blink_core_output_dir/fileapi/FilePropertyBag.h", - "$blink_core_output_dir/frame/ScrollIntoViewOptions.cpp", - "$blink_core_output_dir/frame/ScrollIntoViewOptions.h", "$blink_core_output_dir/frame/ScrollOptions.cpp", "$blink_core_output_dir/frame/ScrollOptions.h", "$blink_core_output_dir/frame/ScrollToOptions.cpp", @@ -222,8 +220,6 @@ "$bindings_core_v8_output_dir/NodeOrString.h", "$bindings_core_v8_output_dir/RadioNodeListOrElement.cpp", "$bindings_core_v8_output_dir/RadioNodeListOrElement.h", - "$bindings_core_v8_output_dir/ScrollIntoViewOptionsOrBoolean.cpp", - "$bindings_core_v8_output_dir/ScrollIntoViewOptionsOrBoolean.h", "$bindings_core_v8_output_dir/StringOrArrayBuffer.cpp", "$bindings_core_v8_output_dir/StringOrArrayBuffer.h", "$bindings_core_v8_output_dir/StringOrArrayBufferOrArrayBufferView.cpp",
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp index 178e7b44..7100cc4 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp
@@ -17,25 +17,15 @@ namespace blink { -ScriptCustomElementDefinitionBuilder* - ScriptCustomElementDefinitionBuilder::stack_ = nullptr; - ScriptCustomElementDefinitionBuilder::ScriptCustomElementDefinitionBuilder( ScriptState* script_state, CustomElementRegistry* registry, const ScriptValue& constructor, ExceptionState& exception_state) - : prev_(stack_), - script_state_(script_state), + : script_state_(script_state), registry_(registry), constructor_value_(constructor.V8Value()), - exception_state_(exception_state) { - stack_ = this; -} - -ScriptCustomElementDefinitionBuilder::~ScriptCustomElementDefinitionBuilder() { - stack_ = prev_; -} + exception_state_(exception_state) {} bool ScriptCustomElementDefinitionBuilder::CheckConstructorIntrinsics() { DCHECK(script_state_->World().IsMainWorld()); @@ -54,26 +44,15 @@ } bool ScriptCustomElementDefinitionBuilder::CheckConstructorNotRegistered() { - if (ScriptCustomElementDefinition::ForConstructor(script_state_.Get(), - registry_, constructor_)) { - // Constructor is already registered. - exception_state_.ThrowDOMException( - kNotSupportedError, - "this constructor has already been used with this registry"); - return false; - } - for (auto builder = prev_; builder; builder = builder->prev_) { - CHECK(!builder->constructor_.IsEmpty()); - if (registry_ != builder->registry_ || - constructor_ != builder->constructor_) { - continue; - } - exception_state_.ThrowDOMException( - kNotSupportedError, - "this constructor is already being defined in this registry"); - return false; - } - return true; + if (!ScriptCustomElementDefinition::ForConstructor(script_state_.Get(), + registry_, constructor_)) + return true; + + // Constructor is already registered. + exception_state_.ThrowDOMException( + kNotSupportedError, + "this constructor has already been used with this registry"); + return false; } bool ScriptCustomElementDefinitionBuilder::ValueForName(
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.h b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.h index 5ba1190..c65a67e 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.h +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.h
@@ -35,7 +35,7 @@ CustomElementRegistry*, const ScriptValue& constructor_script_value, ExceptionState&); - ~ScriptCustomElementDefinitionBuilder(); + ~ScriptCustomElementDefinitionBuilder() = default; bool CheckConstructorIntrinsics() override; bool CheckConstructorNotRegistered() override; @@ -46,7 +46,6 @@ private: static ScriptCustomElementDefinitionBuilder* stack_; - ScriptCustomElementDefinitionBuilder* prev_; RefPtr<ScriptState> script_state_; Member<CustomElementRegistry> registry_; v8::Local<v8::Value> constructor_value_;
diff --git a/third_party/WebKit/Source/core/core_idl_files.gni b/third_party/WebKit/Source/core/core_idl_files.gni index e997194..9dad1a5 100644 --- a/third_party/WebKit/Source/core/core_idl_files.gni +++ b/third_party/WebKit/Source/core/core_idl_files.gni
@@ -559,7 +559,6 @@ "events/WheelEventInit.idl", "fileapi/BlobPropertyBag.idl", "fileapi/FilePropertyBag.idl", - "frame/ScrollIntoViewOptions.idl", "frame/ScrollOptions.idl", "frame/ScrollToOptions.idl", "html/AssignedNodesOptions.idl",
diff --git a/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h b/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h index 37a14173..2ce9f012 100644 --- a/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h +++ b/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h
@@ -2797,9 +2797,7 @@ : CSSValue(kIdentifierClass) { switch (item_position) { case kItemPositionAuto: - // The 'auto' values might have been already resolved. - NOTREACHED(); - value_id_ = CSSValueNormal; + value_id_ = CSSValueAuto; break; case kItemPositionNormal: value_id_ = CSSValueNormal;
diff --git a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp index 7132869..6da185f 100644 --- a/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp +++ b/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
@@ -503,13 +503,7 @@ CSSValueList* result = CSSValueList::CreateSpaceSeparated(); if (data.PositionType() == kLegacyPosition) result->Append(*CSSIdentifierValue::Create(CSSValueLegacy)); - if (data.GetPosition() == kItemPositionAuto) { - // To avoid needing to copy the RareNonInheritedData, we repurpose the - // 'auto' flag to not just mean 'auto' prior to running the StyleAdjuster - // but also mean 'normal' after running it. - result->Append(*CSSIdentifierValue::Create( - ComputedStyle::InitialDefaultAlignment().GetPosition())); - } else if (data.GetPosition() == kItemPositionBaseline) { + if (data.GetPosition() == kItemPositionBaseline) { result->Append( *CSSValuePair::Create(CSSIdentifierValue::Create(CSSValueBaseline), CSSIdentifierValue::Create(CSSValueBaseline), @@ -2613,7 +2607,10 @@ case CSSPropertyIsolation: return CSSIdentifierValue::Create(style.Isolation()); case CSSPropertyJustifyItems: - return ValueForItemPositionWithOverflowAlignment(style.JustifyItems()); + return ValueForItemPositionWithOverflowAlignment( + style.JustifyItems().GetPosition() == kItemPositionAuto + ? ComputedStyle::InitialDefaultAlignment() + : style.JustifyItems()); case CSSPropertyJustifySelf: return ValueForItemPositionWithOverflowAlignment(style.JustifySelf()); case CSSPropertyLeft:
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp index bb67e278..051088e 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp +++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp
@@ -159,38 +159,6 @@ style.SetPosition(EPosition::kStatic); } -void StyleAdjuster::AdjustStyleForAlignment( - ComputedStyle& style, - const ComputedStyle& layout_parent_style) { - // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' - // flag to not just mean 'auto' prior to running the StyleAdjuster but also - // mean 'normal' after running it. - - // If the inherited value of justify-items includes the 'legacy' keyword, - // 'auto' computes to the the inherited value. Otherwise, 'auto' computes to - // 'normal'. - if (style.JustifyItemsPosition() == kItemPositionAuto) { - if (layout_parent_style.JustifyItemsPositionType() == kLegacyPosition) - style.SetJustifyItems(layout_parent_style.JustifyItems()); - } - - // The 'auto' keyword computes the computed value of justify-items on the - // parent (minus any legacy keywords), or 'normal' if the box has no parent. - if (style.JustifySelfPosition() == kItemPositionAuto) { - if (layout_parent_style.JustifyItemsPositionType() == kLegacyPosition) - style.SetJustifySelfPosition(layout_parent_style.JustifyItemsPosition()); - else if (layout_parent_style.JustifyItemsPosition() != kItemPositionAuto) - style.SetJustifySelf(layout_parent_style.JustifyItems()); - } - - // The 'auto' keyword computes the computed value of align-items on the parent - // or 'normal' if the box has no parent. - if (style.AlignSelfPosition() == kItemPositionAuto && - layout_parent_style.AlignItemsPosition() != - ComputedStyle::InitialDefaultAlignment().GetPosition()) - style.SetAlignSelf(layout_parent_style.AlignItems()); -} - static void AdjustStyleForHTMLElement(ComputedStyle& style, HTMLElement& element) { // <div> and <span> are the most common elements on the web, we skip all the @@ -511,7 +479,6 @@ if (isSVGTextElement(*element)) style.ClearMultiCol(); } - AdjustStyleForAlignment(style, layout_parent_style); // If this node is sticky it marks the creation of a sticky subtree, which we // must track to properly handle document lifecycle in some cases. @@ -521,6 +488,14 @@ // inheritance from the ancestor and there is no harm to setting it again. if (style.GetPosition() == EPosition::kSticky) style.SetSubtreeIsSticky(true); + + // If the inherited value of justify-items includes the 'legacy' keyword, + // 'auto' computes to the the inherited value. Otherwise, 'auto' computes to + // 'normal'. + if (style.JustifyItemsPosition() == kItemPositionAuto) { + if (parent_style.JustifyItemsPositionType() == kLegacyPosition) + style.SetJustifyItems(parent_style.JustifyItems()); + } } } // namespace blink
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.h b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.h index 9690f9d8..3ca8e7c 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.h +++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.h
@@ -42,8 +42,6 @@ const ComputedStyle& layout_parent_style, Element*); static void AdjustStyleForEditing(ComputedStyle&); - static void AdjustStyleForAlignment(ComputedStyle&, - const ComputedStyle& parent_style); }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/BUILD.gn b/third_party/WebKit/Source/core/dom/BUILD.gn index deefadc..9940172 100644 --- a/third_party/WebKit/Source/core/dom/BUILD.gn +++ b/third_party/WebKit/Source/core/dom/BUILD.gn
@@ -37,8 +37,6 @@ "ChildNodeList.h", "ClassCollection.cpp", "ClassCollection.h", - "ClassList.cpp", - "ClassList.h", "ClassicPendingScript.cpp", "ClassicPendingScript.h", "ClassicScript.cpp",
diff --git a/third_party/WebKit/Source/core/dom/ClassList.cpp b/third_party/WebKit/Source/core/dom/ClassList.cpp deleted file mode 100644 index 31b4dbbe38..0000000 --- a/third_party/WebKit/Source/core/dom/ClassList.cpp +++ /dev/null
@@ -1,38 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - -#include "core/dom/ClassList.h" - -namespace blink { - -ClassList::ClassList(Element* element) - : DOMTokenList(nullptr), element_(element) {} - -DEFINE_TRACE(ClassList) { - visitor->Trace(element_); - DOMTokenList::Trace(visitor); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/ClassList.h b/third_party/WebKit/Source/core/dom/ClassList.h deleted file mode 100644 index d411f854..0000000 --- a/third_party/WebKit/Source/core/dom/ClassList.h +++ /dev/null
@@ -1,56 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - -#ifndef ClassList_h -#define ClassList_h - -#include <memory> -#include "core/HTMLNames.h" -#include "core/dom/DOMTokenList.h" -#include "core/dom/Element.h" -#include "core/dom/SpaceSplitString.h" - -namespace blink { - -class Element; - -class ClassList final : public DOMTokenList { - public: - static ClassList* Create(Element* element) { return new ClassList(element); } - DECLARE_VIRTUAL_TRACE(); - - private: - explicit ClassList(Element*); - - void setValue(const AtomicString& value) override { - element_->setAttribute(HTMLNames::classAttr, value); - } - - Member<Element> element_; -}; - -} // namespace blink - -#endif // ClassList_h
diff --git a/third_party/WebKit/Source/core/dom/DOMTokenList.cpp b/third_party/WebKit/Source/core/dom/DOMTokenList.cpp index 8e651e5..11dbfc79 100644 --- a/third_party/WebKit/Source/core/dom/DOMTokenList.cpp +++ b/third_party/WebKit/Source/core/dom/DOMTokenList.cpp
@@ -25,6 +25,7 @@ #include "core/dom/DOMTokenList.h" #include "bindings/core/v8/ExceptionState.h" +#include "core/dom/Element.h" #include "core/dom/ExceptionCode.h" #include "core/html/parser/HTMLParserIdioms.h" #include "platform/wtf/AutoReset.h" @@ -32,6 +33,10 @@ namespace blink { +DEFINE_TRACE(DOMTokenList) { + visitor->Trace(element_); +} + // This implements the common part of the following operations: // https://dom.spec.whatwg.org/#dom-domtokenlist-add // https://dom.spec.whatwg.org/#dom-domtokenlist-remove @@ -214,8 +219,7 @@ } void DOMTokenList::setValue(const AtomicString& value) { - if (observer_) - observer_->ValueWasSet(value); + element_->setAttribute(attribute_name_, value); } void DOMTokenList::DidUpdateAttributeValue(const AtomicString& old_value,
diff --git a/third_party/WebKit/Source/core/dom/DOMTokenList.h b/third_party/WebKit/Source/core/dom/DOMTokenList.h index 5ef9f8d..f494264 100644 --- a/third_party/WebKit/Source/core/dom/DOMTokenList.h +++ b/third_party/WebKit/Source/core/dom/DOMTokenList.h
@@ -26,6 +26,7 @@ #define DOMTokenList_h #include "core/CoreExport.h" +#include "core/dom/QualifiedName.h" #include "core/dom/SpaceSplitString.h" #include "platform/bindings/ScriptWrappable.h" #include "platform/heap/Handle.h" @@ -34,28 +35,20 @@ namespace blink { +class Element; class ExceptionState; -class CORE_EXPORT DOMTokenListObserver : public GarbageCollectedMixin { - public: - // Called when the value property is set, even if the tokens in - // the set have not changed. - virtual void ValueWasSet(const AtomicString& value) = 0; - - DEFINE_INLINE_VIRTUAL_TRACE() {} -}; - class CORE_EXPORT DOMTokenList : public GarbageCollectedFinalized<DOMTokenList>, public ScriptWrappable { DEFINE_WRAPPERTYPEINFO(); WTF_MAKE_NONCOPYABLE(DOMTokenList); public: - static DOMTokenList* Create(DOMTokenListObserver* observer = nullptr) { - return new DOMTokenList(observer); + static DOMTokenList* Create(Element& element, const QualifiedName& attr) { + return new DOMTokenList(element, attr); } - virtual ~DOMTokenList() {} + DECLARE_VIRTUAL_TRACE(); unsigned length() const { return tokens_.size(); } const AtomicString item(unsigned index) const; @@ -70,9 +63,7 @@ bool supports(const AtomicString&, ExceptionState&); const AtomicString& value() const { return value_; } - // DOMTokenListObserver::ValueWasSet or setValue override should update the - // associated attribute value. - virtual void setValue(const AtomicString&); + void setValue(const AtomicString&); // This function should be called when the associated attribute value was // updated. @@ -80,15 +71,13 @@ const AtomicString& new_value); const SpaceSplitString& Tokens() const { return tokens_; } - void SetObserver(DOMTokenListObserver* observer) { observer_ = observer; } const AtomicString& toString() const { return value(); } - DEFINE_INLINE_VIRTUAL_TRACE() { visitor->Trace(observer_); } - protected: - DOMTokenList(DOMTokenListObserver* observer) : observer_(observer) {} - + DOMTokenList(Element& element, const QualifiedName& attr) + : element_(element), attribute_name_(attr) {} + Element& GetElement() const { return *element_; } void AddInternal(const AtomicString&); void RemoveInternal(const AtomicString&); @@ -104,7 +93,8 @@ SpaceSplitString tokens_; AtomicString value_; - WeakMember<DOMTokenListObserver> observer_; + const Member<Element> element_; + const QualifiedName attribute_name_; bool is_in_update_step_ = false; };
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp index 18ec4fe..65a83f2 100644 --- a/third_party/WebKit/Source/core/dom/Element.cpp +++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -30,7 +30,6 @@ #include "bindings/core/v8/Dictionary.h" #include "bindings/core/v8/ExceptionMessages.h" #include "bindings/core/v8/ExceptionState.h" -#include "bindings/core/v8/ScrollIntoViewOptionsOrBoolean.h" #include "bindings/core/v8/V8DOMActivityLogger.h" #include "core/CSSValueKeywords.h" #include "core/SVGNames.h" @@ -52,9 +51,9 @@ #include "core/dom/AXObjectCache.h" #include "core/dom/Attr.h" #include "core/dom/CSSSelectorWatch.h" -#include "core/dom/ClassList.h" #include "core/dom/ClientRect.h" #include "core/dom/ClientRectList.h" +#include "core/dom/DOMTokenList.h" #include "core/dom/DatasetDOMStringMap.h" #include "core/dom/ElementDataCache.h" #include "core/dom/ElementIntersectionObserverData.h" @@ -96,7 +95,6 @@ #include "core/frame/LocalDOMWindow.h" #include "core/frame/LocalFrame.h" #include "core/frame/LocalFrameView.h" -#include "core/frame/ScrollIntoViewOptions.h" #include "core/frame/ScrollToOptions.h" #include "core/frame/Settings.h" #include "core/frame/UseCounter.h" @@ -143,7 +141,6 @@ #include "platform/graphics/CompositorMutableProperties.h" #include "platform/graphics/CompositorMutation.h" #include "platform/scroll/ScrollableArea.h" -#include "platform/scroll/SmoothScrollSequencer.h" #include "platform/wtf/BitVector.h" #include "platform/wtf/HashFunctions.h" #include "platform/wtf/text/CString.h" @@ -441,88 +438,27 @@ EnsureElementRareData().SetNonce(nonce); } -void Element::scrollIntoView(ScrollIntoViewOptionsOrBoolean arg) { - ScrollIntoViewOptions options; - if (arg.isBoolean()) { - if (arg.getAsBoolean()) - options.setBlock("start"); - else - options.setBlock("end"); - options.setInlinePosition("nearest"); - } else if (arg.isScrollIntoViewOptions()) { - options = arg.getAsScrollIntoViewOptions(); - if (!RuntimeEnabledFeatures::cssomSmoothScrollEnabled() && - options.behavior() == "smooth") { - options.setBehavior("instant"); - } - } - scrollIntoViewWithOptions(options); -} - void Element::scrollIntoView(bool align_to_top) { - ScrollIntoViewOptionsOrBoolean arg; - arg.setBoolean(align_to_top); - scrollIntoView(arg); -} - -static ScrollAlignment ToPhysicalAlignment(const ScrollIntoViewOptions& options, - ScrollOrientation axis, - bool is_horizontal_writing_mode) { - String alignment = - ((axis == kHorizontalScroll && is_horizontal_writing_mode) || - (axis == kVerticalScroll && !is_horizontal_writing_mode)) - ? options.inlinePosition() - : options.block(); - - if (alignment == "center") - return ScrollAlignment::kAlignCenterAlways; - if (alignment == "nearest") - return ScrollAlignment::kAlignToEdgeIfNeeded; - if (alignment == "start") { - return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignLeftAlways - : ScrollAlignment::kAlignTopAlways; - } - if (alignment == "end") { - return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignRightAlways - : ScrollAlignment::kAlignBottomAlways; - } - - // Default values - if (is_horizontal_writing_mode) { - return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignToEdgeIfNeeded - : ScrollAlignment::kAlignTopAlways; - } - return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignLeftAlways - : ScrollAlignment::kAlignToEdgeIfNeeded; -} - -void Element::scrollIntoViewWithOptions(const ScrollIntoViewOptions& options) { GetDocument().EnsurePaintLocationDataValidForNode(this); - if (!GetLayoutObject() || !GetDocument().GetPage()) + if (!GetLayoutObject()) return; bool make_visible_in_visual_viewport = !GetDocument().GetPage()->GetSettings().GetInertVisualViewport(); - ScrollBehavior behavior = (options.behavior() == "smooth") - ? kScrollBehaviorSmooth - : kScrollBehaviorAuto; - - bool is_horizontal_writing_mode = - GetComputedStyle()->IsHorizontalWritingMode(); - ScrollAlignment align_x = ToPhysicalAlignment(options, kHorizontalScroll, - is_horizontal_writing_mode); - ScrollAlignment align_y = - ToPhysicalAlignment(options, kVerticalScroll, is_horizontal_writing_mode); - - GetDocument().GetPage()->GetSmoothScrollSequencer()->AbortAnimations(); LayoutRect bounds = BoundingBox(); - GetLayoutObject()->ScrollRectToVisible( - bounds, align_x, align_y, kProgrammaticScroll, - make_visible_in_visual_viewport, behavior); - - GetDocument().GetPage()->GetSmoothScrollSequencer()->RunQueuedAnimations(); + // Align to the top / bottom and to the closest edge. + if (align_to_top) + GetLayoutObject()->ScrollRectToVisible( + bounds, ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignTopAlways, kProgrammaticScroll, + make_visible_in_visual_viewport); + else + GetLayoutObject()->ScrollRectToVisible( + bounds, ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignBottomAlways, kProgrammaticScroll, + make_visible_in_visual_viewport); GetDocument().SetSequentialFocusNavigationStartingPoint(this); } @@ -3575,9 +3511,8 @@ DOMTokenList& Element::classList() { ElementRareData& rare_data = EnsureElementRareData(); if (!rare_data.GetClassList()) { - ClassList* class_list = ClassList::Create(this); - class_list->DidUpdateAttributeValue(g_null_atom, - getAttribute(HTMLNames::classAttr)); + DOMTokenList* class_list = DOMTokenList::Create(*this, classAttr); + class_list->DidUpdateAttributeValue(g_null_atom, getAttribute(classAttr)); rare_data.SetClassList(class_list); } return *rare_data.GetClassList();
diff --git a/third_party/WebKit/Source/core/dom/Element.h b/third_party/WebKit/Source/core/dom/Element.h index 5323a536..692a381 100644 --- a/third_party/WebKit/Source/core/dom/Element.h +++ b/third_party/WebKit/Source/core/dom/Element.h
@@ -65,8 +65,6 @@ class PseudoStyleRequest; class ResizeObservation; class ResizeObserver; -class ScrollIntoViewOptions; -class ScrollIntoViewOptionsOrBoolean; class ScrollState; class ScrollStateCallback; class ScrollToOptions; @@ -229,9 +227,7 @@ // attributes. AttributeCollection AttributesWithoutUpdate() const; - void scrollIntoView(ScrollIntoViewOptionsOrBoolean); void scrollIntoView(bool align_to_top = true); - void scrollIntoViewWithOptions(const ScrollIntoViewOptions&); void scrollIntoViewIfNeeded(bool center_if_needed = true); int OffsetLeft();
diff --git a/third_party/WebKit/Source/core/dom/Element.idl b/third_party/WebKit/Source/core/dom/Element.idl index b9ea6a7..47867a1 100644 --- a/third_party/WebKit/Source/core/dom/Element.idl +++ b/third_party/WebKit/Source/core/dom/Element.idl
@@ -93,8 +93,8 @@ // return DOMRectList and DOMRect respectively. ClientRectList getClientRects(); ClientRect getBoundingClientRect(); - - void scrollIntoView(optional (ScrollIntoViewOptions or boolean)? arg); + // FIXME: scrollIntoView() should have a ScrollIntoViewOptions dictionary argument. + void scrollIntoView(optional boolean alignWithTop); [RuntimeEnabled=CSSOMSmoothScroll, ImplementedAs=scrollTo] void scroll(optional ScrollToOptions options); [RuntimeEnabled=CSSOMSmoothScroll, ImplementedAs=scrollTo] void scroll(unrestricted double x, unrestricted double y); [RuntimeEnabled=CSSOMSmoothScroll] void scrollTo(optional ScrollToOptions options);
diff --git a/third_party/WebKit/Source/core/dom/ElementRareData.h b/third_party/WebKit/Source/core/dom/ElementRareData.h index 1da0c8c..5f1919b 100644 --- a/third_party/WebKit/Source/core/dom/ElementRareData.h +++ b/third_party/WebKit/Source/core/dom/ElementRareData.h
@@ -27,8 +27,8 @@ #include "core/css/cssom/InlineStylePropertyMap.h" #include "core/dom/AccessibleNode.h" #include "core/dom/Attr.h" -#include "core/dom/ClassList.h" #include "core/dom/CompositorProxiedPropertySet.h" +#include "core/dom/DOMTokenList.h" #include "core/dom/DatasetDOMStringMap.h" #include "core/dom/ElementIntersectionObserverData.h" #include "core/dom/NamedNodeMap.h" @@ -96,8 +96,8 @@ } void ClearComputedStyle() { computed_style_ = nullptr; } - ClassList* GetClassList() const { return class_list_.Get(); } - void SetClassList(ClassList* class_list) { + DOMTokenList* GetClassList() const { return class_list_.Get(); } + void SetClassList(DOMTokenList* class_list) { class_list_ = class_list; ScriptWrappableVisitor::WriteBarrier(this, class_list_); } @@ -204,7 +204,7 @@ Member<DatasetDOMStringMap> dataset_; Member<ElementShadow> shadow_; - Member<ClassList> class_list_; + Member<DOMTokenList> class_list_; Member<NamedNodeMap> attribute_map_; Member<AttrNodeList> attr_node_list_; Member<InlineCSSStyleDeclaration> cssom_wrapper_;
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp index 5b1c1a49..63417b4 100644 --- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp +++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
@@ -152,29 +152,27 @@ } // namespace +TextIteratorTextNodeHandler::TextIteratorTextNodeHandler( + const TextIteratorBehavior& behavior, + TextIteratorTextState* text_state) + : behavior_(behavior), text_state_(*text_state) {} + template <typename Strategy> TextIteratorAlgorithm<Strategy>::TextIteratorAlgorithm( const PositionTemplate<Strategy>& start, const PositionTemplate<Strategy>& end, const TextIteratorBehavior& behavior) - : offset_(0), - start_container_(nullptr), + : start_container_(nullptr), start_offset_(0), end_container_(nullptr), end_offset_(0), needs_another_newline_(false), - text_box_(nullptr), - remaining_text_box_(nullptr), - first_letter_text_(nullptr), last_text_node_(nullptr), - last_text_node_ended_with_collapsed_space_(false), - sorted_text_boxes_position_(0), behavior_(AdjustBehaviorFlags<Strategy>(behavior)), - needs_handle_pre_formatted_text_node_(false), - handled_first_letter_(false), should_stop_(false), handle_shadow_root_(false), - text_state_(behavior_) { + text_state_(behavior_), + text_node_handler_(behavior_, &text_state_) { DCHECK(start.IsNotNull()); DCHECK(end.IsNotNull()); @@ -195,6 +193,22 @@ end.ComputeContainerNode(), end.ComputeOffsetInContainerNode()); } +void TextIteratorTextNodeHandler::Initialize(Node* start_container, + int start_offset, + Node* end_container, + int end_offset) { + // This function should be called only once. + DCHECK(!start_container_); + DCHECK_EQ(start_offset_, 0); + DCHECK(!end_container_); + DCHECK_EQ(end_offset_, 0); + + start_container_ = start_container; + start_offset_ = start_offset; + end_container_ = end_container; + end_offset_ = end_offset; +} + template <typename Strategy> void TextIteratorAlgorithm<Strategy>::Initialize(Node* start_container, int start_offset, @@ -203,6 +217,9 @@ DCHECK(start_container); DCHECK(end_container); + text_node_handler_.Initialize(start_container, start_offset, end_container, + end_offset); + // Remember the range - this does not change. start_container_ = start_container; start_offset_ = start_offset; @@ -264,8 +281,7 @@ return layout_object && layout_object->IsAtomicInlineLevel(); } -template <typename Strategy> -bool TextIteratorAlgorithm<Strategy>::HandleRemainingTextRuns() { +bool TextIteratorTextNodeHandler::HandleRemainingTextRuns() { if (ShouldProceedToRemainingText()) ProceedToRemainingText(); // Handle remembered text box @@ -307,7 +323,7 @@ return; } - if (HandleRemainingTextRuns()) + if (text_node_handler_.HandleRemainingTextRuns()) return; while (node_ && (node_ != past_end_node_ || shadow_depth_ > 0)) { @@ -511,8 +527,7 @@ EVisibility::kVisible; } -template <typename Strategy> -bool TextIteratorAlgorithm<Strategy>::ShouldHandleFirstLetter( +bool TextIteratorTextNodeHandler::ShouldHandleFirstLetter( const LayoutText& layout_text) const { if (handled_first_letter_) return false; @@ -522,8 +537,7 @@ return offset_ < static_cast<int>(text_fragment.TextStartOffset()); } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() { +void TextIteratorTextNodeHandler::HandlePreFormattedTextNode() { // TODO(xiaochengh): Get rid of repeated computation of these fields. LayoutText* const layout_object = text_node_->GetLayoutObject(); const String str = layout_object->GetText(); @@ -592,8 +606,11 @@ DCHECK_NE(last_text_node_, node_) << "We should never call HandleTextNode on the same node twice"; last_text_node_ = ToText(node_); + return text_node_handler_.HandleTextNode(ToText(node_)); +} - text_node_ = ToText(node_); +bool TextIteratorTextNodeHandler::HandleTextNode(Text* node) { + text_node_ = node; offset_ = text_node_ == start_container_ ? start_offset_ : 0; handled_first_letter_ = false; first_letter_text_ = nullptr; @@ -646,8 +663,7 @@ } // Restore the collapsed space for copy & paste. See http://crbug.com/318925 -template <typename Strategy> -size_t TextIteratorAlgorithm<Strategy>::RestoreCollapsedTrailingSpace( +size_t TextIteratorTextNodeHandler::RestoreCollapsedTrailingSpace( InlineTextBox* next_text_box, size_t subrun_end) { if (next_text_box || !text_box_->Root().NextRootBox() || @@ -675,8 +691,7 @@ return subrun_end; } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::HandleTextBox() { +void TextIteratorTextNodeHandler::HandleTextBox() { LayoutText* layout_object = first_letter_text_ ? first_letter_text_ : text_node_->GetLayoutObject(); const unsigned text_start_offset = layout_object->TextStartOffset(); @@ -814,8 +829,7 @@ } } -template <typename Strategy> -bool TextIteratorAlgorithm<Strategy>::ShouldProceedToRemainingText() const { +bool TextIteratorTextNodeHandler::ShouldProceedToRemainingText() const { if (text_box_ || !remaining_text_box_) return false; if (text_node_ != end_container_) @@ -823,16 +837,14 @@ return offset_ < end_offset_; } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::ProceedToRemainingText() { +void TextIteratorTextNodeHandler::ProceedToRemainingText() { text_box_ = remaining_text_box_; remaining_text_box_ = 0; first_letter_text_ = nullptr; offset_ = text_node_->GetLayoutObject()->TextStartOffset(); } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::HandleTextNodeFirstLetter( +void TextIteratorTextNodeHandler::HandleTextNodeFirstLetter( LayoutTextFragment* layout_object) { handled_first_letter_ = true; @@ -873,8 +885,7 @@ return false; } -template <typename Strategy> -bool TextIteratorAlgorithm<Strategy>::FixLeadingWhiteSpaceForReplacedElement( +bool TextIteratorTextNodeHandler::FixLeadingWhiteSpaceForReplacedElement( Node* parent) { // This is a hacky way for white space fixup in legacy layout. With LayoutNG, // we can get rid of this function. @@ -912,9 +923,9 @@ return true; } - DCHECK_EQ(last_text_node_, text_node_); + DCHECK_EQ(last_text_node_, text_node_handler_.GetNode()); if (last_text_node_) { - if (FixLeadingWhiteSpaceForReplacedElement( + if (text_node_handler_.FixLeadingWhiteSpaceForReplacedElement( Strategy::Parent(*last_text_node_))) return false; } @@ -1216,8 +1227,7 @@ 1); } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::ResetCollapsedWhiteSpaceFixup() { +void TextIteratorTextNodeHandler::ResetCollapsedWhiteSpaceFixup() { // This is a hacky way for white space fixup in legacy layout. With LayoutNG, // we can get rid of this function. last_text_node_ended_with_collapsed_space_ = false; @@ -1231,14 +1241,23 @@ int text_end_offset) { text_state_.SpliceBuffer(c, text_node, offset_base_node, text_start_offset, text_end_offset); + text_node_handler_.ResetCollapsedWhiteSpaceFixup(); +} + +void TextIteratorTextNodeHandler::SpliceBuffer(UChar c, + Node* text_node, + Node* offset_base_node, + int text_start_offset, + int text_end_offset) { + text_state_.SpliceBuffer(c, text_node, offset_base_node, text_start_offset, + text_end_offset); ResetCollapsedWhiteSpaceFixup(); } -template <typename Strategy> -void TextIteratorAlgorithm<Strategy>::EmitText(Node* text_node, - LayoutText* layout_object, - int text_start_offset, - int text_end_offset) { +void TextIteratorTextNodeHandler::EmitText(Node* text_node, + LayoutText* layout_object, + int text_start_offset, + int text_end_offset) { text_state_.EmitText(text_node, layout_object, text_start_offset, text_end_offset); ResetCollapsedWhiteSpaceFixup();
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.h b/third_party/WebKit/Source/core/editing/iterators/TextIterator.h index 473874d..2c3e4ec4 100644 --- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.h +++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.h
@@ -49,6 +49,102 @@ String PlainText(const EphemeralRangeInFlatTree&, const TextIteratorBehavior& = TextIteratorBehavior()); +// TODO(xiaochengh): Move the class to dedicated files. +// TextIteratorTextNodeHandler extracts plain text from a text node by calling +// HandleTextNode() function. It should be used only by TextIterator. +class TextIteratorTextNodeHandler final { + STACK_ALLOCATED(); + + public: + TextIteratorTextNodeHandler(const TextIteratorBehavior&, + TextIteratorTextState*); + + // Initializes the full iteration range of the TextIterator. This function + // should be called only once from TextIterator::Initialize. + // TODO(xiaochengh): TextNodeHandler doesn't need to know the full iteration + // range; The offset range in the current node suffices. Remove this function. + void Initialize(Node* start_container, + int start_offset, + Node* end_container, + int end_offset); + + Text* GetNode() const { return text_node_; } + + // Returns true if more text is emitted without traversing to the next node. + bool HandleRemainingTextRuns(); + + // Returns true if a leading white space is emitted before a replaced element. + bool FixLeadingWhiteSpaceForReplacedElement(Node*); + + void ResetCollapsedWhiteSpaceFixup(); + + // TODO(xiaochengh): Make the return type |void|. The current return value is + // not very meaningful. + bool HandleTextNode(Text*); + + private: + void HandlePreFormattedTextNode(); + void HandleTextBox(); + void HandleTextNodeFirstLetter(LayoutTextFragment*); + bool ShouldHandleFirstLetter(const LayoutText&) const; + bool ShouldProceedToRemainingText() const; + void ProceedToRemainingText(); + size_t RestoreCollapsedTrailingSpace(InlineTextBox* next_text_box, + size_t subrun_end); + + // Used when the visibility of the style should not affect text gathering. + bool IgnoresStyleVisibility() const { + return behavior_.IgnoresStyleVisibility(); + } + + void SpliceBuffer(UChar, + Node* text_node, + Node* offset_base_node, + int text_start_offset, + int text_end_offset); + void EmitText(Node* text_node, + LayoutText* layout_object, + int text_start_offset, + int text_end_offset); + + // The range. + Member<Node> start_container_; + int start_offset_ = 0; + Member<Node> end_container_; + int end_offset_ = 0; + + // The current text node and offset, from which text is being emitted. + Member<Text> text_node_; + int offset_ = 0; + + InlineTextBox* text_box_ = nullptr; + + // Remember if we are in the middle of handling a pre-formatted text node. + bool needs_handle_pre_formatted_text_node_ = false; + // Used when deciding text fragment created by :first-letter should be looked + // into. + bool handled_first_letter_ = false; + // Used when iteration over :first-letter text to save pointer to + // remaining text box. + InlineTextBox* remaining_text_box_ = nullptr; + // Used to point to LayoutText object for :first-letter. + LayoutText* first_letter_text_ = nullptr; + + // Used to do the whitespace collapsing logic. + bool last_text_node_ended_with_collapsed_space_ = false; + + // Used when text boxes are out of order (Hebrew/Arabic w/ embeded LTR text) + Vector<InlineTextBox*> sorted_text_boxes_; + size_t sorted_text_boxes_position_ = 0; + + const TextIteratorBehavior behavior_; + + // Contains state of emitted text. + TextIteratorTextState& text_state_; + + DISALLOW_COPY_AND_ASSIGN(TextIteratorTextNodeHandler); +}; + // Iterates through the DOM range, returning all the text, and 0-length // boundaries at points where replaced elements break up the text flow. The // text comes back in chunks so as to optimize for performance of the iteration. @@ -141,34 +237,13 @@ // not always clearly control the iteration progress. Should consider removing // the return values and control the iteration in a cleaner way. bool HandleTextNode(); - void HandlePreFormattedTextNode(); bool HandleReplacedElement(); bool HandleNonTextNode(); - - void HandleTextBox(); - void HandleTextNodeFirstLetter(LayoutTextFragment*); - bool ShouldHandleFirstLetter(const LayoutText&) const; - bool ShouldProceedToRemainingText() const; - void ProceedToRemainingText(); - void ResetCollapsedWhiteSpaceFixup(); - - // Returns true if more text is emitted without traversing to the next node. - bool HandleRemainingTextRuns(); - - // Returns true if a leading white space is emitted before a replaced element. - bool FixLeadingWhiteSpaceForReplacedElement(Node* parent); - void SpliceBuffer(UChar, Node* text_node, Node* offset_base_node, int text_start_offset, int text_end_offset); - void EmitText(Node* text_node, - LayoutText* layout_object, - int text_start_offset, - int text_end_offset); - size_t RestoreCollapsedTrailingSpace(InlineTextBox* next_text_box, - size_t subrun_end); // Used by selection preservation code. There should be one character emitted // between every VisiblePosition in the Range used to create the TextIterator. @@ -223,7 +298,6 @@ // Current position, not necessarily of the text being returned, but position // as we walk through the DOM tree. Member<Node> node_; - int offset_; IterationProgress iteration_progress_; FullyClippedStateStackAlgorithm<Strategy> fully_clipped_stack_; int shadow_depth_; @@ -238,34 +312,14 @@ Member<Node> end_node_; Member<Node> past_end_node_; - // The current text node, from which text is being emitted. - Member<Text> text_node_; - // Used when there is still some pending text from the current node; when // these are false and 0, we go back to normal iterating. bool needs_another_newline_; - InlineTextBox* text_box_; - // Used when iteration over :first-letter text to save pointer to - // remaining text box. - InlineTextBox* remaining_text_box_; - // Used to point to LayoutText object for :first-letter. - LayoutText* first_letter_text_; - // Used to do the whitespace collapsing logic. Member<Text> last_text_node_; - bool last_text_node_ended_with_collapsed_space_; - - // Used when text boxes are out of order (Hebrew/Arabic w/ embeded LTR text) - Vector<InlineTextBox*> sorted_text_boxes_; - size_t sorted_text_boxes_position_; const TextIteratorBehavior behavior_; - // Remember if we are in the middle of handling a pre-formatted text node. - bool needs_handle_pre_formatted_text_node_; - // Used when deciding text fragment created by :first-letter should be looked - // into. - bool handled_first_letter_; // Used when stopsOnFormControls() is true to determine if the iterator should // keep advancing. bool should_stop_; @@ -275,6 +329,11 @@ // Contains state of emitted text. TextIteratorTextState text_state_; + + // Helper for extracting text content from text nodes. + // TODO(xiaochengh): We should store a pointer here, so that we can use + // forward declaration and switch it to Layout NG easier. + TextIteratorTextNodeHandler text_node_handler_; }; extern template class CORE_EXTERN_TEMPLATE_EXPORT
diff --git a/third_party/WebKit/Source/core/exported/BUILD.gn b/third_party/WebKit/Source/core/exported/BUILD.gn index 088f61d..fdc5c0ee 100644 --- a/third_party/WebKit/Source/core/exported/BUILD.gn +++ b/third_party/WebKit/Source/core/exported/BUILD.gn
@@ -30,17 +30,22 @@ "WebInputMethodControllerImpl.cpp", "WebInputMethodControllerImpl.h", "WebMemoryStatistics.cpp", + "WebPageImportanceSignals.cpp", "WebPerformance.cpp", "WebPluginContainerBase.cpp", "WebPluginContainerBase.h", + "WebPluginScriptForbiddenScope.cpp", "WebRange.cpp", "WebRenderTheme.cpp", + "WebScopedUserGesture.cpp", "WebScriptController.cpp", "WebScriptSource.cpp", "WebSecurityPolicy.cpp", "WebSelection.cpp", "WebSelector.cpp", "WebSerializedScriptValue.cpp", + "WebUserGestureIndicator.cpp", + "WebUserGestureToken.cpp", "WebViewBase.h", ]
diff --git a/third_party/WebKit/Source/web/WebPageImportanceSignals.cpp b/third_party/WebKit/Source/core/exported/WebPageImportanceSignals.cpp similarity index 100% rename from third_party/WebKit/Source/web/WebPageImportanceSignals.cpp rename to third_party/WebKit/Source/core/exported/WebPageImportanceSignals.cpp
diff --git a/third_party/WebKit/Source/web/WebPluginScriptForbiddenScope.cpp b/third_party/WebKit/Source/core/exported/WebPluginScriptForbiddenScope.cpp similarity index 100% rename from third_party/WebKit/Source/web/WebPluginScriptForbiddenScope.cpp rename to third_party/WebKit/Source/core/exported/WebPluginScriptForbiddenScope.cpp
diff --git a/third_party/WebKit/Source/web/WebScopedUserGesture.cpp b/third_party/WebKit/Source/core/exported/WebScopedUserGesture.cpp similarity index 100% rename from third_party/WebKit/Source/web/WebScopedUserGesture.cpp rename to third_party/WebKit/Source/core/exported/WebScopedUserGesture.cpp
diff --git a/third_party/WebKit/Source/web/WebUserGestureIndicator.cpp b/third_party/WebKit/Source/core/exported/WebUserGestureIndicator.cpp similarity index 100% rename from third_party/WebKit/Source/web/WebUserGestureIndicator.cpp rename to third_party/WebKit/Source/core/exported/WebUserGestureIndicator.cpp
diff --git a/third_party/WebKit/Source/web/WebUserGestureToken.cpp b/third_party/WebKit/Source/core/exported/WebUserGestureToken.cpp similarity index 100% rename from third_party/WebKit/Source/web/WebUserGestureToken.cpp rename to third_party/WebKit/Source/core/exported/WebUserGestureToken.cpp
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp index c0f23e6..2e8f1551 100644 --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
@@ -1180,21 +1180,6 @@ return GetFrame()->DevicePixelRatio(); } -void LocalDOMWindow::scrollViewportTo(ScrollableArea* viewport, - const ScrollOffset& offset, - ScrollBehavior scroll_behavior) const { - if (SmoothScrollSequencer* sequencer = - GetFrame()->GetPage()->GetSmoothScrollSequencer()) { - sequencer->AbortAnimations(); - if (scroll_behavior == kScrollBehaviorSmooth) { - sequencer->QueueAnimation(viewport, offset); - sequencer->RunQueuedAnimations(); - } else { - viewport->SetScrollOffset(offset, kProgrammaticScroll, scroll_behavior); - } - } -} - void LocalDOMWindow::scrollBy(double x, double y, ScrollBehavior scroll_behavior) const { @@ -1222,7 +1207,8 @@ ScrollOffset scaled_delta(x * GetFrame()->PageZoomFactor(), y * GetFrame()->PageZoomFactor()); - scrollViewportTo(viewport, current_offset + scaled_delta, scroll_behavior); + viewport->SetScrollOffset(current_offset + scaled_delta, kProgrammaticScroll, + scroll_behavior); } void LocalDOMWindow::scrollBy(const ScrollToOptions& scroll_to_options) const { @@ -1263,7 +1249,8 @@ ScrollableArea* viewport = page->GetSettings().GetInertVisualViewport() ? view->LayoutViewportScrollableArea() : view->GetScrollableArea(); - scrollViewportTo(viewport, layout_offset, kScrollBehaviorAuto); + viewport->SetScrollOffset(layout_offset, kProgrammaticScroll, + kScrollBehaviorAuto); } void LocalDOMWindow::scrollTo(const ScrollToOptions& scroll_to_options) const { @@ -1310,7 +1297,8 @@ ScrollableArea::ScrollBehaviorFromString(scroll_to_options.behavior(), scroll_behavior); - scrollViewportTo(viewport, ScrollOffset(scaled_x, scaled_y), scroll_behavior); + viewport->SetScrollOffset(ScrollOffset(scaled_x, scaled_y), + kProgrammaticScroll, scroll_behavior); } void LocalDOMWindow::moveBy(int x, int y) const {
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.h b/third_party/WebKit/Source/core/frame/LocalDOMWindow.h index 987f1cad..2ad0b6a 100644 --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.h +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.h
@@ -195,9 +195,6 @@ // FIXME: ScrollBehaviorSmooth is currently unsupported in VisualViewport. // crbug.com/434497 - void scrollViewportTo(ScrollableArea*, - const ScrollOffset&, - ScrollBehavior) const; void scrollBy(double x, double y, ScrollBehavior = kScrollBehaviorAuto) const; void scrollBy(const ScrollToOptions&) const; void scrollTo(double x, double y) const;
diff --git a/third_party/WebKit/Source/core/frame/LocalFrameView.cpp b/third_party/WebKit/Source/core/frame/LocalFrameView.cpp index 0e838fd5..eb769944 100644 --- a/third_party/WebKit/Source/core/frame/LocalFrameView.cpp +++ b/third_party/WebKit/Source/core/frame/LocalFrameView.cpp
@@ -2127,13 +2127,6 @@ return &page->GetChromeClient(); } -SmoothScrollSequencer* LocalFrameView::GetSmoothScrollSequencer() const { - Page* page = GetFrame().GetPage(); - if (!page) - return nullptr; - return page->GetSmoothScrollSequencer(); -} - void LocalFrameView::ContentsResized() { if (frame_->IsMainFrame() && frame_->GetDocument()) { if (TextAutosizer* text_autosizer = @@ -4617,20 +4610,14 @@ LayoutRect LocalFrameView::ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType scroll_type) { LayoutRect view_rect(VisibleContentRect()); LayoutRect expose_rect = ScrollAlignment::GetRectToExpose( view_rect, rect_in_content, align_x, align_y); if (expose_rect != view_rect) { - ScrollOffset target_offset(expose_rect.X().ToFloat(), - expose_rect.Y().ToFloat()); - if (is_smooth) { - DCHECK(scroll_type == kProgrammaticScroll); - GetSmoothScrollSequencer()->QueueAnimation(this, target_offset); - } else { - SetScrollOffset(target_offset, scroll_type); - } + SetScrollOffset( + ScrollOffset(expose_rect.X().ToFloat(), expose_rect.Y().ToFloat()), + scroll_type); } // Scrolling the LocalFrameView cannot change the input rect's location
diff --git a/third_party/WebKit/Source/core/frame/LocalFrameView.h b/third_party/WebKit/Source/core/frame/LocalFrameView.h index d4dfe865..7c6e9386 100644 --- a/third_party/WebKit/Source/core/frame/LocalFrameView.h +++ b/third_party/WebKit/Source/core/frame/LocalFrameView.h
@@ -51,7 +51,6 @@ #include "platform/graphics/GraphicsLayerClient.h" #include "platform/scroll/ScrollTypes.h" #include "platform/scroll/Scrollbar.h" -#include "platform/scroll/SmoothScrollSequencer.h" #include "platform/wtf/Allocator.h" #include "platform/wtf/AutoReset.h" #include "platform/wtf/Forward.h" @@ -471,7 +470,6 @@ LayoutRect ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType = kProgrammaticScroll) override; // The window that hosts the LocalFrameView. The LocalFrameView will @@ -479,8 +477,6 @@ // coordinate space. PlatformChromeClient* GetChromeClient() const; - SmoothScrollSequencer* GetSmoothScrollSequencer() const override; - // Functions for child manipulation and inspection. bool IsSelfVisible() const { return self_visible_;
diff --git a/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp b/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp index d89b8b0..cc76a0e 100644 --- a/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp +++ b/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp
@@ -209,7 +209,6 @@ LayoutRect RootFrameViewport::ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType scroll_type) { // We want to move the rect into the viewport that excludes the scrollbars so // we intersect the visual viewport with the scrollbar-excluded frameView @@ -230,13 +229,8 @@ LayoutRect target_viewport = ScrollAlignment::GetRectToExpose( view_rect_in_content, rect_in_content, align_x, align_y); if (target_viewport != view_rect_in_content) { - ScrollOffset target_offset(target_viewport.X(), target_viewport.Y()); - if (is_smooth) { - DCHECK(scroll_type == kProgrammaticScroll); - GetSmoothScrollSequencer()->QueueAnimation(this, target_offset); - } else { - SetScrollOffset(target_offset, scroll_type); - } + SetScrollOffset(ScrollOffset(target_viewport.X(), target_viewport.Y()), + scroll_type); } // RootFrameViewport only changes the viewport relative to the document so we @@ -437,10 +431,6 @@ return LayoutViewport().GetChromeClient(); } -SmoothScrollSequencer* RootFrameViewport::GetSmoothScrollSequencer() const { - return LayoutViewport().GetSmoothScrollSequencer(); -} - void RootFrameViewport::ServiceScrollAnimations(double monotonic_time) { ScrollableArea::ServiceScrollAnimations(monotonic_time); LayoutViewport().ServiceScrollAnimations(monotonic_time);
diff --git a/third_party/WebKit/Source/core/frame/RootFrameViewport.h b/third_party/WebKit/Source/core/frame/RootFrameViewport.h index 473b4d2..2c276dad 100644 --- a/third_party/WebKit/Source/core/frame/RootFrameViewport.h +++ b/third_party/WebKit/Source/core/frame/RootFrameViewport.h
@@ -61,7 +61,6 @@ LayoutRect ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType = kProgrammaticScroll) override; IntRect VisibleContentRect( IncludeScrollbarsInRect = kExcludeScrollbars) const override; @@ -96,7 +95,6 @@ ScrollResult UserScroll(ScrollGranularity, const FloatSize&) override; bool ScrollAnimatorEnabled() const override; PlatformChromeClient* GetChromeClient() const override; - SmoothScrollSequencer* GetSmoothScrollSequencer() const override; void ServiceScrollAnimations(double) override; void UpdateCompositorScrollAnimations() override; void CancelProgrammaticScrollAnimation() override;
diff --git a/third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp b/third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp index b22aace..54d335f 100644 --- a/third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp +++ b/third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp
@@ -307,15 +307,15 @@ // resized (as is the case when the ChromeOS keyboard comes up) but not // scaled. visual_viewport->SetViewportSize(IntSize(100, 100)); - root_frame_viewport->ScrollIntoView( - LayoutRect(100, 250, 50, 50), ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + root_frame_viewport->ScrollIntoView(LayoutRect(100, 250, 50, 50), + ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignToEdgeIfNeeded); EXPECT_SIZE_EQ(ScrollOffset(50, 150), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(0, 50), visual_viewport->GetScrollOffset()); - root_frame_viewport->ScrollIntoView( - LayoutRect(25, 75, 50, 50), ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + root_frame_viewport->ScrollIntoView(LayoutRect(25, 75, 50, 50), + ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignToEdgeIfNeeded); EXPECT_SIZE_EQ(ScrollOffset(25, 75), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport->GetScrollOffset()); @@ -324,15 +324,15 @@ visual_viewport->SetScale(2); root_frame_viewport->SetScrollOffset(ScrollOffset(), kProgrammaticScroll); - root_frame_viewport->ScrollIntoView( - LayoutRect(50, 75, 50, 75), ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + root_frame_viewport->ScrollIntoView(LayoutRect(50, 75, 50, 75), + ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignToEdgeIfNeeded); EXPECT_SIZE_EQ(ScrollOffset(0, 0), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); - root_frame_viewport->ScrollIntoView( - LayoutRect(190, 290, 10, 10), ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + root_frame_viewport->ScrollIntoView(LayoutRect(190, 290, 10, 10), + ScrollAlignment::kAlignToEdgeIfNeeded, + ScrollAlignment::kAlignToEdgeIfNeeded); EXPECT_SIZE_EQ(ScrollOffset(100, 150), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); @@ -347,21 +347,19 @@ root_frame_viewport->ScrollIntoView( LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + ScrollAlignment::kAlignToEdgeIfNeeded); EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); root_frame_viewport->ScrollIntoView( LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), - ScrollAlignment::kAlignCenterAlways, ScrollAlignment::kAlignCenterAlways, - false); + ScrollAlignment::kAlignCenterAlways, ScrollAlignment::kAlignCenterAlways); EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); root_frame_viewport->ScrollIntoView( LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), - ScrollAlignment::kAlignTopAlways, ScrollAlignment::kAlignTopAlways, - false); + ScrollAlignment::kAlignTopAlways, ScrollAlignment::kAlignTopAlways); EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); }
diff --git a/third_party/WebKit/Source/core/frame/ScrollIntoViewOptions.idl b/third_party/WebKit/Source/core/frame/ScrollIntoViewOptions.idl deleted file mode 100644 index 49a2c831..0000000 --- a/third_party/WebKit/Source/core/frame/ScrollIntoViewOptions.idl +++ /dev/null
@@ -1,6 +0,0 @@ -enum ScrollLogicalPosition { "start", "center", "end", "nearest" }; - -dictionary ScrollIntoViewOptions : ScrollOptions { - ScrollLogicalPosition block = "center"; - ScrollLogicalPosition inlinePosition = "center"; -}; \ No newline at end of file
diff --git a/third_party/WebKit/Source/core/html/BUILD.gn b/third_party/WebKit/Source/core/html/BUILD.gn index f36dc1f..d5556ac 100644 --- a/third_party/WebKit/Source/core/html/BUILD.gn +++ b/third_party/WebKit/Source/core/html/BUILD.gn
@@ -297,6 +297,8 @@ "forms/DateTimeChooser.h", "forms/DateTimeChooserClient.cpp", "forms/DateTimeChooserClient.h", + "forms/DateTimeChooserImpl.cpp", + "forms/DateTimeChooserImpl.h", "forms/DateTimeEditElement.cpp", "forms/DateTimeEditElement.h", "forms/DateTimeFieldElement.cpp",
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp b/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp index 89a1579..a76ad509 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElement.cpp
@@ -227,14 +227,6 @@ return true; } -void HTMLIFrameElement::SandboxValueWasSet(const AtomicString& value) { - setAttribute(sandboxAttr, value); -} - -void HTMLIFrameElement::AllowValueWasSet(const AtomicString& value) { - setAttribute(allowAttr, value); -} - ReferrerPolicy HTMLIFrameElement::ReferrerPolicyAttribute() { return referrer_policy_; }
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElement.h b/third_party/WebKit/Source/core/html/HTMLIFrameElement.h index c92f127..353ed16 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElement.h +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElement.h
@@ -47,9 +47,6 @@ DOMTokenList* sandbox() const; DOMTokenList* allow() const; - void SandboxValueWasSet(const AtomicString&); - void AllowValueWasSet(const AtomicString&); - private: explicit HTMLIFrameElement(Document&);
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.cpp b/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.cpp index c5e2d30..0e43dc3 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.cpp +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.cpp
@@ -13,15 +13,7 @@ namespace blink { HTMLIFrameElementAllow::HTMLIFrameElementAllow(HTMLIFrameElement* element) - : DOMTokenList(this), element_(element) {} - -HTMLIFrameElementAllow::~HTMLIFrameElementAllow() {} - -DEFINE_TRACE(HTMLIFrameElementAllow) { - visitor->Trace(element_); - DOMTokenList::Trace(visitor); - DOMTokenListObserver::Trace(visitor); -} + : DOMTokenList(*element, HTMLNames::allowAttr) {} Vector<WebFeaturePolicyFeature> HTMLIFrameElementAllow::ParseAllowedFeatureNames( @@ -63,9 +55,4 @@ return GetDefaultFeatureNameMap().Contains(token_value.GetString()); } -void HTMLIFrameElementAllow::ValueWasSet(const AtomicString& value) { - DCHECK(element_); - element_->AllowValueWasSet(value); -} - } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.h b/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.h index 2d8620e..46c2e62a 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.h +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElementAllow.h
@@ -14,31 +14,19 @@ class HTMLIFrameElement; -class CORE_EXPORT HTMLIFrameElementAllow final : public DOMTokenList, - public DOMTokenListObserver { - USING_GARBAGE_COLLECTED_MIXIN(HTMLIFrameElementAllow); - +class CORE_EXPORT HTMLIFrameElementAllow final : public DOMTokenList { public: static HTMLIFrameElementAllow* Create(HTMLIFrameElement* element) { return new HTMLIFrameElementAllow(element); } - ~HTMLIFrameElementAllow() override; - // Returns unique set of valid feature names. Vector<WebFeaturePolicyFeature> ParseAllowedFeatureNames( String& invalid_tokens_error_message) const; - DECLARE_VIRTUAL_TRACE(); - private: explicit HTMLIFrameElementAllow(HTMLIFrameElement*); bool ValidateTokenValue(const AtomicString&, ExceptionState&) const override; - - // DOMTokenListObserver. - void ValueWasSet(const AtomicString&) override; - - Member<HTMLIFrameElement> element_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.cpp b/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.cpp index e448528..3885b445 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.cpp +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.cpp
@@ -30,15 +30,7 @@ } // namespace HTMLIFrameElementSandbox::HTMLIFrameElementSandbox(HTMLIFrameElement* element) - : DOMTokenList(this), element_(element) {} - -HTMLIFrameElementSandbox::~HTMLIFrameElementSandbox() {} - -DEFINE_TRACE(HTMLIFrameElementSandbox) { - visitor->Trace(element_); - DOMTokenList::Trace(visitor); - DOMTokenListObserver::Trace(visitor); -} + : DOMTokenList(*element, HTMLNames::sandboxAttr) {} bool HTMLIFrameElementSandbox::ValidateTokenValue( const AtomicString& token_value, @@ -46,8 +38,4 @@ return IsTokenSupported(token_value); } -void HTMLIFrameElementSandbox::ValueWasSet(const AtomicString& value) { - element_->SandboxValueWasSet(value); -} - } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.h b/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.h index be934bf0c..9686cfc4 100644 --- a/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.h +++ b/third_party/WebKit/Source/core/html/HTMLIFrameElementSandbox.h
@@ -12,27 +12,15 @@ class HTMLIFrameElement; -class HTMLIFrameElementSandbox final : public DOMTokenList, - public DOMTokenListObserver { - USING_GARBAGE_COLLECTED_MIXIN(HTMLIFrameElementSandbox); - +class HTMLIFrameElementSandbox final : public DOMTokenList { public: static HTMLIFrameElementSandbox* Create(HTMLIFrameElement* element) { return new HTMLIFrameElementSandbox(element); } - ~HTMLIFrameElementSandbox() override; - - DECLARE_VIRTUAL_TRACE(); - private: explicit HTMLIFrameElementSandbox(HTMLIFrameElement*); bool ValidateTokenValue(const AtomicString&, ExceptionState&) const override; - - // DOMTokenListObserver. - void ValueWasSet(const AtomicString&) override; - - Member<HTMLIFrameElement> element_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp b/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp index e9782c7..7c3d856 100644 --- a/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp
@@ -51,7 +51,7 @@ bool created_by_parser) : HTMLElement(linkTag, document), link_loader_(LinkLoader::Create(this)), - sizes_(DOMTokenList::Create(this)), + sizes_(DOMTokenList::Create(*this, HTMLNames::sizesAttr)), rel_list_(this, RelList::Create(this)), created_by_parser_(created_by_parser) {} @@ -269,10 +269,6 @@ return TaskRunnerHelper::Get(TaskType::kNetworking, &GetDocument()); } -void HTMLLinkElement::ValueWasSet(const AtomicString& value) { - setAttribute(HTMLNames::sizesAttr, value); -} - bool HTMLLinkElement::SheetLoaded() { DCHECK(GetLinkStyle()); return GetLinkStyle()->SheetLoaded(); @@ -368,7 +364,6 @@ visitor->Trace(rel_list_); HTMLElement::Trace(visitor); LinkLoaderClient::Trace(visitor); - DOMTokenListObserver::Trace(visitor); } DEFINE_TRACE_WRAPPERS(HTMLLinkElement) {
diff --git a/third_party/WebKit/Source/core/html/HTMLLinkElement.h b/third_party/WebKit/Source/core/html/HTMLLinkElement.h index bfa52ca..809be07 100644 --- a/third_party/WebKit/Source/core/html/HTMLLinkElement.h +++ b/third_party/WebKit/Source/core/html/HTMLLinkElement.h
@@ -44,8 +44,7 @@ class LinkImport; class CORE_EXPORT HTMLLinkElement final : public HTMLElement, - public LinkLoaderClient, - private DOMTokenListObserver { + public LinkLoaderClient { DEFINE_WRAPPERTYPEINFO(); USING_GARBAGE_COLLECTED_MIXIN(HTMLLinkElement); @@ -150,9 +149,6 @@ void DidSendDOMContentLoadedForLinkPrerender() override; RefPtr<WebTaskRunner> GetLoadingTaskRunner() override; - // From DOMTokenListObserver - void ValueWasSet(const AtomicString&) final; - Member<LinkResource> link_; Member<LinkLoader> link_loader_;
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp index 778ed1e..b0d3bcc 100644 --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
@@ -2441,10 +2441,6 @@ return controls_list_.Get(); } -void HTMLMediaElement::ControlsListValueWasSet(const AtomicString& value) { - setAttribute(controlslistAttr, value); -} - double HTMLMediaElement::volume() const { return volume_; }
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/HTMLMediaElement.h index 06953a5e..ef1bfae 100644 --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.h +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.h
@@ -210,7 +210,6 @@ const RecordMetricsBehavior = RecordMetricsBehavior::kDoNotRecord) const; DOMTokenList* controlsList() const; HTMLMediaElementControlsList* ControlsListInternal() const; - void ControlsListValueWasSet(const AtomicString&); double volume() const; void setVolume(double, ExceptionState& = ASSERT_NO_EXCEPTION); bool muted() const;
diff --git a/third_party/WebKit/Source/core/html/HTMLOutputElement.cpp b/third_party/WebKit/Source/core/html/HTMLOutputElement.cpp index ebf92488..541cac26 100644 --- a/third_party/WebKit/Source/core/html/HTMLOutputElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLOutputElement.cpp
@@ -39,7 +39,7 @@ : HTMLFormControlElement(HTMLNames::outputTag, document), is_default_value_mode_(true), default_value_(""), - tokens_(DOMTokenList::Create(this)) {} + tokens_(DOMTokenList::Create(*this, HTMLNames::forAttr)) {} HTMLOutputElement::~HTMLOutputElement() {} @@ -105,10 +105,6 @@ setTextContent(value); } -void HTMLOutputElement::ValueWasSet(const AtomicString& value) { - setAttribute(HTMLNames::forAttr, value); -} - String HTMLOutputElement::defaultValue() const { return default_value_; } @@ -130,7 +126,6 @@ DEFINE_TRACE(HTMLOutputElement) { visitor->Trace(tokens_); HTMLFormControlElement::Trace(visitor); - DOMTokenListObserver::Trace(visitor); } } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLOutputElement.h b/third_party/WebKit/Source/core/html/HTMLOutputElement.h index 4405d9fe..e1d018f 100644 --- a/third_party/WebKit/Source/core/html/HTMLOutputElement.h +++ b/third_party/WebKit/Source/core/html/HTMLOutputElement.h
@@ -36,10 +36,8 @@ namespace blink { -class CORE_EXPORT HTMLOutputElement final : public HTMLFormControlElement, - private DOMTokenListObserver { +class CORE_EXPORT HTMLOutputElement final : public HTMLFormControlElement { DEFINE_WRAPPERTYPEINFO(); - USING_GARBAGE_COLLECTED_MIXIN(HTMLOutputElement); public: static HTMLOutputElement* Create(Document&); @@ -71,9 +69,6 @@ void ResetImpl() override; int tabIndex() const override; - // DOMTokenListObserver function - void ValueWasSet(const AtomicString&) final; - bool is_default_value_mode_; String default_value_; Member<DOMTokenList> tokens_;
diff --git a/third_party/WebKit/Source/core/html/RelList.cpp b/third_party/WebKit/Source/core/html/RelList.cpp index ac391bc..fa494ed 100644 --- a/third_party/WebKit/Source/core/html/RelList.cpp +++ b/third_party/WebKit/Source/core/html/RelList.cpp
@@ -4,16 +4,17 @@ #include "core/html/RelList.h" +#include "core/HTMLNames.h" #include "core/dom/Document.h" +#include "core/dom/Element.h" #include "core/origin_trials/OriginTrials.h" #include "platform/RuntimeEnabledFeatures.h" #include "platform/wtf/HashMap.h" namespace blink { -using namespace HTMLNames; - -RelList::RelList(Element* element) : DOMTokenList(nullptr), element_(element) {} +RelList::RelList(Element* element) + : DOMTokenList(*element, HTMLNames::relAttr) {} static HashSet<AtomicString>& SupportedTokens() { DEFINE_STATIC_LOCAL(HashSet<AtomicString>, tokens, ()); @@ -44,13 +45,8 @@ if (SupportedTokens().Contains(token_value)) return true; return OriginTrials::linkServiceWorkerEnabled( - element_->GetExecutionContext()) && + GetElement().GetExecutionContext()) && token_value == "serviceworker"; } -DEFINE_TRACE(RelList) { - visitor->Trace(element_); - DOMTokenList::Trace(visitor); -} - } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/RelList.h b/third_party/WebKit/Source/core/html/RelList.h index ff60b46d3..82a307b 100644 --- a/third_party/WebKit/Source/core/html/RelList.h +++ b/third_party/WebKit/Source/core/html/RelList.h
@@ -5,28 +5,17 @@ #ifndef RelList_h #define RelList_h -#include "core/HTMLNames.h" #include "core/dom/DOMTokenList.h" -#include "core/dom/Element.h" -#include "core/dom/SpaceSplitString.h" namespace blink { class RelList final : public DOMTokenList { public: static RelList* Create(Element* element) { return new RelList(element); } - DECLARE_VIRTUAL_TRACE(); private: explicit RelList(Element*); - - void setValue(const AtomicString& value) override { - element_->setAttribute(HTMLNames::relAttr, value); - } - bool ValidateTokenValue(const AtomicString&, ExceptionState&) const override; - - Member<Element> element_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/web/DateTimeChooserImpl.cpp b/third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.cpp similarity index 99% rename from third_party/WebKit/Source/web/DateTimeChooserImpl.cpp rename to third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.cpp index c0e9e9e..47fe8e9 100644 --- a/third_party/WebKit/Source/web/DateTimeChooserImpl.cpp +++ b/third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.cpp
@@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "web/DateTimeChooserImpl.h" +#include "core/html/forms/DateTimeChooserImpl.h" #include "core/InputTypeNames.h" #include "core/frame/LocalFrameView.h"
diff --git a/third_party/WebKit/Source/web/DateTimeChooserImpl.h b/third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.h similarity index 94% rename from third_party/WebKit/Source/web/DateTimeChooserImpl.h rename to third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.h index 32585ed..e0404230 100644 --- a/third_party/WebKit/Source/web/DateTimeChooserImpl.h +++ b/third_party/WebKit/Source/core/html/forms/DateTimeChooserImpl.h
@@ -31,9 +31,10 @@ #ifndef DateTimeChooserImpl_h #define DateTimeChooserImpl_h +#include <memory> +#include "core/CoreExport.h" #include "core/html/forms/DateTimeChooser.h" #include "core/page/PagePopupClient.h" -#include <memory> namespace blink { @@ -41,8 +42,9 @@ class DateTimeChooserClient; class PagePopup; -class DateTimeChooserImpl final : public DateTimeChooser, - public PagePopupClient { +class CORE_EXPORT DateTimeChooserImpl final + : public NON_EXPORTED_BASE(DateTimeChooser), + public NON_EXPORTED_BASE(PagePopupClient) { public: static DateTimeChooserImpl* Create(ChromeClient*, DateTimeChooserClient*,
diff --git a/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp b/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp index 985cf2c..9a41b09 100644 --- a/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp +++ b/third_party/WebKit/Source/core/html/forms/TextControlInnerElements.cpp
@@ -89,9 +89,6 @@ style->SetUserModify(EUserModify::kReadOnly); style->SetUnique(); - if (const ComputedStyle* parent_style = ParentComputedStyle()) - StyleAdjuster::AdjustStyleForAlignment(*style, *parent_style); - return style.Release(); } @@ -149,8 +146,6 @@ // Using StyleAdjuster::adjustComputedStyle updates unwanted style. We'd like // to apply only editing-related and alignment-related. StyleAdjuster::AdjustStyleForEditing(*inner_editor_style); - if (const ComputedStyle* parent_style = ParentComputedStyle()) - StyleAdjuster::AdjustStyleForAlignment(*inner_editor_style, *parent_style); return inner_editor_style.Release(); }
diff --git a/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.cpp b/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.cpp index 0011dfe..d1fdd44 100644 --- a/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.cpp +++ b/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.cpp
@@ -21,15 +21,7 @@ HTMLMediaElementControlsList::HTMLMediaElementControlsList( HTMLMediaElement* element) - : DOMTokenList(this), element_(element) {} - -HTMLMediaElementControlsList::~HTMLMediaElementControlsList() = default; - -DEFINE_TRACE(HTMLMediaElementControlsList) { - visitor->Trace(element_); - DOMTokenList::Trace(visitor); - DOMTokenListObserver::Trace(visitor); -} + : DOMTokenList(*element, HTMLNames::controlslistAttr) {} bool HTMLMediaElementControlsList::ValidateTokenValue( const AtomicString& token_value, @@ -41,10 +33,6 @@ return false; } -void HTMLMediaElementControlsList::ValueWasSet(const AtomicString& value) { - element_->ControlsListValueWasSet(value); -} - bool HTMLMediaElementControlsList::ShouldHideDownload() const { return Tokens().Contains(kNoDownload); }
diff --git a/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.h b/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.h index 8c8d684..ebfce6e 100644 --- a/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.h +++ b/third_party/WebKit/Source/core/html/media/HTMLMediaElementControlsList.h
@@ -13,19 +13,12 @@ class HTMLMediaElement; -class HTMLMediaElementControlsList final : public DOMTokenList, - public DOMTokenListObserver { - USING_GARBAGE_COLLECTED_MIXIN(HTMLMediaElementControlsList); - +class HTMLMediaElementControlsList final : public DOMTokenList { public: static HTMLMediaElementControlsList* Create(HTMLMediaElement* element) { return new HTMLMediaElementControlsList(element); } - ~HTMLMediaElementControlsList() override; - - DECLARE_VIRTUAL_TRACE(); - // Whether the list dictates to hide a certain control. CORE_EXPORT bool ShouldHideDownload() const; CORE_EXPORT bool ShouldHideFullscreen() const; @@ -34,11 +27,6 @@ private: explicit HTMLMediaElementControlsList(HTMLMediaElement*); bool ValidateTokenValue(const AtomicString&, ExceptionState&) const override; - - // DOMTokenListObserver. - void ValueWasSet(const AtomicString&) override; - - Member<HTMLMediaElement> element_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.cpp b/third_party/WebKit/Source/core/layout/LayoutBox.cpp index 382ef45..da017f7 100644 --- a/third_party/WebKit/Source/core/layout/LayoutBox.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutBox.cpp
@@ -662,8 +662,7 @@ const ScrollAlignment& align_x, const ScrollAlignment& align_y, ScrollType scroll_type, - bool make_visible_in_visual_viewport, - ScrollBehavior scroll_behavior) { + bool make_visible_in_visual_viewport) { DCHECK(scroll_type == kProgrammaticScroll || scroll_type == kUserScroll); // Presumably the same issue as in setScrollTop. See crbug.com/343132. DisableCompositingQueryAsserts disabler; @@ -684,18 +683,14 @@ !ContainingBlock()->Style()->LineClamp().IsNone(); } - bool is_smooth = scroll_behavior == kScrollBehaviorSmooth || - (scroll_behavior == kScrollBehaviorAuto && - Style()->GetScrollBehavior() == kScrollBehaviorSmooth); - if (HasOverflowClip() && !restricted_by_line_clamp) { // Don't scroll to reveal an overflow layer that is restricted by the // -webkit-line-clamp property. This will prevent us from revealing text // hidden by the slider in Safari RSS. // TODO(eae): We probably don't need this any more as we don't share any // code with the Safari RSS reeder. - new_rect = GetScrollableArea()->ScrollIntoView( - rect_to_scroll, align_x, align_y, is_smooth, scroll_type); + new_rect = GetScrollableArea()->ScrollIntoView(rect_to_scroll, align_x, + align_y, scroll_type); if (new_rect.IsEmpty()) return; } else if (!parent_box && CanBeProgramaticallyScrolled()) { @@ -704,10 +699,10 @@ if (!IsDisallowedAutoscroll(owner_element, frame_view)) { if (make_visible_in_visual_viewport) { frame_view->GetScrollableArea()->ScrollIntoView( - rect_to_scroll, align_x, align_y, is_smooth, scroll_type); + rect_to_scroll, align_x, align_y, scroll_type); } else { frame_view->LayoutViewportScrollableArea()->ScrollIntoView( - rect_to_scroll, align_x, align_y, is_smooth, scroll_type); + rect_to_scroll, align_x, align_y, scroll_type); } if (owner_element && owner_element->GetLayoutObject()) { if (frame_view->SafeToPropagateScrollToParent()) { @@ -737,11 +732,9 @@ if (GetFrame()->GetPage()->GetAutoscrollController().AutoscrollInProgress()) parent_box = EnclosingScrollableBox(); - if (parent_box) { + if (parent_box) parent_box->ScrollRectToVisible(new_rect, align_x, align_y, scroll_type, - make_visible_in_visual_viewport, - scroll_behavior); - } + make_visible_in_visual_viewport); } void LayoutBox::AbsoluteRects(Vector<IntRect>& rects, @@ -2890,15 +2883,14 @@ // Flexbox Items, which obviously should have a container. return false; } - const ComputedStyle* parent_style = IsAnonymous() ? cb->Style() : nullptr; if (cb->IsHorizontalWritingMode() != IsHorizontalWritingMode()) return style .ResolvedAlignSelf(cb->SelfAlignmentNormalBehavior(this), - parent_style) + cb->Style()) .GetPosition() == kItemPositionStretch; return style .ResolvedJustifySelf(cb->SelfAlignmentNormalBehavior(this), - parent_style) + cb->Style()) .GetPosition() == kItemPositionStretch; }
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.h b/third_party/WebKit/Source/core/layout/LayoutBox.h index 464f77a..d2b3f86 100644 --- a/third_party/WebKit/Source/core/layout/LayoutBox.h +++ b/third_party/WebKit/Source/core/layout/LayoutBox.h
@@ -588,8 +588,7 @@ const ScrollAlignment& align_x, const ScrollAlignment& align_y, ScrollType = kProgrammaticScroll, - bool make_visible_in_visual_viewport = true, - ScrollBehavior = kScrollBehaviorAuto); + bool make_visible_in_visual_viewport = true); LayoutRectOutsets MarginBoxOutsets() const override { return margin_box_outsets_;
diff --git a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp index 79ca9899..3b10dde9 100644 --- a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
@@ -325,14 +325,13 @@ intrinsic_size_along_main_axis_.erase(child); } -// TODO (lajava): Is this function still needed ? Every time the flex -// container's align-items value changes we propagate the diff to its children -// (see ComputedStyle::stylePropagationDiff). void LayoutFlexibleBox::StyleDidChange(StyleDifference diff, const ComputedStyle* old_style) { LayoutBlock::StyleDidChange(diff, old_style); - if (old_style && old_style->AlignItemsPosition() == kItemPositionStretch && + if (old_style && + old_style->ResolvedAlignItems(SelfAlignmentNormalBehavior()) + .GetPosition() == kItemPositionStretch && diff.NeedsFullLayout()) { // Flex items that were previously stretching need to be relayed out so we // can compute new available cross axis space. This is only necessary for @@ -1706,8 +1705,7 @@ const LayoutBox& child) const { ItemPosition align = child.StyleRef() - .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), - child.IsAnonymous() ? Style() : nullptr) + .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), Style()) .GetPosition(); DCHECK_NE(align, kItemPositionAuto); DCHECK_NE(align, kItemPositionNormal);
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp index 7fc73fa..99bc7c6 100644 --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
@@ -97,12 +97,67 @@ DirtyGrid(); } +StyleSelfAlignmentData LayoutGrid::SelfAlignmentForChild( + GridAxis axis, + const LayoutBox& child, + const ComputedStyle* style) const { + return axis == kGridRowAxis ? JustifySelfForChild(child, style) + : AlignSelfForChild(child, style); +} + +bool LayoutGrid::SelfAlignmentChangedToStretch(GridAxis axis, + const ComputedStyle& old_style, + const ComputedStyle& new_style, + const LayoutBox& child) const { + return SelfAlignmentForChild(axis, child, &old_style).GetPosition() != + kItemPositionStretch && + SelfAlignmentForChild(axis, child, &new_style).GetPosition() == + kItemPositionStretch; +} + +bool LayoutGrid::SelfAlignmentChangedFromStretch(GridAxis axis, + const ComputedStyle& old_style, + const ComputedStyle& new_style, + const LayoutBox& child) const { + return SelfAlignmentForChild(axis, child, &old_style).GetPosition() == + kItemPositionStretch && + SelfAlignmentForChild(axis, child, &new_style).GetPosition() != + kItemPositionStretch; +} + void LayoutGrid::StyleDidChange(StyleDifference diff, const ComputedStyle* old_style) { LayoutBlock::StyleDidChange(diff, old_style); if (!old_style) return; + const ComputedStyle& new_style = StyleRef(); + if (old_style && + old_style->ResolvedAlignItems(SelfAlignmentNormalBehavior(this)) + .GetPosition() == kItemPositionStretch && + diff.NeedsFullLayout()) { + // Style changes on the grid container implying stretching (to-stretch) or + // shrinking (from-stretch) require the affected items to be laid out again. + // These logic only applies to 'stretch' since the rest of the alignment + // values don't change the size of the box. + // In any case, the items' overrideSize will be cleared and recomputed (if + // necessary) as part of the Grid layout logic, triggered by this style + // change. + for (LayoutBox* child = FirstInFlowChildBox(); child; + child = child->NextInFlowSiblingBox()) { + if (SelfAlignmentChangedToStretch(kGridRowAxis, *old_style, new_style, + *child) || + SelfAlignmentChangedFromStretch(kGridRowAxis, *old_style, new_style, + *child) || + SelfAlignmentChangedToStretch(kGridColumnAxis, *old_style, new_style, + *child) || + SelfAlignmentChangedFromStretch(kGridColumnAxis, *old_style, + new_style, *child)) { + child->SetNeedsLayout(LayoutInvalidationReason::kGridChanged); + } + } + } + // FIXME: The following checks could be narrowed down if we kept track of // which type of grid items we have: // - explicit grid size changes impact negative explicitely positioned and @@ -1530,29 +1585,21 @@ } StyleSelfAlignmentData LayoutGrid::AlignSelfForChild( - const LayoutBox& child) const { - if (!child.IsAnonymous()) { - return child.StyleRef().ResolvedAlignSelf( - SelfAlignmentNormalBehavior(&child)); - } - // All the 'auto' values has been solved by the StyleAdjuster, but it's - // possible that some grid items generate Anonymous boxes, which need to be - // solved during layout. + const LayoutBox& child, + const ComputedStyle* style) const { + if (!style) + style = Style(); return child.StyleRef().ResolvedAlignSelf(SelfAlignmentNormalBehavior(&child), - Style()); + style); } StyleSelfAlignmentData LayoutGrid::JustifySelfForChild( - const LayoutBox& child) const { - if (!child.IsAnonymous()) { - return child.StyleRef().ResolvedJustifySelf( - SelfAlignmentNormalBehavior(&child)); - } - // All the 'auto' values has been solved by the StyleAdjuster, but it's - // possible that some grid items generate Anonymous boxes, which need to be - // solved during layout. + const LayoutBox& child, + const ComputedStyle* style) const { + if (!style) + style = Style(); return child.StyleRef().ResolvedJustifySelf( - SelfAlignmentNormalBehavior(&child), Style()); + SelfAlignmentNormalBehavior(&child), style); } GridTrackSizingDirection LayoutGrid::FlowAwareDirectionForChild( @@ -1780,11 +1827,9 @@ bool LayoutGrid::IsBaselineAlignmentForChild(const LayoutBox& child, GridAxis baseline_axis) const { - bool is_column_axis_baseline = baseline_axis == kGridColumnAxis; - ItemPosition align = is_column_axis_baseline - ? AlignSelfForChild(child).GetPosition() - : JustifySelfForChild(child).GetPosition(); - bool has_auto_margins = is_column_axis_baseline + ItemPosition align = + SelfAlignmentForChild(baseline_axis, child).GetPosition(); + bool has_auto_margins = baseline_axis == kGridColumnAxis ? HasAutoMarginsInColumnAxis(child) : HasAutoMarginsInRowAxis(child); return IsBaselinePosition(align) && !has_auto_margins; @@ -1804,9 +1849,8 @@ : col_axis_alignment_context_; auto* context = contexts_map.at(span.StartLine()); DCHECK(context); - ItemPosition align = is_column_axis_baseline - ? AlignSelfForChild(child).GetPosition() - : JustifySelfForChild(child).GetPosition(); + ItemPosition align = + SelfAlignmentForChild(baseline_axis, child).GetPosition(); return context->GetSharedGroup(child, align); } @@ -1924,9 +1968,8 @@ auto add_result = contexts_map.insert(span.StartLine(), nullptr); // Looking for a compatible baseline-sharing group. - ItemPosition align = is_column_axis_baseline - ? AlignSelfForChild(child).GetPosition() - : JustifySelfForChild(child).GetPosition(); + ItemPosition align = + SelfAlignmentForChild(baseline_axis, child).GetPosition(); if (add_result.is_new_entry) { add_result.stored_value->value = WTF::MakeUnique<BaselineContext>(child, align, ascent, descent);
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.h b/third_party/WebKit/Source/core/layout/LayoutGrid.h index cf5354f..7a82d7a 100644 --- a/third_party/WebKit/Source/core/layout/LayoutGrid.h +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.h
@@ -128,6 +128,14 @@ LayoutObject* before_child = nullptr) override; void RemoveChild(LayoutObject*) override; + bool SelfAlignmentChangedToStretch(GridAxis, + const ComputedStyle& old_style, + const ComputedStyle& new_style, + const LayoutBox&) const; + bool SelfAlignmentChangedFromStretch(GridAxis, + const ComputedStyle& old_style, + const ComputedStyle& new_style, + const LayoutBox&) const; void StyleDidChange(StyleDifference, const ComputedStyle*) override; Optional<LayoutUnit> AvailableSpaceForGutters(GridTrackSizingDirection) const; @@ -212,8 +220,16 @@ LayoutUnit AvailableAlignmentSpaceForChildBeforeStretching( LayoutUnit grid_area_breadth_for_child, const LayoutBox&) const; - StyleSelfAlignmentData JustifySelfForChild(const LayoutBox&) const; - StyleSelfAlignmentData AlignSelfForChild(const LayoutBox&) const; + StyleSelfAlignmentData JustifySelfForChild( + const LayoutBox&, + const ComputedStyle* = nullptr) const; + StyleSelfAlignmentData AlignSelfForChild( + const LayoutBox&, + const ComputedStyle* = nullptr) const; + StyleSelfAlignmentData SelfAlignmentForChild( + GridAxis, + const LayoutBox& child, + const ComputedStyle* = nullptr) const; void ApplyStretchAlignmentToChildIfNeeded(LayoutBox&); bool HasAutoSizeInColumnAxis(const LayoutBox& child) const { return IsHorizontalWritingMode() ? child.StyleRef().Height().IsAuto()
diff --git a/third_party/WebKit/Source/core/layout/LayoutListBox.cpp b/third_party/WebKit/Source/core/layout/LayoutListBox.cpp index fb7cbd9..d3a45d6 100644 --- a/third_party/WebKit/Source/core/layout/LayoutListBox.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutListBox.cpp
@@ -133,7 +133,7 @@ DCHECK(Layer()->GetScrollableArea()); Layer()->GetScrollableArea()->ScrollIntoView( rect, ScrollAlignment::kAlignToEdgeIfNeeded, - ScrollAlignment::kAlignToEdgeIfNeeded, false); + ScrollAlignment::kAlignToEdgeIfNeeded); } }
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp index 1639492..1f6b5b50 100644 --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
@@ -631,15 +631,13 @@ const ScrollAlignment& align_x, const ScrollAlignment& align_y, ScrollType scroll_type, - bool make_visible_in_visual_viewport, - ScrollBehavior scroll_behavior) { + bool make_visible_in_visual_viewport) { LayoutBox* enclosing_box = this->EnclosingBox(); if (!enclosing_box) return false; enclosing_box->ScrollRectToVisible(rect, align_x, align_y, scroll_type, - make_visible_in_visual_viewport, - scroll_behavior); + make_visible_in_visual_viewport); return true; }
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h index ed845f2..34ccc620 100644 --- a/third_party/WebKit/Source/core/layout/LayoutObject.h +++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
@@ -280,8 +280,7 @@ const ScrollAlignment& align_x = ScrollAlignment::kAlignCenterIfNeeded, const ScrollAlignment& align_y = ScrollAlignment::kAlignCenterIfNeeded, ScrollType = kProgrammaticScroll, - bool make_visible_in_visual_viewport = true, - ScrollBehavior = kScrollBehaviorAuto); + bool make_visible_in_visual_viewport = true); // Convenience function for getting to the nearest enclosing box of a // LayoutObject.
diff --git a/third_party/WebKit/Source/core/layout/ScrollAlignment.cpp b/third_party/WebKit/Source/core/layout/ScrollAlignment.cpp index f9756ff..b91cd6b 100644 --- a/third_party/WebKit/Source/core/layout/ScrollAlignment.cpp +++ b/third_party/WebKit/Source/core/layout/ScrollAlignment.cpp
@@ -59,10 +59,6 @@ kScrollAlignmentTop, kScrollAlignmentTop, kScrollAlignmentTop}; const ScrollAlignment ScrollAlignment::kAlignBottomAlways = { kScrollAlignmentBottom, kScrollAlignmentBottom, kScrollAlignmentBottom}; -const ScrollAlignment ScrollAlignment::kAlignLeftAlways = { - kScrollAlignmentLeft, kScrollAlignmentLeft, kScrollAlignmentLeft}; -const ScrollAlignment ScrollAlignment::kAlignRightAlways = { - kScrollAlignmentRight, kScrollAlignmentRight, kScrollAlignmentRight}; #define MIN_INTERSECT_FOR_REVEAL 32
diff --git a/third_party/WebKit/Source/core/layout/ScrollAlignment.h b/third_party/WebKit/Source/core/layout/ScrollAlignment.h index cfa070b..4d162cc7 100644 --- a/third_party/WebKit/Source/core/layout/ScrollAlignment.h +++ b/third_party/WebKit/Source/core/layout/ScrollAlignment.h
@@ -84,8 +84,6 @@ static const ScrollAlignment kAlignCenterAlways; static const ScrollAlignment kAlignTopAlways; static const ScrollAlignment kAlignBottomAlways; - static const ScrollAlignment kAlignLeftAlways; - static const ScrollAlignment kAlignRightAlways; ScrollAlignmentBehavior rect_visible_; ScrollAlignmentBehavior rect_hidden_;
diff --git a/third_party/WebKit/Source/core/page/Page.cpp b/third_party/WebKit/Source/core/page/Page.cpp index a8096785..25b883e 100644 --- a/third_party/WebKit/Source/core/page/Page.cpp +++ b/third_party/WebKit/Source/core/page/Page.cpp
@@ -61,7 +61,6 @@ #include "platform/graphics/GraphicsLayer.h" #include "platform/loader/fetch/ResourceFetcher.h" #include "platform/plugins/PluginData.h" -#include "platform/scroll/SmoothScrollSequencer.h" #include "public/platform/Platform.h" namespace blink { @@ -173,13 +172,6 @@ return *page_scale_constraints_set_; } -SmoothScrollSequencer* Page::GetSmoothScrollSequencer() { - if (!smooth_scroll_sequencer_) - smooth_scroll_sequencer_ = new SmoothScrollSequencer(); - - return smooth_scroll_sequencer_.Get(); -} - const PageScaleConstraintsSet& Page::GetPageScaleConstraintsSet() const { return *page_scale_constraints_set_; } @@ -634,7 +626,6 @@ visitor->Trace(context_menu_controller_); visitor->Trace(pointer_lock_controller_); visitor->Trace(scrolling_coordinator_); - visitor->Trace(smooth_scroll_sequencer_); visitor->Trace(browser_controls_); visitor->Trace(console_message_storage_); visitor->Trace(event_handler_registry_);
diff --git a/third_party/WebKit/Source/core/page/Page.h b/third_party/WebKit/Source/core/page/Page.h index 9e0b4de..f1ef9635 100644 --- a/third_party/WebKit/Source/core/page/Page.h +++ b/third_party/WebKit/Source/core/page/Page.h
@@ -66,7 +66,6 @@ class PointerLockController; class ScopedPageSuspender; class ScrollingCoordinator; -class SmoothScrollSequencer; class Settings; class ConsoleMessageStorage; class SpellCheckerClient; @@ -178,8 +177,6 @@ ScrollingCoordinator* GetScrollingCoordinator(); - SmoothScrollSequencer* GetSmoothScrollSequencer(); - ClientRectList* NonFastScrollableRects(const LocalFrame*); Settings& GetSettings() const { return *settings_; } @@ -305,7 +302,6 @@ const std::unique_ptr<PageScaleConstraintsSet> page_scale_constraints_set_; const Member<PointerLockController> pointer_lock_controller_; Member<ScrollingCoordinator> scrolling_coordinator_; - Member<SmoothScrollSequencer> smooth_scroll_sequencer_; const Member<BrowserControls> browser_controls_; const Member<ConsoleMessageStorage> console_message_storage_; const Member<EventHandlerRegistry> event_handler_registry_;
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp index 948b6c2..a268a74f 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -209,13 +209,6 @@ return nullptr; } -SmoothScrollSequencer* PaintLayerScrollableArea::GetSmoothScrollSequencer() - const { - if (Page* page = Box().GetFrame()->GetPage()) - return page->GetSmoothScrollSequencer(); - return nullptr; -} - GraphicsLayer* PaintLayerScrollableArea::LayerForScrolling() const { return Layer()->HasCompositedLayerMapping() ? Layer()->GetCompositedLayerMapping()->ScrollingContentsLayer() @@ -1738,7 +1731,6 @@ const LayoutRect& rect, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType scroll_type) { LayoutRect local_expose_rect( Box() @@ -1752,14 +1744,8 @@ ScrollOffset old_scroll_offset = GetScrollOffset(); ScrollOffset new_scroll_offset(ClampScrollOffset(RoundedIntSize( ToScrollOffset(FloatPoint(r.Location()) + old_scroll_offset)))); - if (is_smooth) { - DCHECK(scroll_type == kProgrammaticScroll); - GetSmoothScrollSequencer()->QueueAnimation(this, new_scroll_offset); - } else { - SetScrollOffset(new_scroll_offset, scroll_type, kScrollBehaviorInstant); - } - ScrollOffset scroll_offset_difference = - ClampScrollOffset(new_scroll_offset) - old_scroll_offset; + SetScrollOffset(new_scroll_offset, scroll_type, kScrollBehaviorInstant); + ScrollOffset scroll_offset_difference = GetScrollOffset() - old_scroll_offset; local_expose_rect.Move(-LayoutSize(scroll_offset_difference)); LayoutRect intersect =
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h index ff607f8f..c396827 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h +++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h
@@ -240,8 +240,6 @@ PlatformChromeClient* GetChromeClient() const override; - SmoothScrollSequencer* GetSmoothScrollSequencer() const override; - // For composited scrolling, we allocate an extra GraphicsLayer to hold // onto the scrolling content. The layer can be shifted on the GPU and // composited at little cost. @@ -394,7 +392,6 @@ LayoutRect ScrollIntoView(const LayoutRect&, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType = kProgrammaticScroll) override; // Returns true if scrollable area is in the FrameView's collection of
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.cpp b/third_party/WebKit/Source/core/style/ComputedStyle.cpp index b23deae..ded0880d 100644 --- a/third_party/WebKit/Source/core/style/ComputedStyle.cpp +++ b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
@@ -199,7 +199,6 @@ } if (!old_style->LoadingCustomFontsEqual(*new_style) || - old_style->AlignItems() != new_style->AlignItems() || old_style->JustifyItems() != new_style->JustifyItems()) return kInherit; @@ -220,9 +219,6 @@ StyleSelfAlignmentData ResolvedSelfAlignment( const StyleSelfAlignmentData& value, ItemPosition normal_value_behavior) { - // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' - // flag to not just mean 'auto' prior to running the StyleAdjuster but also - // mean 'normal' after running it. if (value.GetPosition() == kItemPositionNormal || value.GetPosition() == kItemPositionAuto) return {normal_value_behavior, kOverflowAlignmentDefault}; @@ -244,9 +240,6 @@ if (!parent_style || AlignSelfPosition() != kItemPositionAuto) return ResolvedSelfAlignment(AlignSelf(), normal_value_behaviour); - // We shouldn't need to resolve any 'auto' value in post-adjusment - // ComputedStyle, but some layout models can generate anonymous boxes that may - // need 'auto' value resolution during layout. // The 'auto' keyword computes to the parent's align-items computed value. return parent_style->ResolvedAlignItems(normal_value_behaviour); } @@ -266,9 +259,6 @@ if (!parent_style || JustifySelfPosition() != kItemPositionAuto) return ResolvedSelfAlignment(JustifySelf(), normal_value_behaviour); - // We shouldn't need to resolve any 'auto' value in post-adjusment - // ComputedStyle, but some layout models can generate anonymous boxes that may - // need 'auto' value resolution during layout. // The auto keyword computes to the parent's justify-items computed value. return parent_style->ResolvedJustifyItems(normal_value_behaviour); }
diff --git a/third_party/WebKit/Source/core/style/ComputedStyleConstants.h b/third_party/WebKit/Source/core/style/ComputedStyleConstants.h index 67a66e0..caf0271 100644 --- a/third_party/WebKit/Source/core/style/ComputedStyleConstants.h +++ b/third_party/WebKit/Source/core/style/ComputedStyleConstants.h
@@ -357,8 +357,7 @@ } enum ItemPosition { - kItemPositionAuto, // It will mean 'normal' after running the StyleAdjuster - // to avoid resolving the initial values. + kItemPositionAuto, kItemPositionNormal, kItemPositionStretch, kItemPositionBaseline,
diff --git a/third_party/WebKit/Source/modules/netinfo/NetworkInformation.idl b/third_party/WebKit/Source/modules/netinfo/NetworkInformation.idl index c47e8b9..e3f885f 100644 --- a/third_party/WebKit/Source/modules/netinfo/NetworkInformation.idl +++ b/third_party/WebKit/Source/modules/netinfo/NetworkInformation.idl
@@ -35,7 +35,7 @@ [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoDownlinkMax] readonly attribute Megabit downlinkMax; [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoOnChange] attribute EventHandler onchange; [MeasureAs=NetInfoOnTypeChange] attribute EventHandler ontypechange; - [MeasureAs=NetInfoEffectiveType] readonly attribute EffectiveConnectionType effectiveType; + [RuntimeEnabled=NetInfoEffectiveType, MeasureAs=NetInfoEffectiveType] readonly attribute EffectiveConnectionType effectiveType; [RuntimeEnabled=NetInfoRtt, MeasureAs=NetInfoRtt] readonly attribute Milliseconds rtt; [RuntimeEnabled=NetInfoDownlink, MeasureAs=NetInfoDownlink] readonly attribute Megabit downlink; };
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn index 6dcc0b1b..e3caa04 100644 --- a/third_party/WebKit/Source/platform/BUILD.gn +++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -1386,8 +1386,6 @@ "scroll/ScrollbarThemeOverlay.cpp", "scroll/ScrollbarThemeOverlay.h", "scroll/ScrollbarThemeOverlayMock.h", - "scroll/SmoothScrollSequencer.cpp", - "scroll/SmoothScrollSequencer.h", "speech/PlatformSpeechSynthesisUtterance.cpp", "speech/PlatformSpeechSynthesisUtterance.h", "speech/PlatformSpeechSynthesisVoice.cpp",
diff --git a/third_party/WebKit/Source/platform/geometry/FloatSize.h b/third_party/WebKit/Source/platform/geometry/FloatSize.h index 0dbbafe..138c452 100644 --- a/third_party/WebKit/Source/platform/geometry/FloatSize.h +++ b/third_party/WebKit/Source/platform/geometry/FloatSize.h
@@ -199,7 +199,4 @@ } // namespace blink -// Allows this class to be stored in a HeapVector. -WTF_ALLOW_CLEAR_UNUSED_SLOTS_WITH_MEM_FUNCTIONS(blink::FloatSize); - #endif // FloatSize_h
diff --git a/third_party/WebKit/Source/platform/graphics/UnacceleratedImageBufferSurface.cpp b/third_party/WebKit/Source/platform/graphics/UnacceleratedImageBufferSurface.cpp index 64a496b5..ecded67 100644 --- a/third_party/WebKit/Source/platform/graphics/UnacceleratedImageBufferSurface.cpp +++ b/third_party/WebKit/Source/platform/graphics/UnacceleratedImageBufferSurface.cpp
@@ -30,6 +30,7 @@ #include "platform/graphics/UnacceleratedImageBufferSurface.h" +#include "platform/RuntimeEnabledFeatures.h" #include "platform/graphics/skia/SkiaUtils.h" #include "platform/wtf/PassRefPtr.h" #include "third_party/skia/include/core/SkSurface.h" @@ -56,7 +57,12 @@ // Always save an initial frame, to support resetting the top level matrix // and clip. - canvas_ = WTF::WrapUnique(new SkiaPaintCanvas(surface_->getCanvas())); + canvas_ = WTF::WrapUnique(new SkiaPaintCanvas( + surface_->getCanvas(), + RuntimeEnabledFeatures::colorCorrectRenderingEnabled() && + color_params.UsesOutputSpaceBlending() + ? color_params.GetSkColorSpace() + : nullptr)); canvas_->save(); if (initialization_mode == kInitializeImagePixels)
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/AcceleratedImageBufferSurface.cpp b/third_party/WebKit/Source/platform/graphics/gpu/AcceleratedImageBufferSurface.cpp index fa52e694..2b792551 100644 --- a/third_party/WebKit/Source/platform/graphics/gpu/AcceleratedImageBufferSurface.cpp +++ b/third_party/WebKit/Source/platform/graphics/gpu/AcceleratedImageBufferSurface.cpp
@@ -30,6 +30,7 @@ #include "platform/graphics/gpu/AcceleratedImageBufferSurface.h" +#include "platform/RuntimeEnabledFeatures.h" #include "platform/graphics/gpu/SharedGpuContext.h" #include "platform/graphics/skia/SkiaUtils.h" #include "platform/wtf/PtrUtil.h" @@ -62,7 +63,12 @@ if (!surface_) return; - canvas_ = WTF::WrapUnique(new SkiaPaintCanvas(surface_->getCanvas())); + canvas_ = WTF::WrapUnique(new SkiaPaintCanvas( + surface_->getCanvas(), + RuntimeEnabledFeatures::colorCorrectRenderingEnabled() && + color_params.UsesOutputSpaceBlending() + ? color_params.GetSkColorSpace() + : nullptr)); Clear(); // Always save an initial frame, to support resetting the top level matrix
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp index 1ced7257..b717e08 100644 --- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp +++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
@@ -10,7 +10,6 @@ #include "platform/geometry/IntSize.h" #include "platform/graphics/GraphicsLayer.h" #include "platform/scroll/ScrollableArea.h" -#include "platform/scroll/SmoothScrollSequencer.h" #include "platform/wtf/PtrUtil.h" #include "public/platform/Platform.h" #include "public/platform/WebCompositorSupport.h" @@ -40,15 +39,12 @@ NotifyOffsetChanged(offset); } -void ProgrammaticScrollAnimator::AnimateToOffset( - const ScrollOffset& offset, - bool sequenced_for_smooth_scroll) { +void ProgrammaticScrollAnimator::AnimateToOffset(const ScrollOffset& offset) { if (run_state_ == RunState::kPostAnimationCleanup) ResetAnimationState(); start_time_ = 0.0; target_offset_ = offset; - sequenced_for_smooth_scroll_ = sequenced_for_smooth_scroll; animation_curve_ = CompositorScrollOffsetAnimationCurve::Create( CompositorOffsetFromBlinkOffset(target_offset_), CompositorScrollOffsetAnimationCurve::kScrollDurationDeltaBased); @@ -80,7 +76,6 @@ if (is_finished) { run_state_ = RunState::kPostAnimationCleanup; - AnimationFinished(); } else if (!scrollable_area_->ScheduleAnimation()) { NotifyOffsetChanged(offset); ResetAnimationState(); @@ -174,16 +169,6 @@ int group_id) { DCHECK_NE(run_state_, RunState::kRunningOnCompositorButNeedsUpdate); ScrollAnimatorCompositorCoordinator::CompositorAnimationFinished(group_id); - AnimationFinished(); -} - -void ProgrammaticScrollAnimator::AnimationFinished() { - if (sequenced_for_smooth_scroll_) { - sequenced_for_smooth_scroll_ = false; - if (SmoothScrollSequencer* sequencer = - GetScrollableArea()->GetSmoothScrollSequencer()) - sequencer->RunQueuedAnimations(); - } } DEFINE_TRACE(ProgrammaticScrollAnimator) {
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h index 8f1240fa..f8a365c 100644 --- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h +++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.h
@@ -30,8 +30,7 @@ virtual ~ProgrammaticScrollAnimator(); void ScrollToOffsetWithoutAnimation(const ScrollOffset&); - void AnimateToOffset(const ScrollOffset&, - bool sequenced_for_smooth_scroll = false); + void AnimateToOffset(const ScrollOffset&); // ScrollAnimatorCompositorCoordinator implementation. void ResetAnimationState() override; @@ -53,13 +52,11 @@ explicit ProgrammaticScrollAnimator(ScrollableArea*); void NotifyOffsetChanged(const ScrollOffset&); - void AnimationFinished(); Member<ScrollableArea> scrollable_area_; std::unique_ptr<CompositorScrollOffsetAnimationCurve> animation_curve_; ScrollOffset target_offset_; double start_time_; - bool sequenced_for_smooth_scroll_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollTypes.h b/third_party/WebKit/Source/platform/scroll/ScrollTypes.h index 7be2896..63a564a 100644 --- a/third_party/WebKit/Source/platform/scroll/ScrollTypes.h +++ b/third_party/WebKit/Source/platform/scroll/ScrollTypes.h
@@ -181,8 +181,6 @@ enum ScrollbarOrientation { kHorizontalScrollbar, kVerticalScrollbar }; -enum ScrollOrientation { kHorizontalScroll, kVerticalScroll }; - enum ScrollbarMode { kScrollbarAuto, kScrollbarAlwaysOff, kScrollbarAlwaysOn }; enum ScrollbarControlSize { kRegularScrollbar, kSmallScrollbar };
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp index 09a44edf..769acc3 100644 --- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp +++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
@@ -37,7 +37,6 @@ #include "platform/scroll/MainThreadScrollingReason.h" #include "platform/scroll/ProgrammaticScrollAnimator.h" #include "platform/scroll/ScrollbarTheme.h" -#include "platform/scroll/SmoothScrollSequencer.h" static const int kPixelsPerLineStep = 40; static const float kMinFractionToStepWhenPaging = 0.875f; @@ -228,7 +227,7 @@ CancelScrollAnimation(); if (scroll_behavior == kScrollBehaviorSmooth) - GetProgrammaticScrollAnimator().AnimateToOffset(offset, true); + GetProgrammaticScrollAnimator().AnimateToOffset(offset); else GetProgrammaticScrollAnimator().ScrollToOffsetWithoutAnimation(offset); } @@ -256,7 +255,6 @@ LayoutRect ScrollableArea::ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType) { // TODO(bokan): This should really be implemented here but ScrollAlignment is // in Core which is a dependency violation.
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h index 728ac9b5..a84fe5c 100644 --- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.h +++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.h
@@ -53,7 +53,6 @@ struct ScrollAlignment; class ScrollAnchor; class ScrollAnimatorBase; -class SmoothScrollSequencer; class CompositorAnimationTimeline; enum IncludeScrollbarsInRect { @@ -78,10 +77,6 @@ virtual PlatformChromeClient* GetChromeClient() const { return 0; } - virtual SmoothScrollSequencer* GetSmoothScrollSequencer() const { - return nullptr; - } - virtual ScrollResult UserScroll(ScrollGranularity, const ScrollOffset&); virtual void SetScrollOffset(const ScrollOffset&, @@ -104,7 +99,6 @@ virtual LayoutRect ScrollIntoView(const LayoutRect& rect_in_content, const ScrollAlignment& align_x, const ScrollAlignment& align_y, - bool is_smooth, ScrollType = kProgrammaticScroll); static bool ScrollBehaviorFromString(const String&, ScrollBehavior&);
diff --git a/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.cpp b/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.cpp deleted file mode 100644 index f4ba71b..0000000 --- a/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.cpp +++ /dev/null
@@ -1,47 +0,0 @@ -// Copyright (c) 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 "platform/scroll/SmoothScrollSequencer.h" - -#include "platform/scroll/ProgrammaticScrollAnimator.h" -#include "platform/scroll/ScrollableArea.h" - -namespace blink { - -SmoothScrollSequencer::SmoothScrollSequencer() {} - -void SmoothScrollSequencer::QueueAnimation(ScrollableArea* scrollable, - ScrollOffset offset) { - ScrollerAndOffsetPair scroller_offset(scrollable, offset); - queue_.push_back(scroller_offset); -} - -void SmoothScrollSequencer::RunQueuedAnimations() { - if (queue_.IsEmpty()) { - current_scrollable_ = nullptr; - return; - } - ScrollerAndOffsetPair scroller_offset = queue_.back(); - queue_.pop_back(); - ScrollableArea* scrollable = scroller_offset.first; - current_scrollable_ = scrollable; - ScrollOffset offset = scroller_offset.second; - scrollable->SetScrollOffset(offset, kProgrammaticScroll, - kScrollBehaviorSmooth); -} - -void SmoothScrollSequencer::AbortAnimations() { - if (current_scrollable_) { - current_scrollable_->GetProgrammaticScrollAnimator().CancelAnimation(); - current_scrollable_ = nullptr; - } - queue_.clear(); -} - -DEFINE_TRACE(SmoothScrollSequencer) { - visitor->Trace(queue_); - visitor->Trace(current_scrollable_); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.h b/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.h deleted file mode 100644 index 3c72499..0000000 --- a/third_party/WebKit/Source/platform/scroll/SmoothScrollSequencer.h +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright (c) 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 SmoothScrollSequencer_h -#define SmoothScrollSequencer_h - -#include <utility> -#include "platform/heap/Handle.h" -#include "platform/scroll/ScrollTypes.h" - -namespace blink { - -class ScrollableArea; - -// A sequencer that queues the nested scrollers from inside to outside, -// so that they can be animated from outside to inside when smooth scroll -// is called. -class PLATFORM_EXPORT SmoothScrollSequencer final - : public GarbageCollected<SmoothScrollSequencer> { - public: - SmoothScrollSequencer(); - // Add a scroll offset animation to the back of a queue. - void QueueAnimation(ScrollableArea*, ScrollOffset); - - // Run the animation at the back of the queue. - void RunQueuedAnimations(); - - // Abort the currently running animation and all the animations in the queue. - void AbortAnimations(); - - DECLARE_TRACE(); - - private: - typedef std::pair<Member<ScrollableArea>, ScrollOffset> ScrollerAndOffsetPair; - HeapVector<ScrollerAndOffsetPair> queue_; - Member<ScrollableArea> current_scrollable_; -}; - -} // namespace blink - -#endif // SmoothScrollSequencer_h
diff --git a/third_party/WebKit/Source/web/BUILD.gn b/third_party/WebKit/Source/web/BUILD.gn index 9dce615..e535237 100644 --- a/third_party/WebKit/Source/web/BUILD.gn +++ b/third_party/WebKit/Source/web/BUILD.gn
@@ -56,8 +56,6 @@ "CompositorWorkerProxyClientImpl.h", "ContextMenuClientImpl.cpp", "ContextMenuClientImpl.h", - "DateTimeChooserImpl.cpp", - "DateTimeChooserImpl.h", "DedicatedWorkerMessagingProxyProviderImpl.cpp", "DedicatedWorkerMessagingProxyProviderImpl.h", "DevToolsEmulator.cpp", @@ -157,7 +155,6 @@ "WebMetaElement.cpp", "WebNode.cpp", "WebOptionElement.cpp", - "WebPageImportanceSignals.cpp", "WebPagePopupImpl.cpp", "WebPagePopupImpl.h", "WebPepperSocket.cpp", @@ -167,10 +164,8 @@ "WebPluginContainerImpl.cpp", "WebPluginContainerImpl.h", "WebPluginDocument.cpp", - "WebPluginScriptForbiddenScope.cpp", "WebRemoteFrameImpl.cpp", "WebRemoteFrameImpl.h", - "WebScopedUserGesture.cpp", "WebScopedWindowFocusAllowedIndicator.cpp", "WebSearchableFormData.cpp", "WebSelectElement.cpp", @@ -185,8 +180,6 @@ "WebTextCheckingCompletionImpl.cpp", "WebTextCheckingCompletionImpl.h", "WebTextCheckingResult.cpp", - "WebUserGestureIndicator.cpp", - "WebUserGestureToken.cpp", "WebUserMediaRequest.cpp", "WebViewImpl.cpp", "WebViewImpl.h", @@ -296,7 +289,6 @@ "tests/ScrollbarsTest.cpp", "tests/ScrollingCoordinatorTest.cpp", "tests/ShadowDOMV0Test.cpp", - "tests/SmoothScrollTest.cpp", "tests/SpinLockTest.cpp", "tests/TextFinderTest.cpp", "tests/TextSelectionRepaintTest.cpp",
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp index aa57f9a..51d3615 100644 --- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp +++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
@@ -52,6 +52,7 @@ #include "core/html/forms/ColorChooserClient.h" #include "core/html/forms/DateTimeChooser.h" #include "core/html/forms/DateTimeChooserClient.h" +#include "core/html/forms/DateTimeChooserImpl.h" #include "core/layout/HitTestResult.h" #include "core/layout/LayoutPart.h" #include "core/layout/compositing/CompositedSelection.h" @@ -115,7 +116,6 @@ #include "web/AudioOutputDeviceClientImpl.h" #include "web/ColorChooserPopupUIController.h" #include "web/ColorChooserUIController.h" -#include "web/DateTimeChooserImpl.h" #include "web/DevToolsEmulator.h" #include "web/ExternalDateTimeChooser.h" #include "web/ExternalPopupMenu.h"
diff --git a/third_party/WebKit/Source/web/tests/SmoothScrollTest.cpp b/third_party/WebKit/Source/web/tests/SmoothScrollTest.cpp deleted file mode 100644 index 8f74a32..0000000 --- a/third_party/WebKit/Source/web/tests/SmoothScrollTest.cpp +++ /dev/null
@@ -1,288 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "bindings/core/v8/ScrollIntoViewOptionsOrBoolean.h" -#include "core/frame/ScrollIntoViewOptions.h" -#include "core/frame/ScrollToOptions.h" -#include "public/web/WebScriptSource.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "web/WebLocalFrameImpl.h" -#include "web/tests/sim/SimCompositor.h" -#include "web/tests/sim/SimDisplayItemList.h" -#include "web/tests/sim/SimRequest.h" -#include "web/tests/sim/SimTest.h" - -namespace blink { - -namespace { - -class SmoothScrollTest : public SimTest {}; - -TEST_F(SmoothScrollTest, InstantScroll) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='space' style='height: 1000px'></div>" - "<div id='content' style='height: 1000px'></div>"); - - Compositor().BeginFrame(); - ASSERT_EQ(Window().scrollY(), 0); - Element* content = GetDocument().getElementById("content"); - ScrollIntoViewOptionsOrBoolean arg; - ScrollIntoViewOptions options; - options.setBlock("start"); - arg.setScrollIntoViewOptions(options); - content->scrollIntoView(arg); - - ASSERT_EQ(Window().scrollY(), content->OffsetTop()); -} - -TEST_F(SmoothScrollTest, SmoothScroll) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='space' style='height: 1000px'></div>" - "<div id='content' style='height: 1000px'></div>"); - - Element* content = GetDocument().getElementById("content"); - ScrollIntoViewOptionsOrBoolean arg; - ScrollIntoViewOptions options; - options.setBlock("start"); - options.setBehavior("smooth"); - arg.setScrollIntoViewOptions(options); - Compositor().BeginFrame(); - ASSERT_EQ(Window().scrollY(), 0); - - content->scrollIntoView(arg); - // Scrolling the container - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 299); - - // Finish scrolling the container - Compositor().BeginFrame(1); - ASSERT_EQ(Window().scrollY(), content->OffsetTop()); -} - -TEST_F(SmoothScrollTest, NestedContainer) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='space' style='height: 1000px'></div>" - "<div id='container' style='height: 600px; overflow: scroll'>" - " <div id='space1' style='height: 1000px'></div>" - " <div id='content' style='height: 1000px'></div>" - "</div>"); - - Element* container = GetDocument().getElementById("container"); - Element* content = GetDocument().getElementById("content"); - ScrollIntoViewOptionsOrBoolean arg; - ScrollIntoViewOptions options; - options.setBlock("start"); - options.setBehavior("smooth"); - arg.setScrollIntoViewOptions(options); - Compositor().BeginFrame(); - ASSERT_EQ(Window().scrollY(), 0); - ASSERT_EQ(container->scrollTop(), 0); - - content->scrollIntoView(arg); - // Scrolling the outer container - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 299); - ASSERT_EQ(container->scrollTop(), 0); - - // Finish scrolling the outer container - Compositor().BeginFrame(1); - ASSERT_EQ(Window().scrollY(), container->OffsetTop()); - ASSERT_EQ(container->scrollTop(), 0); - - // Scrolling the inner container - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(container->scrollTop(), 299); - - // Finish scrolling the inner container - Compositor().BeginFrame(1); - ASSERT_EQ(container->scrollTop(), - content->OffsetTop() - container->OffsetTop()); -} - -TEST_F(SmoothScrollTest, NewScrollIntoViewAbortsCurrentAnimation) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='container2' style='height: 1000px; overflow: scroll'>" - " <div id='space2' style='height: 1200px'></div>" - " <div id='content2' style='height: 1000px'></div>" - "</div>" - "<div id='container1' style='height: 600px; overflow: scroll'>" - " <div id='space1' style='height: 1000px'></div>" - " <div id='content1' style='height: 1000px'></div>" - "</div>"); - - Element* container1 = GetDocument().getElementById("container1"); - Element* container2 = GetDocument().getElementById("container2"); - Element* content1 = GetDocument().getElementById("content1"); - Element* content2 = GetDocument().getElementById("content2"); - ScrollIntoViewOptionsOrBoolean arg; - ScrollIntoViewOptions options; - options.setBlock("start"); - options.setBehavior("smooth"); - arg.setScrollIntoViewOptions(options); - - Compositor().BeginFrame(); - ASSERT_EQ(Window().scrollY(), 0); - ASSERT_EQ(container1->scrollTop(), 0); - ASSERT_EQ(container2->scrollTop(), 0); - - content1->scrollIntoView(arg); - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 299); - ASSERT_EQ(container1->scrollTop(), 0); - - content2->scrollIntoView(arg); - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 61); - ASSERT_EQ(container1->scrollTop(), 0); // container1 should not scroll. - - Compositor().BeginFrame(1); - ASSERT_EQ(Window().scrollY(), container2->OffsetTop()); - ASSERT_EQ(container2->scrollTop(), 0); - - // Scrolling content2 in container2 - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(container2->scrollTop(), 300); - - // Finish all the animation to make sure there is no another animation queued - // on container1. - while (Compositor().NeedsBeginFrame()) { - Compositor().BeginFrame(); - } - ASSERT_EQ(Window().scrollY(), container2->OffsetTop()); - ASSERT_EQ(container2->scrollTop(), - content2->OffsetTop() - container2->OffsetTop()); - ASSERT_EQ(container1->scrollTop(), 0); -} - -TEST_F(SmoothScrollTest, ScrollWindowAbortsCurrentAnimation) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='space' style='height: 1000px'></div>" - "<div id='container' style='height: 600px; overflow: scroll'>" - " <div id='space1' style='height: 1000px'></div>" - " <div id='content' style='height: 1000px'></div>" - "</div>"); - - Element* container = GetDocument().getElementById("container"); - Element* content = GetDocument().getElementById("content"); - ScrollIntoViewOptionsOrBoolean arg; - ScrollIntoViewOptions options; - options.setBlock("start"); - options.setBehavior("smooth"); - arg.setScrollIntoViewOptions(options); - Compositor().BeginFrame(); - ASSERT_EQ(Window().scrollY(), 0); - ASSERT_EQ(container->scrollTop(), 0); - - content->scrollIntoView(arg); - // Scrolling the outer container - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 299); - ASSERT_EQ(container->scrollTop(), 0); - - ScrollToOptions window_option; - window_option.setLeft(0); - window_option.setTop(0); - window_option.setBehavior("smooth"); - Window().scrollTo(window_option); - Compositor().BeginFrame(); // update run_state_. - Compositor().BeginFrame(); // Set start_time = now. - Compositor().BeginFrame(0.2); - ASSERT_EQ(Window().scrollY(), 58); - - Compositor().BeginFrame(1); - ASSERT_EQ(Window().scrollY(), 0); - ASSERT_EQ(container->scrollTop(), 0); -} - -TEST_F(SmoothScrollTest, BlockAndInlineSettings) { - v8::HandleScope HandleScope(v8::Isolate::GetCurrent()); - WebView().Resize(WebSize(800, 600)); - SimRequest request("https://example.com/test.html", "text/html"); - LoadURL("https://example.com/test.html"); - request.Complete( - "<div id='container' style='height: 2500px; width: 2500px;'>" - "<div id='content' style='height: 500px; width: 500px;" - "margin-left: 1000px; margin-right: 1000px; margin-top: 1000px;" - "margin-bottom: 1000px'></div></div>"); - - int content_height = 500; - int content_width = 500; - int window_height = 600; - int window_width = 800; - - Element* content = GetDocument().getElementById("content"); - ScrollIntoViewOptionsOrBoolean arg1, arg2, arg3, arg4; - ScrollIntoViewOptions options; - ASSERT_EQ(Window().scrollY(), 0); - - options.setBlock("nearest"); - options.setInlinePosition("nearest"); - arg1.setScrollIntoViewOptions(options); - content->scrollIntoView(arg1); - ASSERT_EQ(Window().scrollX(), - content->OffsetLeft() + content_width - window_width); - ASSERT_EQ(Window().scrollY(), - content->OffsetTop() + content_height - window_height); - - options.setBlock("start"); - options.setInlinePosition("start"); - arg2.setScrollIntoViewOptions(options); - content->scrollIntoView(arg2); - ASSERT_EQ(Window().scrollX(), content->OffsetLeft()); - ASSERT_EQ(Window().scrollY(), content->OffsetTop()); - - options.setBlock("center"); - options.setInlinePosition("center"); - arg3.setScrollIntoViewOptions(options); - content->scrollIntoView(arg3); - ASSERT_EQ(Window().scrollX(), - content->OffsetLeft() + (content_width - window_width) / 2); - ASSERT_EQ(Window().scrollY(), - content->OffsetTop() + (content_height - window_height) / 2); - - options.setBlock("end"); - options.setInlinePosition("end"); - arg4.setScrollIntoViewOptions(options); - content->scrollIntoView(arg4); - ASSERT_EQ(Window().scrollX(), - content->OffsetLeft() + content_width - window_width); - ASSERT_EQ(Window().scrollY(), - content->OffsetTop() + content_height - window_height); -} - -} // namespace - -} // namespace blink
diff --git a/third_party/WebKit/public/web/WebPageImportanceSignals.h b/third_party/WebKit/public/web/WebPageImportanceSignals.h index e9aab4b..f1983b9 100644 --- a/third_party/WebKit/public/web/WebPageImportanceSignals.h +++ b/third_party/WebKit/public/web/WebPageImportanceSignals.h
@@ -19,15 +19,15 @@ WebPageImportanceSignals() { Reset(); } bool HadFormInteraction() const { return had_form_interaction_; } - void SetHadFormInteraction(); + BLINK_EXPORT void SetHadFormInteraction(); bool IssuedNonGetFetchFromScript() const { return issued_non_get_fetch_from_script_; } - void SetIssuedNonGetFetchFromScript(); + BLINK_EXPORT void SetIssuedNonGetFetchFromScript(); BLINK_EXPORT void Reset(); #if BLINK_IMPLEMENTATION - void OnCommitLoad(); + BLINK_EXPORT void OnCommitLoad(); #endif void SetObserver(WebViewClient* observer) { observer_ = observer; }
diff --git a/third_party/polymer/README.chromium b/third_party/polymer/README.chromium index 1e601cd1..40a1a74 100644 --- a/third_party/polymer/README.chromium +++ b/third_party/polymer/README.chromium
@@ -1,7 +1,7 @@ Name: Polymer Short Name: polymer URL: http://www.polymer-project.org -Version: 1.5.2 +Version: 1.9.1 Revision: (see v1_0/components_summary.txt) License: BSD License File: LICENSE.polymer
diff --git a/third_party/polymer/v1_0/bower.json b/third_party/polymer/v1_0/bower.json index 9f3f0ec..6f6c80a 100644 --- a/third_party/polymer/v1_0/bower.json +++ b/third_party/polymer/v1_0/bower.json
@@ -60,7 +60,7 @@ "paper-toggle-button": "PolymerElements/paper-toggle-button#1.3.0", "paper-toolbar": "PolymerElements/paper-toolbar#1.1.6", "paper-tooltip": "PolymerElements/paper-tooltip#1.1.3", - "polymer": "Polymer/polymer#1.8.1", + "polymer": "Polymer/polymer#1.9.1", "web-animations-js": "web-animations/web-animations-js#2.2.2" } }
diff --git a/third_party/polymer/v1_0/components-chromium/polymer/bower.json b/third_party/polymer/v1_0/components-chromium/polymer/bower.json index 41962a4..c49ba078 100644 --- a/third_party/polymer/v1_0/components-chromium/polymer/bower.json +++ b/third_party/polymer/v1_0/components-chromium/polymer/bower.json
@@ -1,6 +1,6 @@ { "name": "polymer", - "version": "1.8.1", + "version": "1.9.1", "main": [ "polymer.html", "polymer-mini.html",
diff --git a/third_party/polymer/v1_0/components-chromium/polymer/polymer-extracted.js b/third_party/polymer/v1_0/components-chromium/polymer/polymer-extracted.js index 0a223a3..8558fbdc 100644 --- a/third_party/polymer/v1_0/components-chromium/polymer/polymer-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/polymer/polymer-extracted.js
@@ -241,65 +241,6 @@ } } }; -}());(function () { -function resolveCss(cssText, ownerDocument) { -return cssText.replace(CSS_URL_RX, function (m, pre, url, post) { -return pre + '\'' + resolve(url.replace(/["']/g, ''), ownerDocument) + '\'' + post; -}); -} -function resolveAttrs(element, ownerDocument) { -for (var name in URL_ATTRS) { -var a$ = URL_ATTRS[name]; -for (var i = 0, l = a$.length, a, at, v; i < l && (a = a$[i]); i++) { -if (name === '*' || element.localName === name) { -at = element.attributes[a]; -v = at && at.value; -if (v && v.search(BINDING_RX) < 0) { -at.value = a === 'style' ? resolveCss(v, ownerDocument) : resolve(v, ownerDocument); -} -} -} -} -} -function resolve(url, ownerDocument) { -if (url && ABS_URL.test(url)) { -return url; -} -var resolver = getUrlResolver(ownerDocument); -resolver.href = url; -return resolver.href || url; -} -var tempDoc; -var tempDocBase; -function resolveUrl(url, baseUri) { -if (!tempDoc) { -tempDoc = document.implementation.createHTMLDocument('temp'); -tempDocBase = tempDoc.createElement('base'); -tempDoc.head.appendChild(tempDocBase); -} -tempDocBase.href = baseUri; -return resolve(url, tempDoc); -} -function getUrlResolver(ownerDocument) { -return ownerDocument.body.__urlResolver || (ownerDocument.body.__urlResolver = ownerDocument.createElement('a')); -} -var CSS_URL_RX = /(url\()([^)]*)(\))/g; -var URL_ATTRS = { -'*': [ -'href', -'src', -'style', -'url' -], -form: ['action'] -}; -var ABS_URL = /(^\/)|(^#)|(^[\w-\d]*:)/; -var BINDING_RX = /\{\{|\[\[/; -Polymer.ResolveUrl = { -resolveCss: resolveCss, -resolveAttrs: resolveAttrs, -resolveUrl: resolveUrl -}; }());Polymer.Path = { root: function (path) { var dotIndex = path.indexOf('.'); @@ -2085,6 +2026,8 @@ } }, _afterClientsReady: function () { +this.importPath = this._importPath; +this.rootPath = Polymer.rootPath; this._executeStaticEffects(); this._applyConfig(this._config, this._aboveConfig); this._flushHandlers(); @@ -2423,13 +2366,7 @@ }); }());Polymer.Base._addFeature({ resolveUrl: function (url) { -var module = Polymer.DomModule.import(this.is); -var root = ''; -if (module) { -var assetPath = module.getAttribute('assetpath') || ''; -root = Polymer.ResolveUrl.resolveUrl(assetPath, module.ownerDocument.baseURI); -} -return Polymer.ResolveUrl.resolveUrl(url, root); +return Polymer.ResolveUrl.resolveUrl(url, this._importPath); } });Polymer.CssParse = function () { return { @@ -4754,9 +4691,17 @@ attached: function () { if (this.__isDetached) { this.__isDetached = false; -var parent = Polymer.dom(Polymer.dom(this).parentNode); +var refNode; +var parentNode = Polymer.dom(this).parentNode; +if (parentNode.localName == this.is) { +refNode = parentNode; +parentNode = Polymer.dom(parentNode).parentNode; +} else { +refNode = this; +} +var parent = Polymer.dom(parentNode); for (var i = 0; i < this._instances.length; i++) { -this._attachInstance(i, parent); +this._attachInstance(i, parent, refNode); } } }, @@ -5040,10 +4985,10 @@ return inst; } }, -_attachInstance: function (idx, parent) { +_attachInstance: function (idx, parent, refNode) { var inst = this._instances[idx]; if (!inst.isPlaceholder) { -parent.insertBefore(inst.root, this); +parent.insertBefore(inst.root, refNode); } }, _detachAndRemoveInstance: function (idx) { @@ -5076,6 +5021,12 @@ var beforeRow = this._instances[idx + 1]; var beforeNode = beforeRow && !beforeRow.isPlaceholder ? beforeRow._children[0] : this; var parentNode = Polymer.dom(this).parentNode; +if (parentNode.localName == this.is) { +if (beforeNode == this) { +beforeNode = parentNode; +} +parentNode = Polymer.dom(parentNode).parentNode; +} Polymer.dom(parentNode).insertBefore(inst.root, beforeNode); this._instances[idx] = inst; return inst; @@ -5271,7 +5222,11 @@ this._debounceTemplate(this._render); }, detached: function () { -if (!this.parentNode || this.parentNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE && (!Polymer.Settings.hasShadow || !(this.parentNode instanceof ShadowRoot))) { +var parentNode = this.parentNode; +if (parentNode && parentNode.localName == this.is) { +parentNode = Polymer.dom(parentNode).parentNode; +} +if (!parentNode || parentNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE && (!Polymer.Settings.hasShadow || !(parentNode instanceof ShadowRoot))) { this._teardownInstance(); } }, @@ -5304,20 +5259,26 @@ } }, _ensureInstance: function () { +var refNode; var parentNode = Polymer.dom(this).parentNode; +if (parentNode && parentNode.localName == this.is) { +refNode = parentNode; +parentNode = Polymer.dom(parentNode).parentNode; +} else { +refNode = this; +} if (parentNode) { -var parent = Polymer.dom(parentNode); if (!this._instance) { this._instance = this.stamp(); var root = this._instance.root; -parent.insertBefore(root, this); +Polymer.dom(parentNode).insertBefore(root, refNode); } else { var c$ = this._instance._children; if (c$ && c$.length) { -var lastChild = Polymer.dom(this).previousSibling; +var lastChild = Polymer.dom(refNode).previousSibling; if (lastChild !== c$[c$.length - 1]) { for (var i = 0, n; i < c$.length && (n = c$[i]); i++) { -parent.insertBefore(n, this); +Polymer.dom(parentNode).insertBefore(n, refNode); } } } @@ -5382,8 +5343,15 @@ this._prepConstructor(); }, _insertChildren: function () { -var parentDom = Polymer.dom(Polymer.dom(this).parentNode); -parentDom.insertBefore(this.root, this); +var refNode; +var parentNode = Polymer.dom(this).parentNode; +if (parentNode.localName == this.is) { +refNode = parentNode; +parentNode = Polymer.dom(parentNode).parentNode; +} else { +refNode = this; +} +Polymer.dom(parentNode).insertBefore(this.root, refNode); }, _removeChildren: function () { if (this._children) {
diff --git a/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js b/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js index 40fa73f..b3e3aa0 100644 --- a/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/polymer/polymer-micro-extracted.js
@@ -782,7 +782,7 @@ return value != null ? value : undefined; } } -});Polymer.version = "1.8.1";Polymer.Base._addFeature({ +});Polymer.version = "1.9.1";Polymer.Base._addFeature({ _registerFeatures: function () { this._prepIs(); this._prepBehaviors();
diff --git a/third_party/polymer/v1_0/components-chromium/polymer/polymer-mini-extracted.js b/third_party/polymer/v1_0/components-chromium/polymer/polymer-mini-extracted.js index 143aa7a3..1d21ad1 100644 --- a/third_party/polymer/v1_0/components-chromium/polymer/polymer-mini-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/polymer/polymer-mini-extracted.js
@@ -1,7 +1,80 @@ -Polymer.Base._addFeature({ +(function () { +function resolveCss(cssText, ownerDocument) { +return cssText.replace(CSS_URL_RX, function (m, pre, url, post) { +return pre + '\'' + resolve(url.replace(/["']/g, ''), ownerDocument) + '\'' + post; +}); +} +function resolveAttrs(element, ownerDocument) { +for (var name in URL_ATTRS) { +var a$ = URL_ATTRS[name]; +for (var i = 0, l = a$.length, a, at, v; i < l && (a = a$[i]); i++) { +if (name === '*' || element.localName === name) { +at = element.attributes[a]; +v = at && at.value; +if (v && v.search(BINDING_RX) < 0) { +at.value = a === 'style' ? resolveCss(v, ownerDocument) : resolve(v, ownerDocument); +} +} +} +} +} +function resolve(url, ownerDocument) { +if (url && ABS_URL.test(url)) { +return url; +} +var resolver = getUrlResolver(ownerDocument); +resolver.href = url; +return resolver.href || url; +} +var tempDoc; +var tempDocBase; +function resolveUrl(url, baseUri) { +if (!tempDoc) { +tempDoc = document.implementation.createHTMLDocument('temp'); +tempDocBase = tempDoc.createElement('base'); +tempDoc.head.appendChild(tempDocBase); +} +tempDocBase.href = baseUri; +return resolve(url, tempDoc); +} +function getUrlResolver(ownerDocument) { +return ownerDocument.body.__urlResolver || (ownerDocument.body.__urlResolver = ownerDocument.createElement('a')); +} +function pathFromUrl(url) { +return url.substring(0, url.lastIndexOf('/') + 1); +} +var CSS_URL_RX = /(url\()([^)]*)(\))/g; +var URL_ATTRS = { +'*': [ +'href', +'src', +'style', +'url' +], +form: ['action'] +}; +var ABS_URL = /(^\/)|(^#)|(^[\w-\d]*:)/; +var BINDING_RX = /\{\{|\[\[/; +Polymer.ResolveUrl = { +resolveCss: resolveCss, +resolveAttrs: resolveAttrs, +resolveUrl: resolveUrl, +pathFromUrl: pathFromUrl +}; +Polymer.rootPath = Polymer.Settings.rootPath || pathFromUrl(document.baseURI || window.location.href); +}());Polymer.Base._addFeature({ _prepTemplate: function () { +var module; if (this._template === undefined) { -this._template = Polymer.DomModule.import(this.is, 'template'); +module = Polymer.DomModule.import(this.is); +this._template = module && module.querySelector('template'); +} +if (module) { +var assetPath = module.getAttribute('assetpath') || ''; +var importURL = Polymer.ResolveUrl.resolveUrl(assetPath, module.ownerDocument.baseURI); +this._importPath = Polymer.ResolveUrl.pathFromUrl(importURL); +} else { +this._importPath = ''; } if (this._template && this._template.hasAttribute('is')) { this._warn(this._logf('_prepTemplate', 'top-level Polymer template ' + 'must not be a type-extension, found', this._template, 'Move inside simple <template>.'));
diff --git a/third_party/polymer/v1_0/components_summary.txt b/third_party/polymer/v1_0/components_summary.txt index 4ab9fb5..297737c 100644 --- a/third_party/polymer/v1_0/components_summary.txt +++ b/third_party/polymer/v1_0/components_summary.txt
@@ -348,7 +348,7 @@ Name: polymer Repository: https://github.com/Polymer/polymer.git -Tree: v1.8.1 -Revision: d89302fc3755b04ad4171f431e719a08b5b816f3 -Tree link: https://github.com/Polymer/polymer/tree/v1.8.1 +Tree: v1.9.1 +Revision: 9f3381a3d92c62d64cbf0296f7c967898a30d63d +Tree link: https://github.com/Polymer/polymer/tree/v1.9.1
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 7d0095a..2013e30f 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -137,10 +137,11 @@ # if CrWinClang is modified, please update CrWinClangGoma in the same way. 'CrWinClang': 'clang_official_release_bot_minimal_symbols_x86', - 'CrWinClang(dbg)': 'clang_debug_bot_minimal_symbols_x86', + 'CrWinClang(shared)': 'clang_minimal_symbols_shared_release_bot_x86', 'CrWinClang64': 'clang_official_release_bot_minimal_symbols', 'CrWinClang64(dll)': 'clang_shared_release_bot', + 'CrWinClang64(dbg)': 'win_clang_debug_bot', 'CrWinClangGoma': 'clang_official_optimize_release_bot_minimal_symbols_x86', 'CrWinGoma': 'release_bot_x86', 'CrWinGoma(dll)': 'shared_release_bot_x86', @@ -170,8 +171,6 @@ 'CrWinAsan': 'asan_clang_fuzzer_static_v8_heap_x86_full_symbols_release', 'CrWinAsan(dll)': 'asan_clang_shared_v8_heap_x86_full_symbols_release', 'CrWinAsanCov': 'asan_clang_edge_fuzzer_static_v8_heap_x86_full_symbols_release', - 'CrWinClang(shared)': 'clang_minimal_symbols_shared_release_bot_x86', - 'CrWinClang64(dbg)': 'win_clang_debug_bot', 'CrWinClangLLD': 'clang_tot_official_static_use_lld_x86', 'CrWinClangLLD64': 'clang_tot_shared_release_use_lld', 'CrWinClngLLD64dbg': 'clang_tot_full_symbols_shared_debug_use_lld', @@ -1040,7 +1039,10 @@ ], 'clang_debug_bot_minimal_symbols_x86': [ - 'clang', 'debug_bot', 'minimal_symbols', 'x86', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'debug_bot', 'minimal_symbols', 'x86', ], 'clang_release_bot_minimal_symbols_x86': [ @@ -1048,15 +1050,24 @@ ], 'clang_minimal_symbols_shared_release_bot_x86': [ - 'clang', 'minimal_symbols', 'shared_release_bot', 'x86', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'minimal_symbols', 'shared_release_bot', 'x86', ], 'clang_official_release_bot_minimal_symbols': [ - 'clang', 'official', 'release_bot', 'minimal_symbols', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'official', 'release_bot', 'minimal_symbols', ], 'clang_official_release_bot_minimal_symbols_x86': [ - 'clang', 'official', 'release_bot', 'minimal_symbols', 'x86', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'official', 'release_bot', 'minimal_symbols', 'x86', ], 'clang_official_optimize_release_bot_minimal_symbols_x86': [ @@ -1072,7 +1083,10 @@ ], 'clang_shared_release_bot': [ - 'clang', 'shared_release_bot', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'shared_release_bot', ], 'clang_tot_asan_lsan_static_release': [ @@ -1473,7 +1487,10 @@ ], 'win_clang_debug_bot': [ - 'clang', 'debug_bot', 'minimal_symbols', + # Now that the default win bots use clang, use a "clang" bot to make sure + # things stay compilable with msvc. TODO(thakis): Having a "clang" bot + # check that is very confusing, so rename the bot to "msvc". + 'no_clang', 'debug_bot', 'minimal_symbols', ], 'windows_analyze': [ @@ -1563,11 +1580,11 @@ }, 'chrome_pgo_phase_1': { - 'gn_args': 'chrome_pgo_phase=1', + 'gn_args': 'chrome_pgo_phase=1 is_clang=false', }, 'chrome_pgo_phase_2': { - 'gn_args': 'chrome_pgo_phase=2', + 'gn_args': 'chrome_pgo_phase=2 is_clang=false', }, 'chrome_with_codecs': { @@ -1595,6 +1612,10 @@ 'gn_args': 'is_clang=true', }, + 'no_clang': { + 'gn_args': 'is_clang=false', + }, + 'cronet': { 'gn_args': ('disable_file_support=true disable_ftp_support=true ' 'enable_websockets=false use_platform_icu_alternatives=true ' @@ -1839,7 +1860,8 @@ }, 'syzyasan': { - 'gn_args': 'is_syzyasan=true', + # TODO(thakis): Figure out SyzyASan + clang story. + 'gn_args': 'is_syzyasan=true is_clang=false', }, 'thin_lto': {