diff --git a/DEPS b/DEPS index 952c04ab..407780c 100644 --- a/DEPS +++ b/DEPS
@@ -44,7 +44,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'dc72ab69bd8e972cbbc797e7edeb01936da9ec14', + 'v8_revision': '749daeaba307ba87f63f603228f73a12733ab07c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other.
diff --git a/base/memory/shared_memory_tracker.cc b/base/memory/shared_memory_tracker.cc index cb0bdcb..ad97519 100644 --- a/base/memory/shared_memory_tracker.cc +++ b/base/memory/shared_memory_tracker.cc
@@ -12,6 +12,14 @@ namespace base { +namespace { + +std::string GetDumpNameForTracing(const UnguessableToken& id) { + return "shared_memory/" + id.ToString(); +} + +} // namespace + // static SharedMemoryTracker* SharedMemoryTracker::GetInstance() { static SharedMemoryTracker* instance = new SharedMemoryTracker; @@ -19,14 +27,16 @@ } // static -std::string SharedMemoryTracker::GetDumpNameForTracing( +trace_event::MemoryAllocatorDumpGuid SharedMemoryTracker::GetDumpIdForTracing( const UnguessableToken& id) { - return "shared_memory/" + id.ToString(); + std::string dump_name = GetDumpNameForTracing(id); + return trace_event::MemoryAllocatorDump::GetDumpIdFromName( + std::move(dump_name)); } // static trace_event::MemoryAllocatorDumpGuid -SharedMemoryTracker::GetGlobalDumpGUIDForTracing(const UnguessableToken& id) { +SharedMemoryTracker::GetGlobalDumpIdForTracing(const UnguessableToken& id) { std::string dump_name = GetDumpNameForTracing(id); return trace_event::MemoryAllocatorDumpGuid(dump_name); } @@ -71,11 +81,6 @@ dump_name = GetDumpNameForTracing(memory_guid); } // Discard duplicates that might be seen in single-process mode. - // TODO(hajimehoshi): This logic depends on the old fact that dumps were not - // created nowhere but SharedMemoryTracker::OnMemoryDump. Now this is not - // true since ProcessMemoryDump::CreateSharedMemoryOwnershipEdge creates - // dumps, and the logic needs to be fixed. See the discussion at - // https://chromium-review.googlesource.com/c/535378. if (pmd->GetAllocatorDump(dump_name)) continue; trace_event::MemoryAllocatorDump* local_dump = @@ -84,7 +89,7 @@ // Fix this to record resident size. local_dump->AddScalar(trace_event::MemoryAllocatorDump::kNameSize, trace_event::MemoryAllocatorDump::kUnitsBytes, size); - auto global_dump_guid = GetGlobalDumpGUIDForTracing(memory_guid); + auto global_dump_guid = GetGlobalDumpIdForTracing(memory_guid); trace_event::MemoryAllocatorDump* global_dump = pmd->CreateSharedGlobalAllocatorDump(global_dump_guid); global_dump->AddScalar(trace_event::MemoryAllocatorDump::kNameSize,
diff --git a/base/memory/shared_memory_tracker.h b/base/memory/shared_memory_tracker.h index 3f8ba5f2..434a5802 100644 --- a/base/memory/shared_memory_tracker.h +++ b/base/memory/shared_memory_tracker.h
@@ -24,9 +24,10 @@ // Returns a singleton instance. static SharedMemoryTracker* GetInstance(); - static std::string GetDumpNameForTracing(const UnguessableToken& id); + static trace_event::MemoryAllocatorDumpGuid GetDumpIdForTracing( + const UnguessableToken& id); - static trace_event::MemoryAllocatorDumpGuid GetGlobalDumpGUIDForTracing( + static trace_event::MemoryAllocatorDumpGuid GetGlobalDumpIdForTracing( const UnguessableToken& id); // Records shared memory usage on mapping.
diff --git a/base/trace_event/memory_allocator_dump.cc b/base/trace_event/memory_allocator_dump.cc index 2692521c..73fbbaff 100644 --- a/base/trace_event/memory_allocator_dump.cc +++ b/base/trace_event/memory_allocator_dump.cc
@@ -22,6 +22,13 @@ const char MemoryAllocatorDump::kUnitsBytes[] = "bytes"; const char MemoryAllocatorDump::kUnitsObjects[] = "objects"; +// static +MemoryAllocatorDumpGuid MemoryAllocatorDump::GetDumpIdFromName( + const std::string& absolute_name) { + return MemoryAllocatorDumpGuid(StringPrintf( + "%d:%s", TraceLog::GetInstance()->process_id(), absolute_name.c_str())); +} + MemoryAllocatorDump::MemoryAllocatorDump(const std::string& absolute_name, ProcessMemoryDump* process_memory_dump, const MemoryAllocatorDumpGuid& guid) @@ -47,10 +54,7 @@ ProcessMemoryDump* process_memory_dump) : MemoryAllocatorDump(absolute_name, process_memory_dump, - MemoryAllocatorDumpGuid(StringPrintf( - "%d:%s", - TraceLog::GetInstance()->process_id(), - absolute_name.c_str()))) { + GetDumpIdFromName(absolute_name)) { string_conversion_buffer_.reserve(16); }
diff --git a/base/trace_event/memory_allocator_dump.h b/base/trace_event/memory_allocator_dump.h index 99ff114..6764070 100644 --- a/base/trace_event/memory_allocator_dump.h +++ b/base/trace_event/memory_allocator_dump.h
@@ -33,6 +33,9 @@ WEAK = 1 << 0, }; + static MemoryAllocatorDumpGuid GetDumpIdFromName( + const std::string& absolute_name); + // MemoryAllocatorDump is owned by ProcessMemoryDump. MemoryAllocatorDump(const std::string& absolute_name, ProcessMemoryDump* process_memory_dump,
diff --git a/base/trace_event/memory_allocator_dump_unittest.cc b/base/trace_event/memory_allocator_dump_unittest.cc index d727ceb7..ea187986 100644 --- a/base/trace_event/memory_allocator_dump_unittest.cc +++ b/base/trace_event/memory_allocator_dump_unittest.cc
@@ -117,6 +117,7 @@ ASSERT_FALSE(guid_bar.empty()); ASSERT_FALSE(guid_bar.ToString().empty()); ASSERT_EQ(guid_bar, mad->guid()); + ASSERT_EQ(guid_bar, MemoryAllocatorDump::GetDumpIdFromName("bar")); mad.reset(new MemoryAllocatorDump("bar", nullptr)); const MemoryAllocatorDumpGuid guid_bar_2 = mad->guid();
diff --git a/base/trace_event/process_memory_dump.cc b/base/trace_event/process_memory_dump.cc index fe29358..7f700f23 100644 --- a/base/trace_event/process_memory_dump.cc +++ b/base/trace_event/process_memory_dump.cc
@@ -416,14 +416,13 @@ // The guid of the local dump created by SharedMemoryTracker for the memory // segment. - auto local_shm_dump_name = - SharedMemoryTracker::GetDumpNameForTracing(shared_memory_guid); - auto local_shm_guid = GetOrCreateAllocatorDump(local_shm_dump_name)->guid(); + auto local_shm_guid = + SharedMemoryTracker::GetDumpIdForTracing(shared_memory_guid); // The dump guid of the global dump created by the tracker for the memory // segment. auto global_shm_guid = - SharedMemoryTracker::GetGlobalDumpGUIDForTracing(shared_memory_guid); + SharedMemoryTracker::GetGlobalDumpIdForTracing(shared_memory_guid); // Create an edge between local dump of the client and the local dump of the // SharedMemoryTracker. Do not need to create the dumps here since the
diff --git a/base/trace_event/process_memory_dump_unittest.cc b/base/trace_event/process_memory_dump_unittest.cc index 151fe5b..1c1f3bf 100644 --- a/base/trace_event/process_memory_dump_unittest.cc +++ b/base/trace_event/process_memory_dump_unittest.cc
@@ -315,7 +315,7 @@ MemoryAllocatorDumpGuid client_global_guid1(1); auto shm_token1 = UnguessableToken::Create(); MemoryAllocatorDumpGuid shm_global_guid1 = - SharedMemoryTracker::GetGlobalDumpGUIDForTracing(shm_token1); + SharedMemoryTracker::GetGlobalDumpIdForTracing(shm_token1); pmd->AddOverridableOwnershipEdge(shm_dump1->guid(), shm_global_guid1, 0 /* importance */); @@ -343,12 +343,10 @@ auto* client_dump2 = pmd->CreateAllocatorDump("discardable/segment2"); MemoryAllocatorDumpGuid client_global_guid2(2); auto shm_token2 = UnguessableToken::Create(); - auto shm_local_dump_name2 = - SharedMemoryTracker::GetDumpNameForTracing(shm_token2); MemoryAllocatorDumpGuid shm_local_guid2 = - pmd->GetOrCreateAllocatorDump(shm_local_dump_name2)->guid(); + SharedMemoryTracker::GetDumpIdForTracing(shm_token2); MemoryAllocatorDumpGuid shm_global_guid2 = - SharedMemoryTracker::GetGlobalDumpGUIDForTracing(shm_token2); + SharedMemoryTracker::GetGlobalDumpIdForTracing(shm_token2); pmd->AddOverridableOwnershipEdge(shm_local_guid2, shm_global_guid2, 0 /* importance */);
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni index 6340d50..5429938 100644 --- a/build/config/ios/rules.gni +++ b/build/config/ios/rules.gni
@@ -345,6 +345,7 @@ "executable_name", "output_name", "visibility", + "testonly", ]) } } @@ -1390,10 +1391,13 @@ source_set(_arch_loadable_module_source) { forward_variables_from(invoker, [ "deps" ]) + + testonly = true visibility = [ ":$_arch_loadable_module_target" ] } loadable_module(_arch_loadable_module_target) { + testonly = true visibility = [ ":$_lipo_loadable_module_target($default_toolchain)" ] if (current_toolchain != default_toolchain) { visibility += [ ":$_target_name" ] @@ -1416,6 +1420,7 @@ # arch-specific binary, thus the default target is just a group(). group(_target_name) { forward_variables_from(invoker, [ "visibility" ]) + testonly = true public_deps = [ ":$_arch_loadable_module_target", @@ -1430,6 +1435,7 @@ } ios_info_plist(_info_plist_target) { + testonly = true visibility = [ ":$_info_plist_bundle" ] info_plist = "//build/config/ios/Module-Info.plist" @@ -1448,6 +1454,7 @@ } bundle_data(_info_plist_bundle) { + testonly = true visibility = [ ":$_target_name" ] public_deps = [
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader.cc b/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader.cc index 7ba4f61f..b31a230 100644 --- a/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader.cc +++ b/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader.cc
@@ -8,7 +8,7 @@ #include <unistd.h> #include "base/files/file.h" -#include "base/threading/sequenced_worker_pool.h" +#include "base/task_scheduler/post_task.h" #include "base/threading/thread_restrictions.h" #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner_util.h" #include "content/public/browser/browser_thread.h" @@ -41,10 +41,8 @@ const GURL& arc_url, int64_t offset) : arc_url_(arc_url), offset_(offset), weak_ptr_factory_(this) { - auto* blocking_pool = content::BrowserThread::GetBlockingPool(); - task_runner_ = blocking_pool->GetSequencedTaskRunnerWithShutdownBehavior( - blocking_pool->GetSequenceToken(), - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); + task_runner_ = base::CreateSequencedTaskRunnerWithTraits( + {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}); } ArcContentFileSystemFileStreamReader::~ArcContentFileSystemFileStreamReader() {
diff --git a/chrome/browser/installable/installable_manager.cc b/chrome/browser/installable/installable_manager.cc index 5bfa16bb..189a4fba 100644 --- a/chrome/browser/installable/installable_manager.cc +++ b/chrome/browser/installable/installable_manager.cc
@@ -85,7 +85,6 @@ struct InstallableManager::ServiceWorkerProperty { InstallableStatusCode error = NO_ERROR_DETECTED; bool has_worker = false; - bool is_waiting = false; bool fetched = false; }; @@ -296,10 +295,6 @@ return worker_->error; } -bool InstallableManager::worker_waiting() const { - return worker_->is_waiting; -} - InstallableStatusCode InstallableManager::icon_error( const IconParams& icon_params) { return icons_[icon_params].error; @@ -337,6 +332,7 @@ // Prevent any outstanding callbacks to or from this object from being called. weak_factory_.InvalidateWeakPtrs(); tasks_.clear(); + paused_tasks_.clear(); icons_.clear(); // We may have reset prior to completion, in which case |menu_open_count_| or @@ -548,13 +544,16 @@ worker_->error = NOT_OFFLINE_CAPABLE; break; case content::ServiceWorkerCapability::NO_SERVICE_WORKER: - InstallableParams& params = tasks_[0].first; + Task& task = tasks_[0]; + InstallableParams& params = task.first; if (params.wait_for_worker) { // Wait for ServiceWorkerContextObserver::OnRegistrationStored. Set the // param |wait_for_worker| to false so we only wait once per task. params.wait_for_worker = false; - worker_->is_waiting = true; OnWaitingForServiceWorker(); + paused_tasks_.push_back(task); + tasks_.erase(tasks_.begin()); + StartNextTask(); return; } worker_->has_worker = false; @@ -614,19 +613,27 @@ } void InstallableManager::OnRegistrationStored(const GURL& pattern) { - // If we aren't currently waiting, either: + // If we don't have any paused tasks, that means: // a) we've already failed the check, or // b) we haven't yet called CheckHasServiceWorker. // Otherwise if the scope doesn't match we keep waiting. - if (!worker_->is_waiting || !content::ServiceWorkerContext::ScopeMatches( - pattern, manifest().start_url)) { + if (paused_tasks_.empty() || !content::ServiceWorkerContext::ScopeMatches( + pattern, manifest().start_url)) { return; } - // This will call CheckHasServiceWorker to check whether the service worker - // controls the start_url and if it has a fetch handler. - worker_->is_waiting = false; - WorkOnTask(); + // Unpause the paused tasks. + for (const auto& task : paused_tasks_) + tasks_.push_back(task); + paused_tasks_.clear(); + + // Start the pipeline again if it is not running. This will call + // CheckHasServiceWorker to check if the SW has a fetch handler. Otherwise, + // adding the tasks to the end of the active queue is sufficient. + if (!is_active_) { + is_active_ = true; + StartNextTask(); + } } void InstallableManager::DidFinishNavigation(
diff --git a/chrome/browser/installable/installable_manager.h b/chrome/browser/installable/installable_manager.h index 1a53d37b..0a1c51c 100644 --- a/chrome/browser/installable/installable_manager.h +++ b/chrome/browser/installable/installable_manager.h
@@ -194,7 +194,6 @@ InstallableStatusCode valid_manifest_error() const; void set_valid_manifest_error(InstallableStatusCode error_code); InstallableStatusCode worker_error() const; - bool worker_waiting() const; InstallableStatusCode icon_error(const IconParams& icon_params); GURL& icon_url(const IconParams& icon_params); const SkBitmap* icon(const IconParams& icon); @@ -249,6 +248,9 @@ // The list of <params, callback> pairs that have come from a call to GetData. std::vector<Task> tasks_; + // Tasks which are waiting indefinitely for a service worker to be detected. + std::vector<Task> paused_tasks_; + // Installable properties cached on this object. std::unique_ptr<ManifestProperty> manifest_; std::unique_ptr<ValidManifestProperty> valid_manifest_;
diff --git a/chrome/browser/installable/installable_manager_browsertest.cc b/chrome/browser/installable/installable_manager_browsertest.cc index d7c9b70..f9e5bf92 100644 --- a/chrome/browser/installable/installable_manager_browsertest.cc +++ b/chrome/browser/installable/installable_manager_browsertest.cc
@@ -708,18 +708,21 @@ auto manager = base::MakeUnique<LazyWorkerInstallableManager>( web_contents, sw_run_loop.QuitClosure()); - // Load a URL with no service worker. - GURL test_url = embedded_test_server()->GetURL( - "/banners/manifest_no_service_worker.html"); - ui_test_utils::NavigateToURL(browser(), test_url); + { + // Load a URL with no service worker. + GURL test_url = embedded_test_server()->GetURL( + "/banners/manifest_no_service_worker.html"); + ui_test_utils::NavigateToURL(browser(), test_url); - // Kick off fetching the data. This should block on waiting for a worker. - manager->GetData(GetWebAppParams(), - base::Bind(&CallbackTester::OnDidFinishInstallableCheck, - base::Unretained(tester.get()))); - sw_run_loop.Run(); + // Kick off fetching the data. This should block on waiting for a worker. + manager->GetData(GetWebAppParams(), + base::Bind(&CallbackTester::OnDidFinishInstallableCheck, + base::Unretained(tester.get()))); + sw_run_loop.Run(); + } // We should now be waiting for the service worker. + EXPECT_TRUE(tester->manifest().IsEmpty()); EXPECT_FALSE(manager->manifest().IsEmpty()); EXPECT_FALSE(manager->manifest_url().is_empty()); EXPECT_FALSE(manager->is_installable()); @@ -730,8 +733,29 @@ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); - EXPECT_TRUE(manager->worker_waiting()); - EXPECT_FALSE(manager->tasks_.empty()); + EXPECT_TRUE(manager->tasks_.empty()); + EXPECT_FALSE(manager->paused_tasks_.empty()); + + { + // Fetching just the manifest and icons should not hang while the other call + // is waiting for a worker. + base::RunLoop run_loop; + std::unique_ptr<CallbackTester> nested_tester( + new CallbackTester(run_loop.QuitClosure())); + manager->GetData(GetPrimaryIconParams(), + base::Bind(&CallbackTester::OnDidFinishInstallableCheck, + base::Unretained(nested_tester.get()))); + run_loop.Run(); + + EXPECT_FALSE(nested_tester->manifest().IsEmpty()); + EXPECT_FALSE(nested_tester->manifest_url().is_empty()); + EXPECT_FALSE(nested_tester->primary_icon_url().is_empty()); + EXPECT_NE(nullptr, nested_tester->primary_icon()); + EXPECT_FALSE(nested_tester->is_installable()); + EXPECT_TRUE(nested_tester->badge_icon_url().is_empty()); + EXPECT_EQ(nullptr, nested_tester->badge_icon()); + EXPECT_EQ(NO_ERROR_DETECTED, nested_tester->error_code()); + } // Load the service worker. EXPECT_TRUE(content::ExecuteScript( @@ -761,8 +785,8 @@ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); - EXPECT_FALSE(manager->worker_waiting()); EXPECT_TRUE(manager->tasks_.empty()); + EXPECT_TRUE(manager->paused_tasks_.empty()); } IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, @@ -788,8 +812,8 @@ sw_run_loop.Run(); // We should now be waiting for the service worker. - EXPECT_TRUE(manager->worker_waiting()); - EXPECT_FALSE(manager->tasks_.empty()); + EXPECT_TRUE(manager->tasks_.empty()); + EXPECT_FALSE(manager->paused_tasks_.empty()); // Load the service worker with no fetch handler. EXPECT_TRUE(content::ExecuteScript(web_contents, @@ -806,7 +830,6 @@ EXPECT_TRUE(tester->badge_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->badge_icon()); EXPECT_EQ(NOT_OFFLINE_CAPABLE, tester->error_code()); - EXPECT_FALSE(manager->worker_waiting()); EXPECT_EQ(manager->page_status_, InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); }
diff --git a/chrome/browser/net/predictor.cc b/chrome/browser/net/predictor.cc index 0f7a3d1..c1dc2d12 100644 --- a/chrome/browser/net/predictor.cc +++ b/chrome/browser/net/predictor.cc
@@ -27,7 +27,9 @@ #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" +#include "base/trace_event/trace_event.h" #include "base/values.h" +#include "build/build_config.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/browser/profiles/profile_io_data.h" @@ -60,8 +62,49 @@ const base::Feature kNetworkPrediction{"NetworkPrediction", base::FEATURE_ENABLED_BY_DEFAULT}; +#if defined(OS_ANDROID) +// Disabled on Android, as there are no "pinned tabs", meaning that a startup +// is unlikely to request the same URL, and hence to resolve the same domains +// as the previous one. +constexpr bool kInitialDnsPrefetchListEnabled = false; +#else +constexpr bool kInitialDnsPrefetchListEnabled = true; +#endif // defined(OS_ANDROID) + } // namespace +// The InitialObserver monitors navigations made by the network stack. This +// is only used to identify startup time resolutions (for re-resolution +// during our next process startup). +// TODO(jar): Consider preconnecting at startup, which may be faster than +// waiting for render process to start and request a connection. +class InitialObserver { + public: + InitialObserver(); + ~InitialObserver(); + // Recording of when we observed each navigation. + typedef std::map<GURL, base::TimeTicks> FirstNavigations; + + // Potentially add a new URL to our startup list. + void Append(const GURL& url, Predictor* predictor); + + // Get an HTML version of our current planned first_navigations_. + void GetFirstResolutionsHtml(std::string* output); + + // Persist the current first_navigations_ for storage in a list. + void GetInitialDnsResolutionList(base::ListValue* startup_list); + + // Discards all initial loading history. + void DiscardInitialNavigationHistory() { first_navigations_.clear(); } + + private: + // List of the first N URL resolutions observed in this run. + FirstNavigations first_navigations_; + + // The number of URLs we'll save for pre-resolving at next startup. + static const size_t kStartupResolutionCount = 10; +}; + // static const int Predictor::kPredictorReferrerVersion = 2; const double Predictor::kPreconnectWorthyExpectedValue = 0.8; @@ -506,7 +549,7 @@ void Predictor::GetHtmlInfo(std::string* output) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (initial_observer_.get()) + if (kInitialDnsPrefetchListEnabled && initial_observer_) initial_observer_->GetFirstResolutionsHtml(output); // Show list of subresource predictions and stats. GetHtmlReferrerLists(output); @@ -587,7 +630,7 @@ void Predictor::DiscardInitialNavigationHistory() { DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (initial_observer_.get()) + if (kInitialDnsPrefetchListEnabled && initial_observer_) initial_observer_->DiscardInitialNavigationHistory(); } @@ -597,9 +640,11 @@ IOThread* io_thread, ProfileIOData* profile_io_data) { DCHECK_CURRENTLY_ON(BrowserThread::IO); + TRACE_EVENT0("net", "Predictor::FinalizeInitializationOnIOThread"); profile_io_data_ = profile_io_data; - initial_observer_.reset(new InitialObserver()); + if (kInitialDnsPrefetchListEnabled) + initial_observer_ = base::MakeUnique<InitialObserver>(); net::URLRequestContext* context = url_request_context_getter_->GetURLRequestContext(); @@ -612,7 +657,8 @@ io_weak_factory_.reset(new base::WeakPtrFactory<Predictor>(this)); // Prefetch these hostnames on startup. - DnsPrefetchMotivatedList(startup_urls, UrlInfo::STARTUP_LIST_MOTIVATED); + if (kInitialDnsPrefetchListEnabled) + DnsPrefetchMotivatedList(startup_urls, UrlInfo::STARTUP_LIST_MOTIVATED); DeserializeReferrers(*referral_list); @@ -628,8 +674,8 @@ void Predictor::LearnAboutInitialNavigation(const GURL& url) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (!PredictorEnabled() || nullptr == initial_observer_.get() || - !CanPreresolveAndPreconnect()) { + if (!PredictorEnabled() || !kInitialDnsPrefetchListEnabled || + !initial_observer_ || !CanPreresolveAndPreconnect()) { return; } initial_observer_->Append(url, this); @@ -683,8 +729,8 @@ if (!CanPreresolveAndPreconnect()) return; - std::unique_ptr<base::ListValue> startup_list(new base::ListValue); - std::unique_ptr<base::ListValue> referral_list(new base::ListValue); + auto startup_list = base::MakeUnique<base::ListValue>(); + auto referral_list = base::MakeUnique<base::ListValue>(); // Get raw pointers to pass to the first task. Ownership of the unique_ptrs // will be passed to the reply task. @@ -708,13 +754,16 @@ std::unique_ptr<base::ListValue> referral_list) { DCHECK_CURRENTLY_ON(BrowserThread::UI); user_prefs_->Set(prefs::kDnsPrefetchingStartupList, *startup_list); + + // May be empty if kInitialDnsPrefetchListEnabled is false. Still update the + // prefs to clear the state. user_prefs_->Set(prefs::kDnsPrefetchingHostReferralList, *referral_list); } void Predictor::WriteDnsPrefetchState(base::ListValue* startup_list, base::ListValue* referral_list) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (initial_observer_.get()) + if (kInitialDnsPrefetchListEnabled && initial_observer_) initial_observer_->GetInitialDnsResolutionList(startup_list); SerializeReferrers(referral_list); @@ -1107,14 +1156,11 @@ //----------------------------------------------------------------------------- // Member definitions for InitialObserver class. -Predictor::InitialObserver::InitialObserver() { -} +InitialObserver::InitialObserver() = default; -Predictor::InitialObserver::~InitialObserver() { -} +InitialObserver::~InitialObserver() = default; -void Predictor::InitialObserver::Append(const GURL& url, - Predictor* predictor) { +void InitialObserver::Append(const GURL& url, Predictor* predictor) { DCHECK_CURRENTLY_ON(BrowserThread::IO); if (kStartupResolutionCount <= first_navigations_.size()) @@ -1126,38 +1172,32 @@ first_navigations_[url] = base::TimeTicks::Now(); } -void Predictor::InitialObserver::GetInitialDnsResolutionList( +void InitialObserver::GetInitialDnsResolutionList( base::ListValue* startup_list) { DCHECK_CURRENTLY_ON(BrowserThread::IO); DCHECK(startup_list); DCHECK(startup_list->empty()); DCHECK_EQ(0u, startup_list->GetSize()); startup_list->AppendInteger(kPredictorStartupFormatVersion); - for (FirstNavigations::iterator it = first_navigations_.begin(); - it != first_navigations_.end(); - ++it) { - DCHECK(it->first == Predictor::CanonicalizeUrl(it->first)); - startup_list->AppendString(it->first.spec()); + for (const auto& url_time : first_navigations_) { + DCHECK(url_time.first == Predictor::CanonicalizeUrl(url_time.first)); + startup_list->AppendString(url_time.first.spec()); } } -void Predictor::InitialObserver::GetFirstResolutionsHtml( - std::string* output) { +void InitialObserver::GetFirstResolutionsHtml(std::string* output) { DCHECK_CURRENTLY_ON(BrowserThread::IO); UrlInfo::UrlInfoTable resolution_list; - { - for (FirstNavigations::iterator it(first_navigations_.begin()); - it != first_navigations_.end(); - it++) { - UrlInfo info; - info.SetUrl(it->first); - info.set_time(it->second); - resolution_list.push_back(info); - } + for (const auto& url_time : first_navigations_) { + UrlInfo info; + info.SetUrl(url_time.first); + info.set_time(url_time.second); + resolution_list.push_back(info); } UrlInfo::GetHtmlTable(resolution_list, - "Future startups will prefetch DNS records for ", false, output); + "Future startups will prefetch DNS records for ", false, + output); } //-----------------------------------------------------------------------------
diff --git a/chrome/browser/net/predictor.h b/chrome/browser/net/predictor.h index 7023275..627509b 100644 --- a/chrome/browser/net/predictor.h +++ b/chrome/browser/net/predictor.h
@@ -63,6 +63,7 @@ namespace chrome_browser_net { +class InitialObserver; typedef std::map<GURL, UrlInfo> Results; // An observer for testing. @@ -349,38 +350,6 @@ DISALLOW_COPY_AND_ASSIGN(HostNameQueue); }; - // The InitialObserver monitors navigations made by the network stack. This - // is only used to identify startup time resolutions (for re-resolution - // during our next process startup). - // TODO(jar): Consider preconnecting at startup, which may be faster than - // waiting for render process to start and request a connection. - class InitialObserver { - public: - InitialObserver(); - ~InitialObserver(); - // Recording of when we observed each navigation. - typedef std::map<GURL, base::TimeTicks> FirstNavigations; - - // Potentially add a new URL to our startup list. - void Append(const GURL& url, Predictor* predictor); - - // Get an HTML version of our current planned first_navigations_. - void GetFirstResolutionsHtml(std::string* output); - - // Persist the current first_navigations_ for storage in a list. - void GetInitialDnsResolutionList(base::ListValue* startup_list); - - // Discards all initial loading history. - void DiscardInitialNavigationHistory() { first_navigations_.clear(); } - - private: - // List of the first N URL resolutions observed in this run. - FirstNavigations first_navigations_; - - // The number of URLs we'll save for pre-resolving at next startup. - static const size_t kStartupResolutionCount = 10; - }; - // A map that is keyed with the host/port that we've learned were the cause // of loading additional URLs. The list of additional targets is held // in a Referrer instance, which is a value in this map.
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index e530027..bb63f04 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -7,6 +7,7 @@ #include "ash/system/devicetype_utils.h" #include "base/bind.h" #include "base/callback.h" +#include "base/feature_list.h" #include "base/guid.h" #include "base/logging.h" #include "base/metrics/histogram_macros.h" @@ -31,6 +32,7 @@ #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" #include "chrome/browser/ui/webui/signin/signin_utils.h" #include "chrome/common/channel_info.h" +#include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" #include "chromeos/chromeos_switches.h" @@ -162,6 +164,7 @@ // 4. Supervised users are allowed by owner. ChromeUserManager* user_manager = ChromeUserManager::Get(); bool supervised_users_can_create = + base::FeatureList::IsEnabled(features::kSupervisedUserCreation) && user_manager->AreSupervisedUsersAllowed() && allow_new_user && !user_manager->GetUsersAllowedForSupervisedUsersCreation().empty(); params->SetBoolean("supervisedUsersCanCreate", supervised_users_can_create);
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn index 06b8b7a..5a5cd912 100644 --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn
@@ -553,6 +553,7 @@ "//rlz/features", ] deps = [ + ":channel_info", ":version_header", "//base", "//base/third_party/dynamic_annotations",
diff --git a/chrome/common/channel_info.h b/chrome/common/channel_info.h index a633722..010de41 100644 --- a/chrome/common/channel_info.h +++ b/chrome/common/channel_info.h
@@ -41,6 +41,13 @@ void SetChannel(const std::string& channel); #endif +#if defined(OS_POSIX) && defined(GOOGLE_CHROME_BUILD) +// Returns a channel-specific suffix to use when constructing the path of the +// default user data directory, allowing multiple channels to run side-by-side. +// In the stable channel, this returns the empty string. +std::string GetChannelSuffixForDataDir(); +#endif + } // namespace chrome #endif // CHROME_COMMON_CHANNEL_INFO_H_
diff --git a/chrome/common/channel_info_chromeos.cc b/chrome/common/channel_info_chromeos.cc index a7df3e8..38e8cd3 100644 --- a/chrome/common/channel_info_chromeos.cc +++ b/chrome/common/channel_info_chromeos.cc
@@ -46,4 +46,11 @@ #endif } +#if defined(GOOGLE_CHROME_BUILD) +std::string GetChannelSuffixForDataDir() { + // ChromeOS doesn't support side-by-side installations. + return std::string(); +} +#endif // defined(GOOGLE_CHROME_BUILD) + } // namespace chrome
diff --git a/chrome/common/channel_info_posix.cc b/chrome/common/channel_info_posix.cc index ff55d20..2b4e9792 100644 --- a/chrome/common/channel_info_posix.cc +++ b/chrome/common/channel_info_posix.cc
@@ -15,9 +15,11 @@ // Helper function to return both the channel enum and modifier string. // Implements both together to prevent their behavior from diverging, which has // happened multiple times in the past. -version_info::Channel GetChannelImpl(std::string* modifier_out) { +version_info::Channel GetChannelImpl(std::string* modifier_out, + std::string* data_dir_suffix_out) { version_info::Channel channel = version_info::Channel::UNKNOWN; std::string modifier; + std::string data_dir_suffix; char* env = getenv("CHROME_VERSION_EXTRA"); if (env) @@ -32,8 +34,10 @@ modifier = ""; } else if (modifier == "dev") { channel = version_info::Channel::DEV; + data_dir_suffix = "-unstable"; } else if (modifier == "beta") { channel = version_info::Channel::BETA; + data_dir_suffix = "-beta"; } else { modifier = "unknown"; } @@ -41,6 +45,8 @@ if (modifier_out) modifier_out->swap(modifier); + if (data_dir_suffix_out) + data_dir_suffix_out->swap(data_dir_suffix); return channel; } @@ -49,12 +55,20 @@ std::string GetChannelString() { std::string modifier; - GetChannelImpl(&modifier); + GetChannelImpl(&modifier, nullptr); return modifier; } +#if defined(GOOGLE_CHROME_BUILD) +std::string GetChannelSuffixForDataDir() { + std::string data_dir_suffix; + GetChannelImpl(nullptr, &data_dir_suffix); + return data_dir_suffix; +} +#endif // defined(GOOGLE_CHROME_BUILD) + version_info::Channel GetChannel() { - return GetChannelImpl(nullptr); + return GetChannelImpl(nullptr, nullptr); } } // namespace chrome
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 2547696..8613bab2 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -329,6 +329,11 @@ const base::Feature kSiteDetails{"SiteDetails", base::FEATURE_DISABLED_BY_DEFAULT}; +// Enables or disables the creation of (legacy) supervised users. Does not +// affect existing supervised users. +const base::Feature kSupervisedUserCreation{"SupervisedUserCreation", + base::FEATURE_DISABLED_BY_DEFAULT}; + #if defined(SYZYASAN) // Enable the deferred free mechanism in the syzyasan module, which helps the // performance by deferring some work on the critical path to a background
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index 0cfcc346..f86827f7 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -172,6 +172,8 @@ extern const base::Feature kSiteNotificationChannels; #endif +extern const base::Feature kSupervisedUserCreation; + #if defined(SYZYASAN) extern const base::Feature kSyzyasanDeferredFree; #endif
diff --git a/chrome/common/chrome_paths_linux.cc b/chrome/common/chrome_paths_linux.cc index aa26cc9b..1527b89 100644 --- a/chrome/common/chrome_paths_linux.cc +++ b/chrome/common/chrome_paths_linux.cc
@@ -12,6 +12,7 @@ #include "base/nix/xdg_util.h" #include "base/path_service.h" #include "build/build_config.h" +#include "chrome/common/channel_info.h" #include "chrome/common/chrome_paths_internal.h" namespace chrome { @@ -56,18 +57,29 @@ } // namespace +// This returns <config-home>/<product>, where +// <config-home> is: +// $XDG_CONFIG_HOME if set +// otherwise ~/.config +// and <product> is: +// "chromium" for Chromium +// "google-chrome" for stable channel official build +// "google-chrome-beta" for beta channel official build +// "google-chrome-unstable" for dev channel official build +// +// (Note that ChromeMainDelegate will override the value returned by this +// function if $CHROME_USER_DATA_DIR or --user-data-dir is set.) +// // See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html -// for a spec on where config files go. The net effect for most -// systems is we use ~/.config/chromium/ for Chromium and -// ~/.config/google-chrome/ for official builds. -// (This also helps us sidestep issues with other apps grabbing ~/.chromium .) +// for a spec on where config files go. Using ~/.config also helps us sidestep +// issues with other apps grabbing ~/.chromium . bool GetDefaultUserDataDirectory(base::FilePath* result) { std::unique_ptr<base::Environment> env(base::Environment::Create()); base::FilePath config_dir(GetXDGDirectory(env.get(), kXdgConfigHomeEnvVar, kDotConfigDir)); #if defined(GOOGLE_CHROME_BUILD) - *result = config_dir.Append("google-chrome"); + *result = config_dir.Append("google-chrome" + GetChannelSuffixForDataDir()); #else *result = config_dir.Append("chromium"); #endif
diff --git a/content/browser/devtools/protocol/storage_handler.cc b/content/browser/devtools/protocol/storage_handler.cc index 511a7009..a0202bd 100644 --- a/content/browser/devtools/protocol/storage_handler.cc +++ b/content/browser/devtools/protocol/storage_handler.cc
@@ -164,8 +164,8 @@ host_->GetProcess()->GetStoragePartition()->GetQuotaManager(); BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, - base::Bind(&GetUsageAndQuotaOnIOThread, manager, origin_url, - base::Passed(std::move(callback)))); + base::Bind(&GetUsageAndQuotaOnIOThread, base::RetainedRef(manager), + origin_url, base::Passed(std::move(callback)))); } } // namespace protocol
diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc index 3784d24e..108acc6d 100644 --- a/content/browser/frame_host/navigation_controller_impl_unittest.cc +++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
@@ -424,7 +424,9 @@ // Check that the GoToOffset will land on the expected page. EXPECT_EQ(urls[url_index], controller.GetPendingEntry()->GetVirtualURL()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, urls[url_index]); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, urls[url_index], + controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1U, navigation_entry_committed_counter_); navigation_entry_committed_counter_ = 0; // Check that we can go to any valid offset into the history. @@ -1366,7 +1368,9 @@ // Going back, the first entry should still appear unprivileged. controller.GoBack(); new_rfh->PrepareForCommit(); - contents()->GetPendingMainFrame()->SendNavigate(entry1_id, false, url1); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + entry1_id, false, url1, + controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); EXPECT_EQ(0, controller.GetLastCommittedEntry()->bindings()); } @@ -1696,7 +1700,8 @@ entry_id = controller.GetPendingEntry()->GetUniqueID(); EXPECT_FALSE(controller.GetPendingEntry()->GetIsOverridingUserAgent()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url1); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url1, controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1, change_counter); } @@ -1801,7 +1806,8 @@ EXPECT_TRUE(controller.CanGoForward()); main_test_rfh()->PrepareForCommitWithServerRedirect(url3); - main_test_rfh()->SendNavigate(entry1_id, true, url3); + main_test_rfh()->SendNavigateWithTransition( + entry1_id, true, url3, controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1U, navigation_entry_committed_counter_); navigation_entry_committed_counter_ = 0; @@ -1874,7 +1880,9 @@ controller.GoBack(); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry1->GetUniqueID(), false, url1); + main_test_rfh()->SendNavigateWithTransition( + entry1->GetUniqueID(), false, url1, + controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1U, navigation_entry_committed_counter_); navigation_entry_committed_counter_ = 0; @@ -1899,7 +1907,9 @@ controller.GetEntryAtIndex(1)->GetTimestamp()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry2->GetUniqueID(), false, url2); + main_test_rfh()->SendNavigateWithTransition( + entry2->GetUniqueID(), false, url2, + controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1U, navigation_entry_committed_counter_); navigation_entry_committed_counter_ = 0; @@ -1946,7 +1956,9 @@ controller.GoBack(); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry1->GetUniqueID(), false, url1); + main_test_rfh()->SendNavigateWithTransition( + entry1->GetUniqueID(), false, url1, + controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(1U, navigation_entry_committed_counter_); navigation_entry_committed_counter_ = 0; @@ -3006,7 +3018,8 @@ EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance()); // After navigating, we should have one entry, and it should be "pending". - our_controller.GoToIndex(0); + EXPECT_TRUE(our_controller.NeedsReload()); + our_controller.LoadIfNecessary(); EXPECT_EQ(1, our_controller.GetEntryCount()); EXPECT_EQ(our_controller.GetEntryAtIndex(0), our_controller.GetPendingEntry()); @@ -3076,7 +3089,8 @@ EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance()); // After navigating, we should have one entry, and it should be "pending". - our_controller.GoToIndex(0); + EXPECT_TRUE(our_controller.NeedsReload()); + our_controller.LoadIfNecessary(); EXPECT_EQ(1, our_controller.GetEntryCount()); EXPECT_EQ(our_controller.GetEntryAtIndex(0), our_controller.GetPendingEntry()); @@ -3198,7 +3212,8 @@ // Now commit and delete the last entry. main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url4); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url4, controller.GetPendingEntry()->GetTransitionType()); EXPECT_TRUE(controller.RemoveEntryAtIndex(controller.GetEntryCount() - 1)); EXPECT_EQ(4, controller.GetEntryCount()); EXPECT_EQ(3, controller.GetLastCommittedEntryIndex()); @@ -3246,6 +3261,8 @@ // and pending entries. controller.GoBack(); entry_id = controller.GetPendingEntry()->GetUniqueID(); + ui::PageTransition entry_transition = + controller.GetPendingEntry()->GetTransitionType(); EXPECT_FALSE(controller.RemoveEntryAtIndex(2)); EXPECT_FALSE(controller.RemoveEntryAtIndex(1)); @@ -3260,7 +3277,8 @@ // Now commit and ensure we land on the right entry. main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url2); + main_test_rfh()->SendNavigateWithTransition(entry_id, false, url2, + entry_transition); EXPECT_EQ(2, controller.GetEntryCount()); EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); EXPECT_FALSE(controller.GetPendingEntry()); @@ -3363,7 +3381,8 @@ controller.GoToOffset(-1); entry_id = controller.GetPendingEntry()->GetUniqueID(); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url3); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url3, controller.GetPendingEntry()->GetTransitionType()); // Add a transient and go to an entry before the current one. transient_entry.reset(new NavigationEntryImpl); @@ -3378,7 +3397,8 @@ // Visible entry does not update for history navigations until commit. EXPECT_EQ(url3, controller.GetVisibleEntry()->GetURL()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url1); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url1, controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); // Add a transient and go to an entry after the current one. @@ -3394,7 +3414,8 @@ EXPECT_EQ(url2, controller.GetPendingEntry()->GetURL()); EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url2); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url2, controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); // Add a transient and go forward. @@ -3410,7 +3431,8 @@ EXPECT_EQ(url3, controller.GetPendingEntry()->GetURL()); EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); main_test_rfh()->PrepareForCommit(); - main_test_rfh()->SendNavigate(entry_id, false, url3); + main_test_rfh()->SendNavigateWithTransition( + entry_id, false, url3, controller.GetPendingEntry()->GetTransitionType()); EXPECT_EQ(url3, controller.GetVisibleEntry()->GetURL()); // Add a transient and do an in-page navigation, replacing the current entry.
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc index b79232b51..1434b848 100644 --- a/content/browser/frame_host/render_frame_host_manager_unittest.cc +++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -1265,8 +1265,9 @@ // The back navigation commits. const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - entry1->GetUniqueID(), false, entry1->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + entry1->GetUniqueID(), false, entry1->GetURL(), + entry1->GetTransitionType()); EXPECT_TRUE(rfh2->IsWaitingForUnloadACK()); EXPECT_FALSE(rfh2->is_active()); @@ -1274,8 +1275,9 @@ contents()->GetController().GoForward(); contents()->GetMainFrame()->PrepareForCommit(); const NavigationEntry* entry2 = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - entry2->GetUniqueID(), false, entry2->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + entry2->GetUniqueID(), false, entry2->GetURL(), + entry2->GetTransitionType()); EXPECT_TRUE(main_test_rfh()->is_active()); } @@ -1440,8 +1442,9 @@ // The back navigation commits. const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - entry1->GetUniqueID(), false, entry1->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + entry1->GetUniqueID(), false, entry1->GetURL(), + entry1->GetTransitionType()); // Ensure the opener is still cleared. EXPECT_FALSE(contents()->HasOpener()); @@ -1474,8 +1477,9 @@ contents()->GetController().GoBack(); contents()->GetMainFrame()->PrepareForCommit(); const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - entry1->GetUniqueID(), false, entry1->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + entry1->GetUniqueID(), false, entry1->GetURL(), + entry1->GetTransitionType()); // Disown the opener from rfh2. rfh2->DidChangeOpener(MSG_ROUTING_NONE);
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc index 05d2f2cd..b5a1c61 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.cc +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -1203,9 +1203,9 @@ it.name(), it.value(), child_id, resource_context, base::Bind( &ResourceDispatcherHostImpl::ContinuePendingBeginRequest, - base::Unretained(this), requester_info, request_id, - request_data, sync_result_handler, route_id, headers, - base::Passed(std::move(mojo_request)), + base::Unretained(this), make_scoped_refptr(requester_info), + request_id, request_data, sync_result_handler, route_id, + headers, base::Passed(std::move(mojo_request)), base::Passed(std::move(url_loader_client)))); return; }
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc index 4e41bc8..0c95324 100644 --- a/content/browser/media/media_interface_proxy.cc +++ b/content/browser/media/media_interface_proxy.cc
@@ -111,8 +111,8 @@ BrowserContext::GetDefaultStoragePartition( render_frame_host_->GetProcess()->GetBrowserContext()) ->GetURLRequestContext(); - provider->registry()->AddInterface( - base::Bind(&ProvisionFetcherImpl::Create, context_getter)); + provider->registry()->AddInterface(base::Bind( + &ProvisionFetcherImpl::Create, base::RetainedRef(context_getter))); #endif // BUILDFLAG(ENABLE_MOJO_CDM) GetContentClient()->browser()->ExposeInterfacesToMediaService( provider->registry(), render_frame_host_);
diff --git a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc index e5f0d75..e97074f 100644 --- a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc +++ b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
@@ -82,7 +82,7 @@ return base::MakeUnique<ServiceWorkerNavigationHandleCore>(nullptr, wrapper); }, - context_wrapper), + base::RetainedRef(context_wrapper)), base::Bind( [](std::unique_ptr<ServiceWorkerNavigationHandleCore>* dest, std::unique_ptr<ServiceWorkerNavigationHandleCore> src) {
diff --git a/content/browser/service_worker/service_worker_url_loader_job.cc b/content/browser/service_worker/service_worker_url_loader_job.cc index 70e925b9..89bbdf42 100644 --- a/content/browser/service_worker/service_worker_url_loader_job.cc +++ b/content/browser/service_worker/service_worker_url_loader_job.cc
@@ -105,7 +105,7 @@ resource_request_.resource_type, base::nullopt, net::NetLogWithSource() /* TODO(scottmg): net log? */, base::Bind(&ServiceWorkerURLLoaderJob::DidPrepareFetchEvent, - weak_factory_.GetWeakPtr(), active_worker), + weak_factory_.GetWeakPtr(), make_scoped_refptr(active_worker)), base::Bind(&ServiceWorkerURLLoaderJob::DidDispatchFetchEvent, weak_factory_.GetWeakPtr()))); // TODO(kinuko): Handle navigation preload.
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc index 01d4344..922e1f8 100644 --- a/content/browser/service_worker/service_worker_url_request_job.cc +++ b/content/browser/service_worker/service_worker_url_request_job.cc
@@ -979,7 +979,7 @@ CreateFetchRequest(), active_worker, resource_type_, timeout_, request()->net_log(), base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, - weak_factory_.GetWeakPtr(), active_worker), + weak_factory_.GetWeakPtr(), make_scoped_refptr(active_worker)), base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, weak_factory_.GetWeakPtr()))); worker_start_time_ = base::TimeTicks::Now();
diff --git a/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc b/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc index 78c5e8b..02fc3bc4 100644 --- a/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc +++ b/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc
@@ -398,8 +398,9 @@ EXPECT_TRUE(contents()->CrossProcessNavigationPending()); NavigationEntry* pending = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - pending->GetUniqueID(), false, pending->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + pending->GetUniqueID(), false, pending->GetURL(), + pending->GetTransitionType()); EXPECT_EQ(contents()->GetURL(), third()); } @@ -414,8 +415,9 @@ EXPECT_TRUE(GetOverlay()->web_contents()); NavigationEntry* pending = contents()->GetController().GetPendingEntry(); - contents()->GetPendingMainFrame()->SendNavigate( - pending->GetUniqueID(), false, pending->GetURL()); + contents()->GetPendingMainFrame()->SendNavigateWithTransition( + pending->GetUniqueID(), false, pending->GetURL(), + pending->GetTransitionType()); ReceivePaintUpdate(); // Navigation was committed and the paint update was received - we should no
diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc index 995b962..70b86b9 100644 --- a/content/browser/web_contents/web_contents_impl_unittest.cc +++ b/content/browser/web_contents/web_contents_impl_unittest.cc
@@ -860,7 +860,8 @@ ASSERT_EQ(0u, entries.size()); ASSERT_EQ(1, controller().GetEntryCount()); - controller().GoToIndex(0); + EXPECT_TRUE(controller().NeedsReload()); + controller().LoadIfNecessary(); NavigationEntry* entry = controller().GetPendingEntry(); orig_rfh->PrepareForCommit(); contents()->TestDidNavigate(orig_rfh, entry->GetUniqueID(), false, @@ -909,7 +910,8 @@ ASSERT_EQ(0u, entries.size()); ASSERT_EQ(1, controller().GetEntryCount()); - controller().GoToIndex(0); + EXPECT_TRUE(controller().NeedsReload()); + controller().LoadIfNecessary(); NavigationEntry* entry = controller().GetPendingEntry(); orig_rfh->PrepareForCommit(); contents()->TestDidNavigate(orig_rfh, entry->GetUniqueID(), false, @@ -1467,8 +1469,9 @@ controller().GoBack(); entry_id = controller().GetPendingEntry()->GetUniqueID(); orig_rfh->PrepareForCommit(); - contents()->TestDidNavigate(orig_rfh, entry_id, false, url, - ui::PAGE_TRANSITION_TYPED); + contents()->TestDidNavigate( + orig_rfh, entry_id, false, url, + controller().GetPendingEntry()->GetTransitionType()); entry = controller().GetLastCommittedEntry(); EXPECT_TRUE(entry->GetPageState().IsValid()); }
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc index ab5d0c6d..7b15c0b8 100644 --- a/content/renderer/input/main_thread_event_queue.cc +++ b/content/renderer/input/main_thread_event_queue.cc
@@ -118,8 +118,9 @@ (now - creationTimestamp()).InMicroseconds(), 1, kTenSeconds, 50); } - HandledEventCallback callback = base::BindOnce( - &QueuedWebInputEvent::HandledEvent, base::Unretained(this), queue); + HandledEventCallback callback = + base::BindOnce(&QueuedWebInputEvent::HandledEvent, + base::Unretained(this), base::RetainedRef(queue)); queue->HandleEventOnMainThread(coalesced_event(), latencyInfo(), std::move(callback)); }
diff --git a/content/renderer/media/audio_renderer_sink_cache_unittest.cc b/content/renderer/media/audio_renderer_sink_cache_unittest.cc index afbaf16..846b016 100644 --- a/content/renderer/media/audio_renderer_sink_cache_unittest.cc +++ b/content/renderer/media/audio_renderer_sink_cache_unittest.cc
@@ -341,9 +341,9 @@ EXPECT_EQ(1, sink_count()); // Release the sink on the second thread. - PostAndRunUntilDone(thread2, - base::Bind(&AudioRendererSinkCache::ReleaseSink, - base::Unretained(cache_.get()), sink)); + PostAndRunUntilDone(thread2, base::Bind(&AudioRendererSinkCache::ReleaseSink, + base::Unretained(cache_.get()), + base::RetainedRef(sink))); EXPECT_EQ(0, sink_count()); }
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py index 3d62527..71cc1e5 100644 --- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py +++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -67,18 +67,19 @@ ['win', 'd3d11'], bug=644740) self.Fail('conformance2/textures/misc/tex-base-level-bug.html', ['win', 'd3d11'], bug=705865) + self.Flaky('conformance2/textures/svg_image/' + + 'tex-2d-rgb565-rgb-unsigned_short_5_6_5.html', + ['win'], bug=736926) # Failing intermittently with out-of-memory crashes on some Windows bots. - self.Flaky('deqp/functional/gles3/texturefiltering/3d_formats_05.html', - ['win'], bug=735527) - self.Flaky('deqp/functional/gles3/texturefiltering/3d_formats_06.html', - ['win'], bug=735527) - self.Flaky('deqp/functional/gles3/texturefiltering/3d_formats_07.html', - ['win'], bug=735527) - self.Flaky('deqp/functional/gles3/texturefiltering/3d_sizes_02.html', - ['win'], bug=735527) - self.Flaky('deqp/functional/gles3/texturefiltering/3d_sizes_03.html', - ['win'], bug=735527) + self.Flaky('deqp/functional/gles3/texturefiltering/*', + ['win'], bug=725664) + self.Flaky('deqp/functional/gles3/textureformat/*', + ['win'], bug=725664) + self.Flaky('deqp/functional/gles3/textureshadow/*', + ['win'], bug=725664) + self.Flaky('deqp/functional/gles3/texturespecification/*', + ['win'], bug=725664) # Win / NVidia self.Flaky('deqp/functional/gles3/fbomultisample*',
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py index 9b75f8c..18f66e3d 100644 --- a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py +++ b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
@@ -203,6 +203,10 @@ self.Flaky('conformance/textures/misc/copytexsubimage2d-subrects.html', ['win', 'amd', 'passthrough', 'd3d11'], bug=685232) + # Win / NVIDIA / Passthrough command decoder / D3D11 + self.Flaky('conformance/programs/program-test.html', + ['win', 'nvidia', 'passthrough', 'd3d11'], bug=737016) + # Win failures # Note that the following test seems to pass, but it may still be flaky. self.Fail('conformance/glsl/constructors/' + @@ -229,6 +233,8 @@ ['win10', ('nvidia', 0x1cb3), 'd3d9'], bug=680754) self.Fail('conformance/limits/gl-max-texture-dimensions.html', ['win10', ('nvidia', 0x1cb3)], bug=715001) + self.Fail('conformance/ogles/GL/atan/atan_001_to_008.html', + ['win10', ('nvidia', 0x1cb3), 'd3d9'], bug=737018) self.Fail('conformance/ogles/GL/cos/cos_001_to_006.html', ['win10', ('nvidia', 0x1cb3), 'd3d9'], bug=680754)
diff --git a/extensions/browser/blob_reader.cc b/extensions/browser/blob_reader.cc index 45c2c122..b121c32 100644 --- a/extensions/browser/blob_reader.cc +++ b/extensions/browser/blob_reader.cc
@@ -35,10 +35,33 @@ } DCHECK(blob_url.is_valid()); - // This network request is annotated with NO_TRAFFIC_ANNOTATION_YET as - // it is scheduled to be removed in (crbug.com/701851). + net::NetworkTrafficAnnotationTag traffic_annotation = + net::DefineNetworkTrafficAnnotation("blob_reader", R"( + semantics { + sender: "BlobReader" + description: + "Blobs are used for a variety of use cases, and are basically " + "immutable blocks of data. See https://chromium.googlesource.com/" + "chromium/src/+/master/storage/browser/blob/README.md for an " + "explanation of blobs and their implementation in Chrome. These " + "can be created by scripts in a website, web platform features, or " + "internally in the browser." + trigger: + "Request for reading the contents of a blob." + data: + "A reference to a Blob, File, or CacheStorage entry created from " + "script, a web platform feature, or browser internals." + destination: LOCAL + } + policy { + cookies_allowed: false + setting: "This feature cannot be disabled by settings." + policy_exception_justification: + "Not implemented. This is a local data fetch request and has no " + "network activity." + })"); fetcher_ = net::URLFetcher::Create(blob_url, net::URLFetcher::GET, this, - NO_TRAFFIC_ANNOTATION_YET); + traffic_annotation); fetcher_->SetRequestContext( content::BrowserContext::GetDefaultStoragePartition(browser_context) ->GetURLRequestContext());
diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc index 76e6315..5241fac 100644 --- a/headless/lib/browser/headless_web_contents_impl.cc +++ b/headless/lib/browser/headless_web_contents_impl.cc
@@ -101,7 +101,7 @@ void CloseContents(content::WebContents* source) override { if (source != headless_web_contents_->web_contents()) return; - headless_web_contents_->web_contents()->Close(); + headless_web_contents_->Close(); } private:
diff --git a/ios/chrome/app/application_delegate/metrics_mediator.mm b/ios/chrome/app/application_delegate/metrics_mediator.mm index 191d4938..1d40282 100644 --- a/ios/chrome/app/application_delegate/metrics_mediator.mm +++ b/ios/chrome/app/application_delegate/metrics_mediator.mm
@@ -8,6 +8,7 @@ #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics_action.h" #include "base/strings/sys_string_conversions.h" +#include "base/task_scheduler/post_task.h" #include "components/crash/core/common/crash_keys.h" #include "components/metrics/metrics_pref_names.h" #include "components/metrics/metrics_service.h" @@ -225,37 +226,35 @@ } - (void)setAppGroupMetricsEnabled:(BOOL)enabled { - metrics::MetricsService* metrics = - GetApplicationContext()->GetMetricsService(); + app_group::ProceduralBlockWithData callback; if (enabled) { PrefService* prefs = GetApplicationContext()->GetLocalState(); NSString* brandCode = base::SysUTF8ToNSString(ios::GetChromeBrowserProvider() ->GetAppDistributionProvider() ->GetDistributionBrandCode()); + app_group::main_app::EnableMetrics( - base::SysUTF8ToNSString(metrics->GetClientId()), brandCode, - prefs->GetInt64(metrics::prefs::kInstallDate), + base::SysUTF8ToNSString( + GetApplicationContext()->GetMetricsService()->GetClientId()), + brandCode, prefs->GetInt64(metrics::prefs::kInstallDate), prefs->GetInt64(metrics::prefs::kMetricsReportingEnabledTimestamp)); + + // If metrics are enabled, process the logs. Otherwise, just delete them. + callback = ^(NSData* log_content) { + std::string log(static_cast<const char*>([log_content bytes]), + static_cast<size_t>([log_content length])); + web::WebThread::PostTask( + web::WebThread::UI, FROM_HERE, base::BindBlockArc(^{ + GetApplicationContext()->GetMetricsService()->PushExternalLog(log); + })); + }; } else { app_group::main_app::DisableMetrics(); } - // If metrics are enabled, process the logs. Otherwise, just delete them. - app_group::ProceduralBlockWithData callback; - if (enabled) { - callback = [^(NSData* log_content) { - std::string log(static_cast<const char*>([log_content bytes]), - static_cast<size_t>([log_content length])); - web::WebThread::PostTask(web::WebThread::UI, FROM_HERE, - base::BindBlockArc(^{ - metrics->PushExternalLog(log); - })); - } copy]; - } - - web::WebThread::PostTask( - web::WebThread::FILE, FROM_HERE, + base::PostTaskWithTraits( + FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, base::Bind(&app_group::main_app::ProcessPendingLogs, callback)); }
diff --git a/ios/chrome/browser/reading_list/reading_list_download_service.cc b/ios/chrome/browser/reading_list/reading_list_download_service.cc index 2abb0c5..c0b2cdf 100644 --- a/ios/chrome/browser/reading_list/reading_list_download_service.cc +++ b/ios/chrome/browser/reading_list/reading_list_download_service.cc
@@ -13,11 +13,12 @@ #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" +#include "base/task_scheduler/post_task.h" +#include "base/threading/thread_restrictions.h" #include "components/reading_list/core/offline_url_utils.h" #include "components/reading_list/core/reading_list_entry.h" #include "components/reading_list/core/reading_list_model.h" #include "ios/chrome/browser/reading_list/reading_list_distiller_page_factory.h" -#include "ios/web/public/web_thread.h" namespace { // Status of the download when it ends, for UMA report. @@ -144,8 +145,8 @@ break; } } - web::WebThread::PostTaskAndReply( - web::WebThread::FILE, FROM_HERE, + base::PostTaskWithTraitsAndReply( + FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, base::Bind(&ReadingListDownloadService::CleanUpFiles, base::Unretained(this), processed_directories), base::Bind(&ReadingListDownloadService::DownloadUnprocessedEntries, @@ -154,6 +155,7 @@ void ReadingListDownloadService::CleanUpFiles( const std::set<std::string>& processed_directories) { + base::ThreadRestrictions::AssertIOAllowed(); base::FileEnumerator file_enumerator(OfflineRoot(), false, base::FileEnumerator::DIRECTORIES); for (base::FilePath sub_directory = file_enumerator.Next(); @@ -180,8 +182,8 @@ entry->DistilledState() == ReadingListEntry::PROCESSED || entry->IsRead()) return; GURL local_url(url); - web::WebThread::PostDelayedTask( - web::WebThread::UI, FROM_HERE, + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, base::Bind(&ReadingListDownloadService::DownloadEntry, weak_ptr_factory_.GetWeakPtr(), local_url), entry->TimeUntilNextTry());
diff --git a/ios/chrome/common/app_group/app_group_metrics_mainapp.mm b/ios/chrome/common/app_group/app_group_metrics_mainapp.mm index b33cfec0..bfbf7e4 100644 --- a/ios/chrome/common/app_group/app_group_metrics_mainapp.mm +++ b/ios/chrome/common/app_group/app_group_metrics_mainapp.mm
@@ -7,6 +7,7 @@ #include <stdint.h> #include "base/logging.h" +#include "base/threading/thread_restrictions.h" #include "ios/chrome/common/app_group/app_group_constants.h" #include "ios/chrome/common/app_group/app_group_metrics.h" @@ -19,6 +20,7 @@ namespace main_app { void ProcessPendingLogs(ProceduralBlockWithData callback) { + base::ThreadRestrictions::AssertIOAllowed(); NSFileManager* file_manager = [NSFileManager defaultManager]; NSURL* store_url = [file_manager containerURLForSecurityApplicationGroupIdentifier:ApplicationGroup()];
diff --git a/ios/clean/chrome/browser/ui/find_in_page/BUILD.gn b/ios/clean/chrome/browser/ui/find_in_page/BUILD.gn index a53b364..dccbfe0 100644 --- a/ios/clean/chrome/browser/ui/find_in_page/BUILD.gn +++ b/ios/clean/chrome/browser/ui/find_in_page/BUILD.gn
@@ -19,7 +19,6 @@ "//ios/chrome/browser/web_state_list", "//ios/clean/chrome/browser", "//ios/clean/chrome/browser/ui/actions", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", "//ios/shared/chrome/browser/ui/browser_list", "//ios/shared/chrome/browser/ui/commands", @@ -40,9 +39,7 @@ "//ios/chrome/browser/ui/find_bar", "//ios/clean/chrome/browser/ui", "//ios/clean/chrome/browser/ui/actions", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", - "//ios/clean/chrome/browser/ui/presenters", "//ui/base", ] libs = [ "UIKit.framework" ]
diff --git a/ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h b/ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h deleted file mode 100644 index 65d4ca96..0000000 --- a/ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h +++ /dev/null
@@ -1,20 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_ - -#import <Foundation/Foundation.h> - -// Protocol for an object to assist with menu presentation by providing -// spatial information for the menu. -@protocol MenuPresentationDelegate -// Return the CGRect in which the Menu presentation will take place. -- (CGRect)boundsForMenuPresentation; -// Return the origin in the coordinate space of the presenting view controller's -// view, in which the Menu presentation will present from. -- (CGRect)originForMenuPresentation; -@end - -#endif // IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_
diff --git a/ios/clean/chrome/browser/ui/root/BUILD.gn b/ios/clean/chrome/browser/ui/root/BUILD.gn index 19133fb1..d499ecd 100644 --- a/ios/clean/chrome/browser/ui/root/BUILD.gn +++ b/ios/clean/chrome/browser/ui/root/BUILD.gn
@@ -26,8 +26,8 @@ ] deps = [ "//base", - "//ios/clean/chrome/browser/ui/animators", - "//ios/clean/chrome/browser/ui/presenters", + "//ios/clean/chrome/browser/ui/transitions/animators", + "//ios/clean/chrome/browser/ui/transitions/presenters", ] configs += [ "//build/config/compiler:enable_arc" ] } @@ -42,7 +42,7 @@ ":root_ui", "//base", "//ios/clean/chrome/browser", - "//ios/clean/chrome/browser/ui/animators", + "//ios/clean/chrome/browser/ui/transitions/animators", "//testing/gtest", "//third_party/ocmock", ]
diff --git a/ios/clean/chrome/browser/ui/root/root_container_view_controller.h b/ios/clean/chrome/browser/ui/root/root_container_view_controller.h index 0f3ffe0..0181677 100644 --- a/ios/clean/chrome/browser/ui/root/root_container_view_controller.h +++ b/ios/clean/chrome/browser/ui/root/root_container_view_controller.h
@@ -7,8 +7,8 @@ #import <UIKit/UIKit.h> -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" -#import "ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h" // View controller that wholly contains a content view controller. @interface RootContainerViewController
diff --git a/ios/clean/chrome/browser/ui/root/root_container_view_controller_unittest.mm b/ios/clean/chrome/browser/ui/root/root_container_view_controller_unittest.mm index ddb39002..0a849832 100644 --- a/ios/clean/chrome/browser/ui/root/root_container_view_controller_unittest.mm +++ b/ios/clean/chrome/browser/ui/root/root_container_view_controller_unittest.mm
@@ -5,7 +5,7 @@ #import "ios/clean/chrome/browser/ui/root/root_container_view_controller.h" #include "base/macros.h" -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" #import "third_party/ocmock/OCMock/OCMock.h"
diff --git a/ios/clean/chrome/browser/ui/tab/BUILD.gn b/ios/clean/chrome/browser/ui/tab/BUILD.gn index 3a3fea1..32baf708 100644 --- a/ios/clean/chrome/browser/ui/tab/BUILD.gn +++ b/ios/clean/chrome/browser/ui/tab/BUILD.gn
@@ -15,12 +15,12 @@ "//base", "//ios/chrome/browser", "//ios/clean/chrome/browser/ui/actions", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", "//ios/clean/chrome/browser/ui/find_in_page", "//ios/clean/chrome/browser/ui/ntp", "//ios/clean/chrome/browser/ui/tab_strip", "//ios/clean/chrome/browser/ui/toolbar", + "//ios/clean/chrome/browser/ui/transitions", "//ios/clean/chrome/browser/ui/web_contents", "//ios/shared/chrome/browser/ui/broadcaster", "//ios/shared/chrome/browser/ui/browser_list", @@ -37,8 +37,8 @@ ] deps = [ "//ios/clean/chrome/browser/ui", - "//ios/clean/chrome/browser/ui/animators", - "//ios/clean/chrome/browser/ui/presenters", + "//ios/clean/chrome/browser/ui/transitions/animators", + "//ios/clean/chrome/browser/ui/transitions/presenters", ] libs = [ "UIKit.framework" ] configs += [ "//build/config/compiler:enable_arc" ]
diff --git a/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h b/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h index ba1426b..6a1aacc 100644 --- a/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h +++ b/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h
@@ -7,8 +7,8 @@ #import <UIKit/UIKit.h> -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" -#import "ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h" // Abstract base class for a view controller that contains several views, // each managed by their own view controllers.
diff --git a/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.mm b/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.mm index e00714a8..b4b56b1 100644 --- a/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.mm +++ b/ios/clean/chrome/browser/ui/tab/tab_container_view_controller.mm
@@ -184,7 +184,7 @@ return self.view.bounds; } - (CGRect)originForMenuPresentation { - return [self rectForZoomWithKey:@"" inView:self.view]; + return [self rectForZoomWithKey:nil inView:self.view]; } #pragma mark - ZoomTransitionDelegate
diff --git a/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm b/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm index f098627..a0f011c0 100644 --- a/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm +++ b/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm
@@ -9,7 +9,6 @@ #include "base/mac/foundation_util.h" #include "base/memory/ptr_util.h" #include "ios/chrome/browser/chrome_url_constants.h" -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h" #import "ios/clean/chrome/browser/ui/commands/tab_commands.h" #import "ios/clean/chrome/browser/ui/commands/tab_strip_commands.h" #import "ios/clean/chrome/browser/ui/find_in_page/find_in_page_coordinator.h" @@ -17,6 +16,7 @@ #import "ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h" #import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h" #import "ios/clean/chrome/browser/ui/toolbar/toolbar_coordinator.h" +#import "ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h" #import "ios/clean/chrome/browser/ui/web_contents/web_coordinator.h" #import "ios/shared/chrome/browser/ui/broadcaster/chrome_broadcaster.h" #import "ios/shared/chrome/browser/ui/browser_list/browser.h"
diff --git a/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn b/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn index 25b5240b..ff74a57 100644 --- a/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn +++ b/ios/clean/chrome/browser/ui/tab_grid/BUILD.gn
@@ -61,9 +61,9 @@ "//ios/chrome/browser/ui/colors", "//ios/chrome/browser/ui/tab_switcher", "//ios/clean/chrome/browser/ui/actions", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", "//ios/clean/chrome/browser/ui/tab_collection:tab_collection_ui", + "//ios/clean/chrome/browser/ui/transitions/animators", "//ios/third_party/material_components_ios:material_components_ios", "//ui/base", ]
diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_toolbar.h b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_toolbar.h index 46ecd39..e2025b1 100644 --- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_toolbar.h +++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_toolbar.h
@@ -7,7 +7,7 @@ #import <UIKit/UIKit.h> -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" // The toolbar in the tab grid, which has a done button, incognito button, and // an overflow menu button. The toolbar has an intrinsic height, and its buttons
diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h index b9a104e..18092ae 100644 --- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h +++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h
@@ -7,8 +7,8 @@ #import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.h" -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_consumer.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" @protocol SettingsCommands; @protocol TabGridCommands;
diff --git a/ios/clean/chrome/browser/ui/toolbar/BUILD.gn b/ios/clean/chrome/browser/ui/toolbar/BUILD.gn index bf72de3..c02d0ba 100644 --- a/ios/clean/chrome/browser/ui/toolbar/BUILD.gn +++ b/ios/clean/chrome/browser/ui/toolbar/BUILD.gn
@@ -38,9 +38,9 @@ ":toolbar_components_ui", "//base", "//ios/chrome/browser/ui", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", "//ios/clean/chrome/browser/ui/tools", + "//ios/clean/chrome/browser/ui/transitions/animators", "//ios/third_party/material_components_ios", ] libs = [ "UIKit.framework" ]
diff --git a/ios/clean/chrome/browser/ui/toolbar/toolbar_view_controller.h b/ios/clean/chrome/browser/ui/toolbar/toolbar_view_controller.h index 13954a22..cd070d0a 100644 --- a/ios/clean/chrome/browser/ui/toolbar/toolbar_view_controller.h +++ b/ios/clean/chrome/browser/ui/toolbar/toolbar_view_controller.h
@@ -7,8 +7,8 @@ #import <UIKit/UIKit.h> -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" #import "ios/clean/chrome/browser/ui/toolbar/toolbar_consumer.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" @protocol NavigationCommands; @protocol TabGridCommands;
diff --git a/ios/clean/chrome/browser/ui/tools/BUILD.gn b/ios/clean/chrome/browser/ui/tools/BUILD.gn index 28f2dd2f..07e1043 100644 --- a/ios/clean/chrome/browser/ui/tools/BUILD.gn +++ b/ios/clean/chrome/browser/ui/tools/BUILD.gn
@@ -17,6 +17,7 @@ ":tools_ui", "//base", "//ios/clean/chrome/browser/ui/commands", + "//ios/clean/chrome/browser/ui/transitions", "//ios/shared/chrome/browser/ui/browser_list", "//ios/shared/chrome/browser/ui/coordinators", "//ios/shared/chrome/browser/ui/tools_menu", @@ -36,8 +37,6 @@ "tools_menu_item.mm", "tools_menu_model.h", "tools_menu_model.mm", - "tools_menu_transition_controller.h", - "tools_menu_transition_controller.mm", ] configs += [ "//build/config/compiler:enable_arc" ] @@ -50,10 +49,9 @@ "//ios/chrome/app/theme", "//ios/chrome/browser/ui", "//ios/chrome/browser/ui/tools_menu", - "//ios/clean/chrome/browser/ui/animators", "//ios/clean/chrome/browser/ui/commands", - "//ios/clean/chrome/browser/ui/presenters", "//ios/clean/chrome/browser/ui/toolbar:toolbar_components_ui", + "//ios/clean/chrome/browser/ui/transitions", "//ios/third_party/material_components_ios", ] }
diff --git a/ios/clean/chrome/browser/ui/tools/tools_coordinator.mm b/ios/clean/chrome/browser/ui/tools/tools_coordinator.mm index 7bdd6b25..0251ceba 100644 --- a/ios/clean/chrome/browser/ui/tools/tools_coordinator.mm +++ b/ios/clean/chrome/browser/ui/tools/tools_coordinator.mm
@@ -6,7 +6,7 @@ #import "ios/clean/chrome/browser/ui/tools/menu_view_controller.h" #import "ios/clean/chrome/browser/ui/tools/tools_mediator.h" -#import "ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.h" #import "ios/shared/chrome/browser/ui/browser_list/browser.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -16,7 +16,7 @@ @interface ToolsCoordinator () @property(nonatomic, strong) ToolsMediator* mediator; @property(nonatomic, strong) - ToolsMenuTransitionController* transitionController; + ZoomingMenuTransitionController* transitionController; @property(nonatomic, strong) MenuViewController* viewController; @end @@ -32,7 +32,7 @@ - (void)start { self.viewController = [[MenuViewController alloc] init]; self.viewController.modalPresentationStyle = UIModalPresentationCustom; - self.transitionController = [[ToolsMenuTransitionController alloc] + self.transitionController = [[ZoomingMenuTransitionController alloc] initWithDispatcher:static_cast<id>(self.browser->dispatcher())]; self.viewController.transitioningDelegate = self.transitionController; self.viewController.dispatcher = static_cast<id>(self.browser->dispatcher());
diff --git a/ios/clean/chrome/browser/ui/transitions/BUILD.gn b/ios/clean/chrome/browser/ui/transitions/BUILD.gn new file mode 100644 index 0000000..0fb5b0b --- /dev/null +++ b/ios/clean/chrome/browser/ui/transitions/BUILD.gn
@@ -0,0 +1,20 @@ +# 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. + +source_set("transitions") { + sources = [ + "zoom_transition_controller.h", + "zoom_transition_controller.mm", + "zooming_menu_transition_controller.h", + "zooming_menu_transition_controller.mm", + ] + + configs += [ "//build/config/compiler:enable_arc" ] + + deps = [ + "//base", + "//ios/clean/chrome/browser/ui/transitions/animators", + "//ios/clean/chrome/browser/ui/transitions/presenters", + ] +}
diff --git a/ios/clean/chrome/browser/ui/animators/BUILD.gn b/ios/clean/chrome/browser/ui/transitions/animators/BUILD.gn similarity index 84% rename from ios/clean/chrome/browser/ui/animators/BUILD.gn rename to ios/clean/chrome/browser/ui/transitions/animators/BUILD.gn index c563a9a..32c610a 100644 --- a/ios/clean/chrome/browser/ui/animators/BUILD.gn +++ b/ios/clean/chrome/browser/ui/transitions/animators/BUILD.gn
@@ -6,8 +6,6 @@ sources = [ "zoom_transition_animator.h", "zoom_transition_animator.mm", - "zoom_transition_controller.h", - "zoom_transition_controller.mm", "zoom_transition_delegate.h", ]
diff --git a/ios/clean/chrome/browser/ui/animators/README.md b/ios/clean/chrome/browser/ui/transitions/animators/README.md similarity index 100% rename from ios/clean/chrome/browser/ui/animators/README.md rename to ios/clean/chrome/browser/ui/transitions/animators/README.md
diff --git a/ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.h similarity index 84% rename from ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h rename to ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.h index 98f2393..7d846e8 100644 --- a/ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h +++ b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.h
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_ +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_ #import <UIKit/UIKit.h> -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h" // A transition animator object. The transition (for presentation) will begin // with the presented view occupying a rectangle supplied by the delegate, or @@ -41,4 +41,4 @@ @end -#endif // IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_ +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_ANIMATOR_H_
diff --git a/ios/clean/chrome/browser/ui/animators/zoom_transition_animator.mm b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.mm similarity index 97% rename from ios/clean/chrome/browser/ui/animators/zoom_transition_animator.mm rename to ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.mm index c754194f..32f57c4 100644 --- a/ios/clean/chrome/browser/ui/animators/zoom_transition_animator.mm +++ b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.h" #include "base/mac/foundation_util.h"
diff --git a/ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h similarity index 62% rename from ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h rename to ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h index 358273f4..1d65eb5a 100644 --- a/ios/clean/chrome/browser/ui/animators/zoom_transition_delegate.h +++ b/ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_ +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_ #import <UIKit/UIKit.h> @@ -13,4 +13,4 @@ - (CGRect)rectForZoomWithKey:(NSObject*)key inView:(UIView*)view; @end -#endif // IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_ +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ANIMATORS_ZOOM_TRANSITION_DELEGATE_H_
diff --git a/ios/clean/chrome/browser/ui/presenters/BUILD.gn b/ios/clean/chrome/browser/ui/transitions/presenters/BUILD.gn similarity index 100% rename from ios/clean/chrome/browser/ui/presenters/BUILD.gn rename to ios/clean/chrome/browser/ui/transitions/presenters/BUILD.gn
diff --git a/ios/clean/chrome/browser/ui/presenters/README.md b/ios/clean/chrome/browser/ui/transitions/presenters/README.md similarity index 100% rename from ios/clean/chrome/browser/ui/presenters/README.md rename to ios/clean/chrome/browser/ui/transitions/presenters/README.md
diff --git a/ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.h b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.h similarity index 80% rename from ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.h rename to ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.h index 258e620..16a497c7 100644 --- a/ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.h +++ b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_ +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_ #import <UIKit/UIKit.h> @@ -25,4 +25,4 @@ @property(nonatomic, weak) id<ToolsMenuCommands> dispatcher; @end -#endif // IOS_CLEAN_CHROME_BROWSER_UI_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_ +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_CONTROLLER_H_
diff --git a/ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.mm b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.mm similarity index 95% rename from ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.mm rename to ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.mm index 40fbaaa..98384627 100644 --- a/ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.mm +++ b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.mm
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.h" #import <QuartzCore/QuartzCore.h> #include "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" -#include "ios/clean/chrome/browser/ui/presenters/menu_presentation_delegate.h" +#include "ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h new file mode 100644 index 0000000..ca854da8 --- /dev/null +++ b/ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_delegate.h
@@ -0,0 +1,20 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_ + +#import <Foundation/Foundation.h> + +// Protocol for an object to assist with menu presentation by providing +// spatial information for the menu. +@protocol MenuPresentationDelegate +// Returns the CGRect in which the Menu presentation will take place. +- (CGRect)boundsForMenuPresentation; +// Returns the origin in the coordinate space of the presenting view +// controller's view, in which the Menu presentation will present from. +- (CGRect)originForMenuPresentation; +@end + +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_PRESENTERS_MENU_PRESENTATION_DELEGATE_H_
diff --git a/ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h b/ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h similarity index 64% rename from ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h rename to ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h index fffd83e8..5839cb6 100644 --- a/ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h +++ b/ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_CONTROLLER_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_CONTROLLER_H_ +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOM_TRANSITION_CONTROLLER_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOM_TRANSITION_CONTROLLER_H_ #import <UIKit/UIKit.h> // Transition delegate object that conforms to the -// UIViewControllerTransitioningDelegate protocol and provides the VC -// with a ZoomAnimator as animator for transitions. +// UIViewControllerTransitioningDelegate protocol and provides a ZoomAnimator as +// animator for transitions. @interface ZoomTransitionController : NSObject<UIViewControllerTransitioningDelegate> @@ -19,4 +19,4 @@ @property(nonatomic, copy) NSObject* presentationKey; @end -#endif // IOS_CLEAN_CHROME_BROWSER_UI_ANIMATORS_ZOOM_TRANSITION_CONTROLLER_H_ +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOM_TRANSITION_CONTROLLER_H_
diff --git a/ios/clean/chrome/browser/ui/animators/zoom_transition_controller.mm b/ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.mm similarity index 87% rename from ios/clean/chrome/browser/ui/animators/zoom_transition_controller.mm rename to ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.mm index 11e377c..71fe761 100644 --- a/ios/clean/chrome/browser/ui/animators/zoom_transition_controller.mm +++ b/ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.mm
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h" -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h" +#import "ios/clean/chrome/browser/ui/transitions/animators/zoom_transition_animator.h" @implementation ZoomTransitionController @synthesize presentationKey = _presentationKey;
diff --git a/ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.h b/ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.h similarity index 63% rename from ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.h rename to ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.h index c1da071..7d3d416d 100644 --- a/ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.h +++ b/ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.h
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TOOLS_TOOLS_MENU_TRANSITION_CONTROLLER_H_ -#define IOS_CLEAN_CHROME_BROWSER_UI_TOOLS_TOOLS_MENU_TRANSITION_CONTROLLER_H_ +#ifndef IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOMING_MENU_TRANSITION_CONTROLLER_H_ +#define IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOMING_MENU_TRANSITION_CONTROLLER_H_ -#import "ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/zoom_transition_controller.h" @protocol ToolsMenuCommands; @@ -14,7 +14,7 @@ // UIViewControllerTransitioningDelegate protocol and provides the ToolsMenuVC // with MenuPresentationController as a UIPresentationController. This object // drives the animation and frame of the presented ToolsMenuVC. -@interface ToolsMenuTransitionController : ZoomTransitionController +@interface ZoomingMenuTransitionController : ZoomTransitionController // A dispatcher is needed in order to close the presented ToolsMenuVC. - (instancetype)initWithDispatcher:(id<ToolsMenuCommands>)dispatcher; @@ -22,4 +22,4 @@ @end -#endif // IOS_CLEAN_CHROME_BROWSER_UI_TOOLS_TOOLS_MENU_TRANSITION_CONTROLLER_H_ +#endif // IOS_CLEAN_CHROME_BROWSER_UI_TRANSITIONS_ZOOMING_MENU_TRANSITION_CONTROLLER_H_
diff --git a/ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.mm b/ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.mm similarity index 74% rename from ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.mm rename to ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.mm index 7956677..bee6326 100644 --- a/ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.mm +++ b/ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.mm
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/clean/chrome/browser/ui/tools/tools_menu_transition_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/zooming_menu_transition_controller.h" -#import "ios/clean/chrome/browser/ui/presenters/menu_presentation_controller.h" +#import "ios/clean/chrome/browser/ui/transitions/presenters/menu_presentation_controller.h" -@interface ToolsMenuTransitionController () +@interface ZoomingMenuTransitionController () @property(nonatomic, weak) id<ToolsMenuCommands> dispatcher; @end -@implementation ToolsMenuTransitionController +@implementation ZoomingMenuTransitionController @synthesize dispatcher = _dispatcher; - (instancetype)initWithDispatcher:(id<ToolsMenuCommands>)dispatcher { @@ -29,7 +29,7 @@ [[MenuPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting]; - menuPresentation.dispatcher = static_cast<id>(self.dispatcher); + menuPresentation.dispatcher = self.dispatcher; return menuPresentation; }
diff --git a/ios/showcase/content_suggestions/sc_content_suggestions_egtest.mm b/ios/showcase/content_suggestions/sc_content_suggestions_egtest.mm index 08a30c1..4ed0b536 100644 --- a/ios/showcase/content_suggestions/sc_content_suggestions_egtest.mm +++ b/ios/showcase/content_suggestions/sc_content_suggestions_egtest.mm
@@ -67,6 +67,8 @@ // Tests launching ContentSuggestionsViewController. - (void)testLaunch { + EARL_GREY_TEST_DISABLED(@"Disabled until it is possible to hide some alerts"); + showcase_utils::Open(@"ContentSuggestionsViewController"); [CellWithMatcher(chrome_test_util::ButtonWithAccessibilityLabelId( IDS_IOS_CONTENT_SUGGESTIONS_FOOTER_TITLE)) @@ -79,6 +81,8 @@ // Tests the opening of a suggestion item by tapping on it. - (void)testOpenItem { + EARL_GREY_TEST_DISABLED(@"Disabled until it is possible to hide some alerts"); + showcase_utils::Open(@"ContentSuggestionsViewController"); [CellWithID([SCContentSuggestionsDataSource titleFirstSuggestion]) performAction:grey_tap()]; @@ -99,6 +103,8 @@ // Tests dismissing an item with swipe-to-dismiss. - (void)testSwipeToDismiss { + EARL_GREY_TEST_DISABLED(@"Disabled until it is possible to hide some alerts"); + showcase_utils::Open(@"ContentSuggestionsViewController"); [CellWithID([SCContentSuggestionsDataSource titleFirstSuggestion]) @@ -124,6 +130,8 @@ // Tests that long pressing an item starts a context menu. - (void)testLongPressItem { + EARL_GREY_TEST_DISABLED(@"Disabled until it is possible to hide some alerts"); + showcase_utils::Open(@"ContentSuggestionsViewController"); [CellWithID([SCContentSuggestionsDataSource titleFirstSuggestion]) performAction:grey_longPress()]; @@ -142,6 +150,8 @@ // Tests that swipe-to-dismiss on empty item does nothing. - (void)testNoSwipeToDismissEmptyItem { + EARL_GREY_TEST_DISABLED(@"Disabled until it is possible to hide some alerts"); + showcase_utils::Open(@"ContentSuggestionsViewController"); [CellWithID([SCContentSuggestionsDataSource titleReadingListItem]) performAction:grey_swipeFastInDirection(kGREYDirectionLeft)];
diff --git a/services/test/echo/BUILD.gn b/services/test/echo/BUILD.gn new file mode 100644 index 0000000..8aa585f --- /dev/null +++ b/services/test/echo/BUILD.gn
@@ -0,0 +1,26 @@ +# 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. + +import("//services/catalog/public/tools/catalog.gni") +import("//services/service_manager/public/cpp/service.gni") +import("//services/service_manager/public/service_manifest.gni") + +source_set("lib") { + sources = [ + "echo_service.cc", + "echo_service.h", + ] + + deps = [ + "//base", + "//services/service_manager/public/cpp", + "//services/service_manager/public/interfaces", + "//services/test/echo/public/interfaces", + ] +} + +service_manifest("manifest") { + name = "echo" + source = "manifest.json" +}
diff --git a/services/test/echo/README.md b/services/test/echo/README.md new file mode 100644 index 0000000..3f2931d --- /dev/null +++ b/services/test/echo/README.md
@@ -0,0 +1 @@ +A simple service that can be used for testing.
diff --git a/services/test/echo/echo_service.cc b/services/test/echo/echo_service.cc new file mode 100644 index 0000000..93973275 --- /dev/null +++ b/services/test/echo/echo_service.cc
@@ -0,0 +1,43 @@ +// 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 "services/test/echo/echo_service.h" + +#include "services/service_manager/public/cpp/service_context.h" + +namespace echo { + +std::unique_ptr<service_manager::Service> CreateEchoService() { + return base::MakeUnique<EchoService>(); +} + +EchoService::EchoService() { + registry_.AddInterface<mojom::Echo>( + base::Bind(&EchoService::BindEchoRequest, base::Unretained(this))); +} + +EchoService::~EchoService() {} + +void EchoService::OnStart() {} + +void EchoService::OnBindInterface( + const service_manager::BindSourceInfo& source_info, + const std::string& interface_name, + mojo::ScopedMessagePipeHandle interface_pipe) { + registry_.BindInterface(source_info, interface_name, + std::move(interface_pipe)); +} + +void EchoService::BindEchoRequest( + const service_manager::BindSourceInfo& source_info, + mojom::EchoRequest request) { + bindings_.AddBinding(this, std::move(request)); +} + +void EchoService::EchoString(const std::string& input, + EchoStringCallback callback) { + std::move(callback).Run(input); +} + +} // namespace echo
diff --git a/services/test/echo/echo_service.h b/services/test/echo/echo_service.h new file mode 100644 index 0000000..90787f0 --- /dev/null +++ b/services/test/echo/echo_service.h
@@ -0,0 +1,44 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SERVICES_ECHO_ECHO_SERVICE_H_ +#define SERVICES_ECHO_ECHO_SERVICE_H_ + +#include "mojo/public/cpp/bindings/binding_set.h" +#include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/service.h" +#include "services/test/echo/public/interfaces/echo.mojom.h" + +namespace echo { + +std::unique_ptr<service_manager::Service> CreateEchoService(); + +class EchoService : public service_manager::Service, public mojom::Echo { + public: + EchoService(); + ~EchoService() override; + + private: + // service_manager::Service: + void OnStart() override; + void OnBindInterface(const service_manager::BindSourceInfo& source_info, + const std::string& interface_name, + mojo::ScopedMessagePipeHandle interface_pipe) override; + + // mojom::Echo: + void EchoString(const std::string& input, + EchoStringCallback callback) override; + + void BindEchoRequest(const service_manager::BindSourceInfo& source_info, + mojom::EchoRequest request); + + service_manager::BinderRegistry registry_; + mojo::BindingSet<mojom::Echo> bindings_; + + DISALLOW_COPY_AND_ASSIGN(EchoService); +}; + +} // namespace echo + +#endif // SERVICES_ECHO_ECHO_SERVICE_H_
diff --git a/services/test/echo/manifest.json b/services/test/echo/manifest.json new file mode 100644 index 0000000..904809a7 --- /dev/null +++ b/services/test/echo/manifest.json
@@ -0,0 +1,14 @@ +{ + "name": "echo", + "display_name": "Echo Service", + "interface_provider_specs": { + "service_manager:connector": { + "provides": { + "echo" : [ "echo::mojom::Echo" ] + }, + "requires": { + "service_manager": [ "service_manager:all_users" ] + } + } + } +}
diff --git a/services/test/echo/public/interfaces/BUILD.gn b/services/test/echo/public/interfaces/BUILD.gn new file mode 100644 index 0000000..d50f842 --- /dev/null +++ b/services/test/echo/public/interfaces/BUILD.gn
@@ -0,0 +1,11 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//mojo/public/tools/bindings/mojom.gni") + +mojom("interfaces") { + sources = [ + "echo.mojom", + ] +}
diff --git a/services/test/echo/public/interfaces/OWNERS b/services/test/echo/public/interfaces/OWNERS new file mode 100644 index 0000000..08850f4 --- /dev/null +++ b/services/test/echo/public/interfaces/OWNERS
@@ -0,0 +1,2 @@ +per-file *.mojom=set noparent +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/services/test/echo/public/interfaces/echo.mojom b/services/test/echo/public/interfaces/echo.mojom new file mode 100644 index 0000000..7ee057e9 --- /dev/null +++ b/services/test/echo/public/interfaces/echo.mojom
@@ -0,0 +1,11 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module echo.mojom; + +// Echos its input. +interface Echo { + // Echos the passed-in string. + EchoString(string input) => (string echoed_input); +};
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 7b94ee7..b8d5041 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -19,6 +19,21 @@ ] } ], + "AmpBackgroundTab": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "AmpBackgroundTab", + "enable_features": [ + "CCTBackgroundTab" + ] + } + ] + } + ], "AndroidAIAFetching": [ { "platforms": [
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG index 2b283d7f..452e975c 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -4744,11 +4744,6 @@ crbug.com/591099 external/wpt/css/css-shapes-1/spec-examples/shape-outside-017.html [ Failure ] crbug.com/591099 external/wpt/css/css-shapes-1/spec-examples/shape-outside-018.html [ Failure ] crbug.com/591099 external/wpt/css/css-shapes-1/spec-examples/shape-outside-019.html [ Failure ] -crbug.com/591099 external/wpt/css/css-text-3/overflow-wrap/overflow-wrap-001.html [ Failure Pass ] -crbug.com/591099 external/wpt/css/css-text-3/overflow-wrap/overflow-wrap-002.html [ Failure Pass ] -crbug.com/591099 external/wpt/css/css-text-3/overflow-wrap/overflow-wrap-break-word-001.html [ Failure Pass ] -crbug.com/591099 external/wpt/css/css-text-3/overflow-wrap/word-wrap-001.html [ Failure Pass ] -crbug.com/591099 external/wpt/css/css-text-3/overflow-wrap/word-wrap-002.html [ Failure Pass ] crbug.com/591099 external/wpt/css/css-text-decor-3/text-emphasis-color-001.xht [ Crash Failure ] crbug.com/591099 external/wpt/css/css-text-decor-3/text-emphasis-position-above-left-002.xht [ Crash Failure ] crbug.com/591099 external/wpt/css/css-text-decor-3/text-emphasis-position-above-right-002.xht [ Crash Failure ] @@ -15325,7 +15320,6 @@ crbug.com/591099 http/tests/security/contentSecurityPolicy/cascade/cross-origin.html [ Crash ] crbug.com/591099 http/tests/security/contentSecurityPolicy/cascade/same-origin-with-own-policy.html [ Crash ] crbug.com/591099 http/tests/security/contentSecurityPolicy/cascade/same-origin.html [ Crash ] -crbug.com/591099 http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked.html [ Failure ] crbug.com/591099 http/tests/security/contentSecurityPolicy/directive-parsing-01.html [ Failure ] crbug.com/591099 http/tests/security/contentSecurityPolicy/directive-parsing-02.html [ Failure ] crbug.com/591099 http/tests/security/contentSecurityPolicy/directive-parsing-03.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index d414b9d..0120e10 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1651,9 +1651,6 @@ crbug.com/399951 http/tests/mime/javascript-mimetype-usecounters.html [ Pass Failure ] crbug.com/399951 virtual/mojo-loading/http/tests/mime/javascript-mimetype-usecounters.html [ Pass Failure ] -crbug.com/579493 http/tests/security/xss-DENIED-xsl-document-securityOrigin.xml [ Timeout ] -crbug.com/579493 virtual/mojo-loading/http/tests/security/xss-DENIED-xsl-document-securityOrigin.xml [ Timeout ] - crbug.com/572723 inspector/sources/debugger/debugger-uncaught-promise-on-pause.html [ Timeout Pass ] crbug.com/594672 fast/events/iframe-object-onload.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/W3CImportExpectations b/third_party/WebKit/LayoutTests/W3CImportExpectations index fdaf7fcb..ae1ecbd 100644 --- a/third_party/WebKit/LayoutTests/W3CImportExpectations +++ b/third_party/WebKit/LayoutTests/W3CImportExpectations
@@ -436,8 +436,6 @@ external/wpt/common/vendor-prefix.js [ Skip ] # crbug.com/490939: The following tests are too large. They cause time out frequently. -# Also, html/dom/interfaces.html is flaky. -external/wpt/html/dom/interfaces.html [ Skip ] # [ Slow ] didn't help the following svg-in-*.html tests. external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-auto.html [ Skip ] external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-fixed.html [ Skip ]
diff --git a/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash-expected.txt b/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash-expected.txt new file mode 100644 index 0000000..654ddf7f --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash-expected.txt
@@ -0,0 +1 @@ +This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash.html b/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash.html new file mode 100644 index 0000000..e411077 --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/keyframeeffect-no-target-crash.html
@@ -0,0 +1,16 @@ +<div id="target">This test passes if it does not crash.</div> +<script> + let effect = new KeyframeEffect(null, null, {duration: 1000}); + let animation = new Animation(effect); + + if (window.testRunner) { + testRunner.waitUntilDone(); + testRunner.dumpAsText(); + requestAnimationFrame(function() { + testRunner.notifyDone(); + }); + } +</script> +<style> +@keyframes frame { } +</style>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html index df80cbb..c7f7e38 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html +++ b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html
@@ -13,4 +13,15 @@ assert_true(navigator.sendBeacon("http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt")); }, "sendBeacon should not throw."); + + async_test(t => { + document.addEventListener("securitypolicyviolation", t.step_func_done(e => { + if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") + return; + + assert_equals(e.violatedDirective, "connect-src"); + })); + + assert_true(navigator.sendBeacon("common/redirect-opt-in.py?status=307&location=http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt")); + }, "redirect case"); </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces-expected.txt new file mode 100644 index 0000000..286de04 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces-expected.txt
@@ -0,0 +1,5197 @@ +This is a testharness.js-based test. +Found 5187 tests; 4980 PASS, 207 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Test driver +PASS Document interface: attribute domain +PASS Document interface: attribute referrer +PASS Document interface: attribute cookie +PASS Document interface: attribute lastModified +PASS Document interface: attribute readyState +PASS Document interface: attribute title +PASS Document interface: attribute dir +PASS Document interface: attribute body +PASS Document interface: attribute head +PASS Document interface: attribute images +PASS Document interface: attribute embeds +PASS Document interface: attribute plugins +PASS Document interface: attribute links +PASS Document interface: attribute forms +PASS Document interface: attribute scripts +PASS Document interface: operation getElementsByName(DOMString) +PASS Document interface: attribute currentScript +PASS Document interface: operation open(DOMString,DOMString) +PASS Document interface: operation open(USVString,DOMString,DOMString) +PASS Document interface: operation close() +PASS Document interface: operation write(DOMString) +PASS Document interface: operation writeln(DOMString) +PASS Document interface: attribute defaultView +PASS Document interface: attribute activeElement +PASS Document interface: operation hasFocus() +PASS Document interface: attribute designMode +PASS Document interface: operation execCommand(DOMString,boolean,DOMString) +PASS Document interface: operation queryCommandEnabled(DOMString) +PASS Document interface: operation queryCommandIndeterm(DOMString) +PASS Document interface: operation queryCommandState(DOMString) +PASS Document interface: operation queryCommandSupported(DOMString) +PASS Document interface: operation queryCommandValue(DOMString) +PASS Document interface: attribute onreadystatechange +FAIL Document interface: attribute fgColor assert_true: The prototype object must have a property "fgColor" expected true got false +FAIL Document interface: attribute linkColor assert_true: The prototype object must have a property "linkColor" expected true got false +FAIL Document interface: attribute vlinkColor assert_true: The prototype object must have a property "vlinkColor" expected true got false +FAIL Document interface: attribute alinkColor assert_true: The prototype object must have a property "alinkColor" expected true got false +FAIL Document interface: attribute bgColor assert_true: The prototype object must have a property "bgColor" expected true got false +PASS Document interface: attribute anchors +PASS Document interface: attribute applets +FAIL Document interface: operation clear() assert_own_property: interface prototype object missing non-static operation expected property "clear" missing +FAIL Document interface: operation captureEvents() assert_own_property: interface prototype object missing non-static operation expected property "captureEvents" missing +FAIL Document interface: operation releaseEvents() assert_own_property: interface prototype object missing non-static operation expected property "releaseEvents" missing +FAIL Document interface: attribute all assert_true: The prototype object must have a property "all" expected true got false +PASS Document interface: attribute onabort +PASS Document interface: attribute onauxclick +PASS Document interface: attribute onblur +PASS Document interface: attribute oncancel +PASS Document interface: attribute oncanplay +PASS Document interface: attribute oncanplaythrough +PASS Document interface: attribute onchange +PASS Document interface: attribute onclick +PASS Document interface: attribute onclose +PASS Document interface: attribute oncontextmenu +PASS Document interface: attribute oncuechange +PASS Document interface: attribute ondblclick +PASS Document interface: attribute ondrag +PASS Document interface: attribute ondragend +PASS Document interface: attribute ondragenter +FAIL Document interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false +PASS Document interface: attribute ondragleave +PASS Document interface: attribute ondragover +PASS Document interface: attribute ondragstart +PASS Document interface: attribute ondrop +PASS Document interface: attribute ondurationchange +PASS Document interface: attribute onemptied +PASS Document interface: attribute onended +PASS Document interface: attribute onerror +PASS Document interface: attribute onfocus +PASS Document interface: attribute oninput +PASS Document interface: attribute oninvalid +PASS Document interface: attribute onkeydown +PASS Document interface: attribute onkeypress +PASS Document interface: attribute onkeyup +PASS Document interface: attribute onload +PASS Document interface: attribute onloadeddata +PASS Document interface: attribute onloadedmetadata +FAIL Document interface: attribute onloadend assert_true: The prototype object must have a property "onloadend" expected true got false +PASS Document interface: attribute onloadstart +PASS Document interface: attribute onmousedown +PASS Document interface: attribute onmouseenter +PASS Document interface: attribute onmouseleave +PASS Document interface: attribute onmousemove +PASS Document interface: attribute onmouseout +PASS Document interface: attribute onmouseover +PASS Document interface: attribute onmouseup +PASS Document interface: attribute onwheel +PASS Document interface: attribute onpause +PASS Document interface: attribute onplay +PASS Document interface: attribute onplaying +PASS Document interface: attribute onprogress +PASS Document interface: attribute onratechange +PASS Document interface: attribute onreset +PASS Document interface: attribute onresize +PASS Document interface: attribute onscroll +PASS Document interface: attribute onseeked +PASS Document interface: attribute onseeking +PASS Document interface: attribute onselect +PASS Document interface: attribute onstalled +PASS Document interface: attribute onsubmit +PASS Document interface: attribute onsuspend +PASS Document interface: attribute ontimeupdate +PASS Document interface: attribute ontoggle +PASS Document interface: attribute onvolumechange +PASS Document interface: attribute onwaiting +PASS Document interface: attribute oncopy +PASS Document interface: attribute oncut +PASS Document interface: attribute onpaste +PASS Document interface: iframe.contentDocument must have own property "location" +PASS Document interface: iframe.contentDocument must inherit property "domain" with the proper type (31) +PASS Document interface: iframe.contentDocument must inherit property "referrer" with the proper type (32) +PASS Document interface: iframe.contentDocument must inherit property "cookie" with the proper type (33) +PASS Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type (34) +PASS Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (35) +PASS Document interface: iframe.contentDocument must inherit property "title" with the proper type (37) +PASS Document interface: iframe.contentDocument must inherit property "dir" with the proper type (38) +PASS Document interface: iframe.contentDocument must inherit property "body" with the proper type (39) +PASS Document interface: iframe.contentDocument must inherit property "head" with the proper type (40) +PASS Document interface: iframe.contentDocument must inherit property "images" with the proper type (41) +PASS Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (42) +PASS Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (43) +PASS Document interface: iframe.contentDocument must inherit property "links" with the proper type (44) +PASS Document interface: iframe.contentDocument must inherit property "forms" with the proper type (45) +PASS Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (46) +PASS Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (47) +PASS Document interface: calling getElementsByName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "currentScript" with the proper type (48) +PASS Document interface: iframe.contentDocument must inherit property "open" with the proper type (49) +PASS Document interface: calling open(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "open" with the proper type (50) +PASS Document interface: calling open(USVString,DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "close" with the proper type (51) +PASS Document interface: iframe.contentDocument must inherit property "write" with the proper type (52) +PASS Document interface: calling write(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "writeln" with the proper type (53) +PASS Document interface: calling writeln(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type (54) +PASS Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type (55) +PASS Document interface: iframe.contentDocument must inherit property "hasFocus" with the proper type (56) +PASS Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (57) +PASS Document interface: iframe.contentDocument must inherit property "execCommand" with the proper type (58) +PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandEnabled" with the proper type (59) +PASS Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm" with the proper type (60) +PASS Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandState" with the proper type (61) +PASS Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandSupported" with the proper type (62) +PASS Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandValue" with the proper type (63) +PASS Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (64) +PASS Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (65) +PASS Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (66) +PASS Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (67) +PASS Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (68) +PASS Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (69) +PASS Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (70) +PASS Document interface: iframe.contentDocument must inherit property "applets" with the proper type (71) +PASS Document interface: iframe.contentDocument must inherit property "clear" with the proper type (72) +PASS Document interface: iframe.contentDocument must inherit property "captureEvents" with the proper type (73) +PASS Document interface: iframe.contentDocument must inherit property "releaseEvents" with the proper type (74) +FAIL Document interface: iframe.contentDocument must inherit property "all" with the proper type (75) assert_in_array: wrong type: not object or function value "undefined" not in array ["object", "function"] +PASS Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (85) +PASS Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type (86) +PASS Document interface: iframe.contentDocument must inherit property "onblur" with the proper type (87) +PASS Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type (88) +PASS Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type (89) +PASS Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type (90) +PASS Document interface: iframe.contentDocument must inherit property "onchange" with the proper type (91) +PASS Document interface: iframe.contentDocument must inherit property "onclick" with the proper type (92) +PASS Document interface: iframe.contentDocument must inherit property "onclose" with the proper type (93) +PASS Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type (94) +PASS Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type (95) +PASS Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type (96) +PASS Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type (97) +PASS Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type (98) +PASS Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type (99) +FAIL Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type (100) assert_inherits: property "ondragexit" not found in prototype chain +PASS Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type (101) +PASS Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type (102) +PASS Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type (103) +PASS Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type (104) +PASS Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type (105) +PASS Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type (106) +PASS Document interface: iframe.contentDocument must inherit property "onended" with the proper type (107) +PASS Document interface: iframe.contentDocument must inherit property "onerror" with the proper type (108) +PASS Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type (109) +PASS Document interface: iframe.contentDocument must inherit property "oninput" with the proper type (110) +PASS Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type (111) +PASS Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type (112) +PASS Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type (113) +PASS Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type (114) +PASS Document interface: iframe.contentDocument must inherit property "onload" with the proper type (115) +PASS Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type (116) +PASS Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type (117) +FAIL Document interface: iframe.contentDocument must inherit property "onloadend" with the proper type (118) assert_inherits: property "onloadend" not found in prototype chain +PASS Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type (119) +PASS Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type (120) +PASS Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type (121) +PASS Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type (122) +PASS Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type (123) +PASS Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type (124) +PASS Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type (125) +PASS Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type (126) +PASS Document interface: iframe.contentDocument must inherit property "onwheel" with the proper type (127) +PASS Document interface: iframe.contentDocument must inherit property "onpause" with the proper type (128) +PASS Document interface: iframe.contentDocument must inherit property "onplay" with the proper type (129) +PASS Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type (130) +PASS Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type (131) +PASS Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type (132) +PASS Document interface: iframe.contentDocument must inherit property "onreset" with the proper type (133) +PASS Document interface: iframe.contentDocument must inherit property "onresize" with the proper type (134) +PASS Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type (135) +PASS Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type (136) +PASS Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type (137) +PASS Document interface: iframe.contentDocument must inherit property "onselect" with the proper type (138) +PASS Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type (139) +PASS Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type (140) +PASS Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type (141) +PASS Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type (142) +PASS Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type (143) +PASS Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type (144) +PASS Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (145) +PASS Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type (146) +PASS Document interface: iframe.contentDocument must inherit property "oncut" with the proper type (147) +PASS Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type (148) +PASS Document interface: new Document() must have own property "location" +PASS Document interface: new Document() must inherit property "domain" with the proper type (31) +PASS Document interface: new Document() must inherit property "referrer" with the proper type (32) +PASS Document interface: new Document() must inherit property "cookie" with the proper type (33) +PASS Document interface: new Document() must inherit property "lastModified" with the proper type (34) +PASS Document interface: new Document() must inherit property "readyState" with the proper type (35) +PASS Document interface: new Document() must inherit property "title" with the proper type (37) +PASS Document interface: new Document() must inherit property "dir" with the proper type (38) +PASS Document interface: new Document() must inherit property "body" with the proper type (39) +PASS Document interface: new Document() must inherit property "head" with the proper type (40) +PASS Document interface: new Document() must inherit property "images" with the proper type (41) +PASS Document interface: new Document() must inherit property "embeds" with the proper type (42) +PASS Document interface: new Document() must inherit property "plugins" with the proper type (43) +PASS Document interface: new Document() must inherit property "links" with the proper type (44) +PASS Document interface: new Document() must inherit property "forms" with the proper type (45) +PASS Document interface: new Document() must inherit property "scripts" with the proper type (46) +PASS Document interface: new Document() must inherit property "getElementsByName" with the proper type (47) +PASS Document interface: calling getElementsByName(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "currentScript" with the proper type (48) +PASS Document interface: new Document() must inherit property "open" with the proper type (49) +PASS Document interface: calling open(DOMString,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "open" with the proper type (50) +PASS Document interface: calling open(USVString,DOMString,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "close" with the proper type (51) +PASS Document interface: new Document() must inherit property "write" with the proper type (52) +PASS Document interface: calling write(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "writeln" with the proper type (53) +PASS Document interface: calling writeln(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "defaultView" with the proper type (54) +PASS Document interface: new Document() must inherit property "activeElement" with the proper type (55) +PASS Document interface: new Document() must inherit property "hasFocus" with the proper type (56) +PASS Document interface: new Document() must inherit property "designMode" with the proper type (57) +PASS Document interface: new Document() must inherit property "execCommand" with the proper type (58) +PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (59) +PASS Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (60) +PASS Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandState" with the proper type (61) +PASS Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (62) +PASS Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandValue" with the proper type (63) +PASS Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "onreadystatechange" with the proper type (64) +FAIL Document interface: new Document() must inherit property "fgColor" with the proper type (65) assert_inherits: property "fgColor" not found in prototype chain +FAIL Document interface: new Document() must inherit property "linkColor" with the proper type (66) assert_inherits: property "linkColor" not found in prototype chain +FAIL Document interface: new Document() must inherit property "vlinkColor" with the proper type (67) assert_inherits: property "vlinkColor" not found in prototype chain +FAIL Document interface: new Document() must inherit property "alinkColor" with the proper type (68) assert_inherits: property "alinkColor" not found in prototype chain +FAIL Document interface: new Document() must inherit property "bgColor" with the proper type (69) assert_inherits: property "bgColor" not found in prototype chain +PASS Document interface: new Document() must inherit property "anchors" with the proper type (70) +PASS Document interface: new Document() must inherit property "applets" with the proper type (71) +FAIL Document interface: new Document() must inherit property "clear" with the proper type (72) assert_inherits: property "clear" not found in prototype chain +FAIL Document interface: new Document() must inherit property "captureEvents" with the proper type (73) assert_inherits: property "captureEvents" not found in prototype chain +FAIL Document interface: new Document() must inherit property "releaseEvents" with the proper type (74) assert_inherits: property "releaseEvents" not found in prototype chain +FAIL Document interface: new Document() must inherit property "all" with the proper type (75) assert_inherits: property "all" not found in prototype chain +PASS Document interface: new Document() must inherit property "onabort" with the proper type (85) +PASS Document interface: new Document() must inherit property "onauxclick" with the proper type (86) +PASS Document interface: new Document() must inherit property "onblur" with the proper type (87) +PASS Document interface: new Document() must inherit property "oncancel" with the proper type (88) +PASS Document interface: new Document() must inherit property "oncanplay" with the proper type (89) +PASS Document interface: new Document() must inherit property "oncanplaythrough" with the proper type (90) +PASS Document interface: new Document() must inherit property "onchange" with the proper type (91) +PASS Document interface: new Document() must inherit property "onclick" with the proper type (92) +PASS Document interface: new Document() must inherit property "onclose" with the proper type (93) +PASS Document interface: new Document() must inherit property "oncontextmenu" with the proper type (94) +PASS Document interface: new Document() must inherit property "oncuechange" with the proper type (95) +PASS Document interface: new Document() must inherit property "ondblclick" with the proper type (96) +PASS Document interface: new Document() must inherit property "ondrag" with the proper type (97) +PASS Document interface: new Document() must inherit property "ondragend" with the proper type (98) +PASS Document interface: new Document() must inherit property "ondragenter" with the proper type (99) +FAIL Document interface: new Document() must inherit property "ondragexit" with the proper type (100) assert_inherits: property "ondragexit" not found in prototype chain +PASS Document interface: new Document() must inherit property "ondragleave" with the proper type (101) +PASS Document interface: new Document() must inherit property "ondragover" with the proper type (102) +PASS Document interface: new Document() must inherit property "ondragstart" with the proper type (103) +PASS Document interface: new Document() must inherit property "ondrop" with the proper type (104) +PASS Document interface: new Document() must inherit property "ondurationchange" with the proper type (105) +PASS Document interface: new Document() must inherit property "onemptied" with the proper type (106) +PASS Document interface: new Document() must inherit property "onended" with the proper type (107) +PASS Document interface: new Document() must inherit property "onerror" with the proper type (108) +PASS Document interface: new Document() must inherit property "onfocus" with the proper type (109) +PASS Document interface: new Document() must inherit property "oninput" with the proper type (110) +PASS Document interface: new Document() must inherit property "oninvalid" with the proper type (111) +PASS Document interface: new Document() must inherit property "onkeydown" with the proper type (112) +PASS Document interface: new Document() must inherit property "onkeypress" with the proper type (113) +PASS Document interface: new Document() must inherit property "onkeyup" with the proper type (114) +PASS Document interface: new Document() must inherit property "onload" with the proper type (115) +PASS Document interface: new Document() must inherit property "onloadeddata" with the proper type (116) +PASS Document interface: new Document() must inherit property "onloadedmetadata" with the proper type (117) +FAIL Document interface: new Document() must inherit property "onloadend" with the proper type (118) assert_inherits: property "onloadend" not found in prototype chain +PASS Document interface: new Document() must inherit property "onloadstart" with the proper type (119) +PASS Document interface: new Document() must inherit property "onmousedown" with the proper type (120) +PASS Document interface: new Document() must inherit property "onmouseenter" with the proper type (121) +PASS Document interface: new Document() must inherit property "onmouseleave" with the proper type (122) +PASS Document interface: new Document() must inherit property "onmousemove" with the proper type (123) +PASS Document interface: new Document() must inherit property "onmouseout" with the proper type (124) +PASS Document interface: new Document() must inherit property "onmouseover" with the proper type (125) +PASS Document interface: new Document() must inherit property "onmouseup" with the proper type (126) +PASS Document interface: new Document() must inherit property "onwheel" with the proper type (127) +PASS Document interface: new Document() must inherit property "onpause" with the proper type (128) +PASS Document interface: new Document() must inherit property "onplay" with the proper type (129) +PASS Document interface: new Document() must inherit property "onplaying" with the proper type (130) +PASS Document interface: new Document() must inherit property "onprogress" with the proper type (131) +PASS Document interface: new Document() must inherit property "onratechange" with the proper type (132) +PASS Document interface: new Document() must inherit property "onreset" with the proper type (133) +PASS Document interface: new Document() must inherit property "onresize" with the proper type (134) +PASS Document interface: new Document() must inherit property "onscroll" with the proper type (135) +PASS Document interface: new Document() must inherit property "onseeked" with the proper type (136) +PASS Document interface: new Document() must inherit property "onseeking" with the proper type (137) +PASS Document interface: new Document() must inherit property "onselect" with the proper type (138) +PASS Document interface: new Document() must inherit property "onstalled" with the proper type (139) +PASS Document interface: new Document() must inherit property "onsubmit" with the proper type (140) +PASS Document interface: new Document() must inherit property "onsuspend" with the proper type (141) +PASS Document interface: new Document() must inherit property "ontimeupdate" with the proper type (142) +PASS Document interface: new Document() must inherit property "ontoggle" with the proper type (143) +PASS Document interface: new Document() must inherit property "onvolumechange" with the proper type (144) +PASS Document interface: new Document() must inherit property "onwaiting" with the proper type (145) +PASS Document interface: new Document() must inherit property "oncopy" with the proper type (146) +PASS Document interface: new Document() must inherit property "oncut" with the proper type (147) +PASS Document interface: new Document() must inherit property "onpaste" with the proper type (148) +PASS Document interface: document.implementation.createDocument(null, "", null) must have own property "location" +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "domain" with the proper type (31) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "referrer" with the proper type (32) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "cookie" with the proper type (33) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "lastModified" with the proper type (34) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "readyState" with the proper type (35) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "title" with the proper type (37) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (38) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "body" with the proper type (39) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "head" with the proper type (40) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "images" with the proper type (41) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "embeds" with the proper type (42) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "plugins" with the proper type (43) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "links" with the proper type (44) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "forms" with the proper type (45) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "scripts" with the proper type (46) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "getElementsByName" with the proper type (47) +PASS Document interface: calling getElementsByName(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "currentScript" with the proper type (48) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "open" with the proper type (49) +PASS Document interface: calling open(DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "open" with the proper type (50) +PASS Document interface: calling open(USVString,DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "close" with the proper type (51) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "write" with the proper type (52) +PASS Document interface: calling write(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "writeln" with the proper type (53) +PASS Document interface: calling writeln(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "defaultView" with the proper type (54) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "activeElement" with the proper type (55) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "hasFocus" with the proper type (56) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type (57) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand" with the proper type (58) +PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandEnabled" with the proper type (59) +PASS Document interface: calling queryCommandEnabled(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandIndeterm" with the proper type (60) +PASS Document interface: calling queryCommandIndeterm(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandState" with the proper type (61) +PASS Document interface: calling queryCommandState(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandSupported" with the proper type (62) +PASS Document interface: calling queryCommandSupported(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandValue" with the proper type (63) +PASS Document interface: calling queryCommandValue(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onreadystatechange" with the proper type (64) +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "fgColor" with the proper type (65) assert_inherits: property "fgColor" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (66) assert_inherits: property "linkColor" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type (67) assert_inherits: property "vlinkColor" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type (68) assert_inherits: property "alinkColor" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "bgColor" with the proper type (69) assert_inherits: property "bgColor" not found in prototype chain +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "anchors" with the proper type (70) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "applets" with the proper type (71) +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "clear" with the proper type (72) assert_inherits: property "clear" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "captureEvents" with the proper type (73) assert_inherits: property "captureEvents" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "releaseEvents" with the proper type (74) assert_inherits: property "releaseEvents" not found in prototype chain +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (75) assert_inherits: property "all" not found in prototype chain +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onabort" with the proper type (85) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type (86) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onblur" with the proper type (87) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncancel" with the proper type (88) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncanplay" with the proper type (89) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncanplaythrough" with the proper type (90) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onchange" with the proper type (91) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onclick" with the proper type (92) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onclose" with the proper type (93) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncontextmenu" with the proper type (94) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncuechange" with the proper type (95) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondblclick" with the proper type (96) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondrag" with the proper type (97) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragend" with the proper type (98) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragenter" with the proper type (99) +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragexit" with the proper type (100) assert_inherits: property "ondragexit" not found in prototype chain +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragleave" with the proper type (101) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragover" with the proper type (102) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondragstart" with the proper type (103) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondrop" with the proper type (104) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ondurationchange" with the proper type (105) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onemptied" with the proper type (106) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onended" with the proper type (107) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onerror" with the proper type (108) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onfocus" with the proper type (109) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oninput" with the proper type (110) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oninvalid" with the proper type (111) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onkeydown" with the proper type (112) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onkeypress" with the proper type (113) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onkeyup" with the proper type (114) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onload" with the proper type (115) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadeddata" with the proper type (116) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadedmetadata" with the proper type (117) +FAIL Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadend" with the proper type (118) assert_inherits: property "onloadend" not found in prototype chain +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadstart" with the proper type (119) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousedown" with the proper type (120) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmouseenter" with the proper type (121) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmouseleave" with the proper type (122) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousemove" with the proper type (123) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmouseout" with the proper type (124) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmouseover" with the proper type (125) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmouseup" with the proper type (126) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onwheel" with the proper type (127) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onpause" with the proper type (128) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onplay" with the proper type (129) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onplaying" with the proper type (130) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onprogress" with the proper type (131) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onratechange" with the proper type (132) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onreset" with the proper type (133) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onresize" with the proper type (134) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onscroll" with the proper type (135) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onseeked" with the proper type (136) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onseeking" with the proper type (137) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onselect" with the proper type (138) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onstalled" with the proper type (139) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsubmit" with the proper type (140) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsuspend" with the proper type (141) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ontimeupdate" with the proper type (142) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "ontoggle" with the proper type (143) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onvolumechange" with the proper type (144) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onwaiting" with the proper type (145) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncopy" with the proper type (146) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "oncut" with the proper type (147) +PASS Document interface: document.implementation.createDocument(null, "", null) must inherit property "onpaste" with the proper type (148) +PASS Touch interface: attribute region +PASS MouseEvent interface: attribute region +PASS HTMLAllCollection interface: existence and properties of interface object +PASS HTMLAllCollection interface object length +PASS HTMLAllCollection interface object name +PASS HTMLAllCollection interface: existence and properties of interface prototype object +PASS HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLAllCollection interface: attribute length +FAIL HTMLAllCollection interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0 +FAIL HTMLAllCollection interface: operation item(DOMString) assert_equals: property has wrong .length expected 1 but got 0 +PASS HTMLAllCollection interface: operation namedItem(DOMString) +FAIL HTMLAllCollection must be primary interface of document.all assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL Stringification of document.all assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: document.all must inherit property "length" with the proper type (0) assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: document.all must inherit property "item" with the proper type (1) assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: calling item(unsigned long) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: document.all must inherit property "item" with the proper type (2) assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: document.all must inherit property "namedItem" with the proper type (3) assert_equals: wrong typeof object expected "function" but got "undefined" +FAIL HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError assert_equals: wrong typeof object expected "function" but got "undefined" +PASS HTMLFormControlsCollection interface: existence and properties of interface object +PASS HTMLFormControlsCollection interface object length +PASS HTMLFormControlsCollection interface object name +PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object +PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFormControlsCollection interface: operation namedItem(DOMString) +PASS HTMLFormControlsCollection must be primary interface of document.createElement("form").elements +PASS Stringification of document.createElement("form").elements +PASS HTMLFormControlsCollection interface: document.createElement("form").elements must inherit property "namedItem" with the proper type (0) +PASS HTMLFormControlsCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError +PASS RadioNodeList interface: existence and properties of interface object +PASS RadioNodeList interface object length +PASS RadioNodeList interface object name +PASS RadioNodeList interface: existence and properties of interface prototype object +PASS RadioNodeList interface: existence and properties of interface prototype object's "constructor" property +PASS RadioNodeList interface: attribute value +PASS HTMLOptionsCollection interface: existence and properties of interface object +PASS HTMLOptionsCollection interface object length +PASS HTMLOptionsCollection interface object name +PASS HTMLOptionsCollection interface: existence and properties of interface prototype object +PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLOptionsCollection interface: attribute length +PASS HTMLOptionsCollection interface: operation add([object Object],[object Object],[object Object],[object Object]) +PASS HTMLOptionsCollection interface: operation remove(long) +PASS HTMLOptionsCollection interface: attribute selectedIndex +PASS HTMLOptionsCollection must be primary interface of document.createElement("select").options +PASS Stringification of document.createElement("select").options +PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type (0) +PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add" with the proper type (2) +PASS HTMLOptionsCollection interface: calling add([object Object],[object Object],[object Object],[object Object]) on document.createElement("select").options with too few arguments must throw TypeError +PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove" with the proper type (3) +PASS HTMLOptionsCollection interface: calling remove(long) on document.createElement("select").options with too few arguments must throw TypeError +PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "selectedIndex" with the proper type (4) +PASS DOMStringMap interface: existence and properties of interface object +PASS DOMStringMap interface object length +PASS DOMStringMap interface object name +PASS DOMStringMap interface: existence and properties of interface prototype object +PASS DOMStringMap interface: existence and properties of interface prototype object's "constructor" property +PASS DOMStringMap must be primary interface of document.head.dataset +PASS Stringification of document.head.dataset +PASS HTMLElement interface: existence and properties of interface object +PASS HTMLElement interface object length +PASS HTMLElement interface object name +PASS HTMLElement interface: existence and properties of interface prototype object +PASS HTMLElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLElement interface: attribute title +PASS HTMLElement interface: attribute lang +PASS HTMLElement interface: attribute translate +PASS HTMLElement interface: attribute dir +PASS HTMLElement interface: attribute dataset +PASS HTMLElement interface: attribute hidden +PASS HTMLElement interface: operation click() +PASS HTMLElement interface: attribute tabIndex +PASS HTMLElement interface: operation focus() +PASS HTMLElement interface: operation blur() +PASS HTMLElement interface: attribute accessKey +FAIL HTMLElement interface: attribute accessKeyLabel assert_true: The prototype object must have a property "accessKeyLabel" expected true got false +PASS HTMLElement interface: attribute draggable +PASS HTMLElement interface: attribute spellcheck +FAIL HTMLElement interface: operation forceSpellCheck() assert_own_property: interface prototype object missing non-static operation expected property "forceSpellCheck" missing +PASS HTMLElement interface: attribute innerText +PASS HTMLElement interface: attribute onabort +PASS HTMLElement interface: attribute onauxclick +PASS HTMLElement interface: attribute onblur +PASS HTMLElement interface: attribute oncancel +PASS HTMLElement interface: attribute oncanplay +PASS HTMLElement interface: attribute oncanplaythrough +PASS HTMLElement interface: attribute onchange +PASS HTMLElement interface: attribute onclick +PASS HTMLElement interface: attribute onclose +PASS HTMLElement interface: attribute oncontextmenu +PASS HTMLElement interface: attribute oncuechange +PASS HTMLElement interface: attribute ondblclick +PASS HTMLElement interface: attribute ondrag +PASS HTMLElement interface: attribute ondragend +PASS HTMLElement interface: attribute ondragenter +FAIL HTMLElement interface: attribute ondragexit assert_true: The prototype object must have a property "ondragexit" expected true got false +PASS HTMLElement interface: attribute ondragleave +PASS HTMLElement interface: attribute ondragover +PASS HTMLElement interface: attribute ondragstart +PASS HTMLElement interface: attribute ondrop +PASS HTMLElement interface: attribute ondurationchange +PASS HTMLElement interface: attribute onemptied +PASS HTMLElement interface: attribute onended +PASS HTMLElement interface: attribute onerror +PASS HTMLElement interface: attribute onfocus +PASS HTMLElement interface: attribute oninput +PASS HTMLElement interface: attribute oninvalid +PASS HTMLElement interface: attribute onkeydown +PASS HTMLElement interface: attribute onkeypress +PASS HTMLElement interface: attribute onkeyup +PASS HTMLElement interface: attribute onload +PASS HTMLElement interface: attribute onloadeddata +PASS HTMLElement interface: attribute onloadedmetadata +FAIL HTMLElement interface: attribute onloadend assert_true: The prototype object must have a property "onloadend" expected true got false +PASS HTMLElement interface: attribute onloadstart +PASS HTMLElement interface: attribute onmousedown +PASS HTMLElement interface: attribute onmouseenter +PASS HTMLElement interface: attribute onmouseleave +PASS HTMLElement interface: attribute onmousemove +PASS HTMLElement interface: attribute onmouseout +PASS HTMLElement interface: attribute onmouseover +PASS HTMLElement interface: attribute onmouseup +FAIL HTMLElement interface: attribute onwheel assert_own_property: expected property "onwheel" missing +PASS HTMLElement interface: attribute onpause +PASS HTMLElement interface: attribute onplay +PASS HTMLElement interface: attribute onplaying +PASS HTMLElement interface: attribute onprogress +PASS HTMLElement interface: attribute onratechange +PASS HTMLElement interface: attribute onreset +PASS HTMLElement interface: attribute onresize +PASS HTMLElement interface: attribute onscroll +PASS HTMLElement interface: attribute onseeked +PASS HTMLElement interface: attribute onseeking +PASS HTMLElement interface: attribute onselect +PASS HTMLElement interface: attribute onstalled +PASS HTMLElement interface: attribute onsubmit +PASS HTMLElement interface: attribute onsuspend +PASS HTMLElement interface: attribute ontimeupdate +PASS HTMLElement interface: attribute ontoggle +PASS HTMLElement interface: attribute onvolumechange +PASS HTMLElement interface: attribute onwaiting +FAIL HTMLElement interface: attribute oncopy assert_own_property: expected property "oncopy" missing +FAIL HTMLElement interface: attribute oncut assert_own_property: expected property "oncut" missing +FAIL HTMLElement interface: attribute onpaste assert_own_property: expected property "onpaste" missing +PASS HTMLElement interface: attribute contentEditable +PASS HTMLElement interface: attribute isContentEditable +PASS HTMLElement must be primary interface of document.createElement("noscript") +PASS Stringification of document.createElement("noscript") +PASS HTMLElement interface: document.createElement("noscript") must inherit property "title" with the proper type (0) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "lang" with the proper type (1) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type (2) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type (3) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "dataset" with the proper type (4) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "hidden" with the proper type (5) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "click" with the proper type (6) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type (7) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus" with the proper type (8) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "blur" with the proper type (9) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type (10) +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type (11) assert_inherits: property "accessKeyLabel" not found in prototype chain +PASS HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type (12) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (13) +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (14) assert_inherits: property "forceSpellCheck" not found in prototype chain +PASS HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type (15) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onabort" with the proper type (16) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type (17) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onblur" with the proper type (18) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type (19) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplay" with the proper type (20) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplaythrough" with the proper type (21) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onchange" with the proper type (22) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclick" with the proper type (23) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type (24) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncontextmenu" with the proper type (25) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type (26) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondblclick" with the proper type (27) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrag" with the proper type (28) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragend" with the proper type (29) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragenter" with the proper type (30) +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type (31) assert_inherits: property "ondragexit" not found in prototype chain +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragleave" with the proper type (32) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragover" with the proper type (33) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragstart" with the proper type (34) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrop" with the proper type (35) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondurationchange" with the proper type (36) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onemptied" with the proper type (37) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onended" with the proper type (38) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onerror" with the proper type (39) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onfocus" with the proper type (40) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninput" with the proper type (41) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninvalid" with the proper type (42) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeydown" with the proper type (43) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeypress" with the proper type (44) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeyup" with the proper type (45) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onload" with the proper type (46) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadeddata" with the proper type (47) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadedmetadata" with the proper type (48) +FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onloadend" with the proper type (49) assert_inherits: property "onloadend" not found in prototype chain +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadstart" with the proper type (50) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousedown" with the proper type (51) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseenter" with the proper type (52) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseleave" with the proper type (53) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousemove" with the proper type (54) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseout" with the proper type (55) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseover" with the proper type (56) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseup" with the proper type (57) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwheel" with the proper type (58) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpause" with the proper type (59) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplay" with the proper type (60) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplaying" with the proper type (61) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onprogress" with the proper type (62) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onratechange" with the proper type (63) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onreset" with the proper type (64) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onresize" with the proper type (65) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onscroll" with the proper type (66) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeked" with the proper type (67) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeking" with the proper type (68) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onselect" with the proper type (69) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onstalled" with the proper type (70) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsubmit" with the proper type (71) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsuspend" with the proper type (72) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontimeupdate" with the proper type (73) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type (74) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type (75) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type (76) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type (77) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type (78) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type (79) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (80) +PASS HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (81) +PASS HTMLUnknownElement interface: existence and properties of interface object +PASS HTMLUnknownElement interface object length +PASS HTMLUnknownElement interface object name +PASS HTMLUnknownElement interface: existence and properties of interface prototype object +PASS HTMLUnknownElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLUnknownElement must be primary interface of document.createElement("bgsound") +PASS Stringification of document.createElement("bgsound") +PASS HTMLHtmlElement interface: existence and properties of interface object +PASS HTMLHtmlElement interface object length +PASS HTMLHtmlElement interface object name +PASS HTMLHtmlElement interface: existence and properties of interface prototype object +PASS HTMLHtmlElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLHtmlElement interface: attribute version +PASS HTMLHtmlElement must be primary interface of document.createElement("html") +PASS Stringification of document.createElement("html") +PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type (0) +PASS HTMLHeadElement interface: existence and properties of interface object +PASS HTMLHeadElement interface object length +PASS HTMLHeadElement interface object name +PASS HTMLHeadElement interface: existence and properties of interface prototype object +PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLHeadElement must be primary interface of document.createElement("head") +PASS Stringification of document.createElement("head") +PASS HTMLTitleElement interface: existence and properties of interface object +PASS HTMLTitleElement interface object length +PASS HTMLTitleElement interface object name +PASS HTMLTitleElement interface: existence and properties of interface prototype object +PASS HTMLTitleElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTitleElement interface: attribute text +PASS HTMLTitleElement must be primary interface of document.createElement("title") +PASS Stringification of document.createElement("title") +PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type (0) +PASS HTMLBaseElement interface: existence and properties of interface object +PASS HTMLBaseElement interface object length +PASS HTMLBaseElement interface object name +PASS HTMLBaseElement interface: existence and properties of interface prototype object +PASS HTMLBaseElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLBaseElement interface: attribute href +PASS HTMLBaseElement interface: attribute target +PASS HTMLBaseElement must be primary interface of document.createElement("base") +PASS Stringification of document.createElement("base") +PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type (0) +PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type (1) +PASS HTMLLinkElement interface: existence and properties of interface object +PASS HTMLLinkElement interface object length +PASS HTMLLinkElement interface object name +PASS HTMLLinkElement interface: existence and properties of interface prototype object +PASS HTMLLinkElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLLinkElement interface: attribute href +PASS HTMLLinkElement interface: attribute crossOrigin +PASS HTMLLinkElement interface: attribute rel +PASS HTMLLinkElement interface: attribute as +PASS HTMLLinkElement interface: attribute relList +PASS HTMLLinkElement interface: attribute media +FAIL HTMLLinkElement interface: attribute nonce assert_own_property: expected property "nonce" missing +PASS HTMLLinkElement interface: attribute integrity +PASS HTMLLinkElement interface: attribute hreflang +PASS HTMLLinkElement interface: attribute type +PASS HTMLLinkElement interface: attribute sizes +PASS HTMLLinkElement interface: attribute referrerPolicy +PASS HTMLLinkElement interface: attribute charset +PASS HTMLLinkElement interface: attribute rev +PASS HTMLLinkElement interface: attribute target +PASS HTMLLinkElement must be primary interface of document.createElement("link") +PASS Stringification of document.createElement("link") +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "href" with the proper type (0) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type (1) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rel" with the proper type (2) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type (3) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "relList" with the proper type (4) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "media" with the proper type (5) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "nonce" with the proper type (6) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type (7) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "hreflang" with the proper type (8) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "type" with the proper type (9) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type (10) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type (11) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "charset" with the proper type (12) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type (13) +PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type (14) +PASS HTMLMetaElement interface: existence and properties of interface object +PASS HTMLMetaElement interface object length +PASS HTMLMetaElement interface object name +PASS HTMLMetaElement interface: existence and properties of interface prototype object +PASS HTMLMetaElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMetaElement interface: attribute name +PASS HTMLMetaElement interface: attribute httpEquiv +PASS HTMLMetaElement interface: attribute content +PASS HTMLMetaElement interface: attribute scheme +PASS HTMLMetaElement must be primary interface of document.createElement("meta") +PASS Stringification of document.createElement("meta") +PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "name" with the proper type (0) +PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type (1) +PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type (2) +PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type (3) +PASS HTMLStyleElement interface: existence and properties of interface object +PASS HTMLStyleElement interface object length +PASS HTMLStyleElement interface object name +PASS HTMLStyleElement interface: existence and properties of interface prototype object +PASS HTMLStyleElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLStyleElement interface: attribute media +FAIL HTMLStyleElement interface: attribute nonce assert_own_property: expected property "nonce" missing +PASS HTMLStyleElement interface: attribute type +PASS HTMLStyleElement must be primary interface of document.createElement("style") +PASS Stringification of document.createElement("style") +PASS HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type (0) +PASS HTMLStyleElement interface: document.createElement("style") must inherit property "nonce" with the proper type (1) +PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type (2) +PASS HTMLBodyElement interface: existence and properties of interface object +PASS HTMLBodyElement interface object length +PASS HTMLBodyElement interface object name +PASS HTMLBodyElement interface: existence and properties of interface prototype object +PASS HTMLBodyElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLBodyElement interface: attribute text +PASS HTMLBodyElement interface: attribute link +PASS HTMLBodyElement interface: attribute vLink +PASS HTMLBodyElement interface: attribute aLink +PASS HTMLBodyElement interface: attribute bgColor +PASS HTMLBodyElement interface: attribute background +FAIL HTMLBodyElement interface: attribute onafterprint assert_true: The prototype object must have a property "onafterprint" expected true got false +FAIL HTMLBodyElement interface: attribute onbeforeprint assert_true: The prototype object must have a property "onbeforeprint" expected true got false +PASS HTMLBodyElement interface: attribute onbeforeunload +PASS HTMLBodyElement interface: attribute onhashchange +PASS HTMLBodyElement interface: attribute onlanguagechange +PASS HTMLBodyElement interface: attribute onmessage +PASS HTMLBodyElement interface: attribute onmessageerror +PASS HTMLBodyElement interface: attribute onoffline +PASS HTMLBodyElement interface: attribute ononline +PASS HTMLBodyElement interface: attribute onpagehide +PASS HTMLBodyElement interface: attribute onpageshow +PASS HTMLBodyElement interface: attribute onpopstate +PASS HTMLBodyElement interface: attribute onrejectionhandled +PASS HTMLBodyElement interface: attribute onstorage +PASS HTMLBodyElement interface: attribute onunhandledrejection +PASS HTMLBodyElement interface: attribute onunload +PASS HTMLBodyElement must be primary interface of document.createElement("body") +PASS Stringification of document.createElement("body") +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "text" with the proper type (0) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type (1) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type (2) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type (3) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "bgColor" with the proper type (4) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "background" with the proper type (5) +FAIL HTMLBodyElement interface: document.createElement("body") must inherit property "onafterprint" with the proper type (6) assert_inherits: property "onafterprint" not found in prototype chain +FAIL HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeprint" with the proper type (7) assert_inherits: property "onbeforeprint" not found in prototype chain +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeunload" with the proper type (8) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onhashchange" with the proper type (9) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onlanguagechange" with the proper type (10) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessage" with the proper type (11) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type (12) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onoffline" with the proper type (13) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "ononline" with the proper type (14) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpagehide" with the proper type (15) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpageshow" with the proper type (16) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type (17) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onrejectionhandled" with the proper type (18) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type (19) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunhandledrejection" with the proper type (20) +PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type (21) +PASS HTMLHeadingElement interface: existence and properties of interface object +PASS HTMLHeadingElement interface object length +PASS HTMLHeadingElement interface object name +PASS HTMLHeadingElement interface: existence and properties of interface prototype object +PASS HTMLHeadingElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLHeadingElement interface: attribute align +PASS HTMLHeadingElement must be primary interface of document.createElement("h1") +PASS Stringification of document.createElement("h1") +PASS HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type (0) +PASS HTMLParagraphElement interface: existence and properties of interface object +PASS HTMLParagraphElement interface object length +PASS HTMLParagraphElement interface object name +PASS HTMLParagraphElement interface: existence and properties of interface prototype object +PASS HTMLParagraphElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLParagraphElement interface: attribute align +PASS HTMLParagraphElement must be primary interface of document.createElement("p") +PASS Stringification of document.createElement("p") +PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type (0) +PASS HTMLHRElement interface: existence and properties of interface object +PASS HTMLHRElement interface object length +PASS HTMLHRElement interface object name +PASS HTMLHRElement interface: existence and properties of interface prototype object +PASS HTMLHRElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLHRElement interface: attribute align +PASS HTMLHRElement interface: attribute color +PASS HTMLHRElement interface: attribute noShade +PASS HTMLHRElement interface: attribute size +PASS HTMLHRElement interface: attribute width +PASS HTMLHRElement must be primary interface of document.createElement("hr") +PASS Stringification of document.createElement("hr") +PASS HTMLHRElement interface: document.createElement("hr") must inherit property "align" with the proper type (0) +PASS HTMLHRElement interface: document.createElement("hr") must inherit property "color" with the proper type (1) +PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type (2) +PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type (3) +PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type (4) +PASS HTMLPreElement interface: existence and properties of interface object +PASS HTMLPreElement interface object length +PASS HTMLPreElement interface object name +PASS HTMLPreElement interface: existence and properties of interface prototype object +PASS HTMLPreElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLPreElement interface: attribute width +PASS HTMLPreElement must be primary interface of document.createElement("pre") +PASS Stringification of document.createElement("pre") +PASS HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type (0) +PASS HTMLPreElement must be primary interface of document.createElement("listing") +PASS Stringification of document.createElement("listing") +PASS HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type (0) +PASS HTMLPreElement must be primary interface of document.createElement("xmp") +PASS Stringification of document.createElement("xmp") +PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type (0) +PASS HTMLQuoteElement interface: existence and properties of interface object +PASS HTMLQuoteElement interface object length +PASS HTMLQuoteElement interface object name +PASS HTMLQuoteElement interface: existence and properties of interface prototype object +PASS HTMLQuoteElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLQuoteElement interface: attribute cite +PASS HTMLQuoteElement must be primary interface of document.createElement("blockquote") +PASS Stringification of document.createElement("blockquote") +PASS HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type (0) +PASS HTMLQuoteElement must be primary interface of document.createElement("q") +PASS Stringification of document.createElement("q") +PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type (0) +PASS HTMLOListElement interface: existence and properties of interface object +PASS HTMLOListElement interface object length +PASS HTMLOListElement interface object name +PASS HTMLOListElement interface: existence and properties of interface prototype object +PASS HTMLOListElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLOListElement interface: attribute reversed +PASS HTMLOListElement interface: attribute start +PASS HTMLOListElement interface: attribute type +PASS HTMLOListElement interface: attribute compact +PASS HTMLUListElement interface: existence and properties of interface object +PASS HTMLUListElement interface object length +PASS HTMLUListElement interface object name +PASS HTMLUListElement interface: existence and properties of interface prototype object +PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLUListElement interface: attribute compact +PASS HTMLUListElement interface: attribute type +PASS HTMLLIElement interface: existence and properties of interface object +PASS HTMLLIElement interface object length +PASS HTMLLIElement interface object name +PASS HTMLLIElement interface: existence and properties of interface prototype object +PASS HTMLLIElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLLIElement interface: attribute value +PASS HTMLLIElement interface: attribute type +PASS HTMLLIElement must be primary interface of document.createElement("li") +PASS Stringification of document.createElement("li") +PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type (0) +PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type (1) +PASS HTMLDListElement interface: existence and properties of interface object +PASS HTMLDListElement interface object length +PASS HTMLDListElement interface object name +PASS HTMLDListElement interface: existence and properties of interface prototype object +PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDListElement interface: attribute compact +PASS HTMLDivElement interface: existence and properties of interface object +PASS HTMLDivElement interface object length +PASS HTMLDivElement interface object name +PASS HTMLDivElement interface: existence and properties of interface prototype object +PASS HTMLDivElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDivElement interface: attribute align +PASS HTMLDivElement must be primary interface of document.createElement("div") +PASS Stringification of document.createElement("div") +PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type (0) +PASS HTMLAnchorElement interface: existence and properties of interface object +PASS HTMLAnchorElement interface object length +PASS HTMLAnchorElement interface object name +PASS HTMLAnchorElement interface: existence and properties of interface prototype object +PASS HTMLAnchorElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLAnchorElement interface: attribute target +PASS HTMLAnchorElement interface: attribute download +PASS HTMLAnchorElement interface: attribute ping +PASS HTMLAnchorElement interface: attribute rel +FAIL HTMLAnchorElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false +PASS HTMLAnchorElement interface: attribute hreflang +PASS HTMLAnchorElement interface: attribute type +PASS HTMLAnchorElement interface: attribute text +PASS HTMLAnchorElement interface: attribute referrerPolicy +PASS HTMLAnchorElement interface: attribute coords +PASS HTMLAnchorElement interface: attribute charset +PASS HTMLAnchorElement interface: attribute name +PASS HTMLAnchorElement interface: attribute rev +PASS HTMLAnchorElement interface: attribute shape +PASS HTMLAnchorElement interface: attribute href +PASS HTMLAnchorElement interface: stringifier +PASS HTMLAnchorElement interface: attribute origin +PASS HTMLAnchorElement interface: attribute protocol +PASS HTMLAnchorElement interface: attribute username +PASS HTMLAnchorElement interface: attribute password +PASS HTMLAnchorElement interface: attribute host +PASS HTMLAnchorElement interface: attribute hostname +PASS HTMLAnchorElement interface: attribute port +PASS HTMLAnchorElement interface: attribute pathname +PASS HTMLAnchorElement interface: attribute search +PASS HTMLAnchorElement interface: attribute hash +PASS HTMLAnchorElement must be primary interface of document.createElement("a") +PASS Stringification of document.createElement("a") +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "target" with the proper type (0) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type (1) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type (2) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type (3) +FAIL HTMLAnchorElement interface: document.createElement("a") must inherit property "relList" with the proper type (4) assert_inherits: property "relList" not found in prototype chain +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type (5) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type (6) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "text" with the proper type (7) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type (8) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "coords" with the proper type (9) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type (10) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "name" with the proper type (11) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rev" with the proper type (12) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "shape" with the proper type (13) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type (14) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type (15) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type (16) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type (17) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type (18) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type (19) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type (20) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type (21) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type (22) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type (23) +PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type (24) +FAIL HTMLDataElement interface: existence and properties of interface object assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement interface object length assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement interface object name assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement interface: existence and properties of interface prototype object assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement interface: attribute value assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL HTMLDataElement must be primary interface of document.createElement("data") assert_own_property: self does not have own property "HTMLDataElement" expected property "HTMLDataElement" missing +FAIL Stringification of document.createElement("data") assert_equals: class string of document.createElement("data") expected "[object HTMLDataElement]" but got "[object HTMLUnknownElement]" +FAIL HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type (0) assert_inherits: property "value" not found in prototype chain +FAIL HTMLTimeElement interface: existence and properties of interface object assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement interface object length assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement interface object name assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement interface: existence and properties of interface prototype object assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement interface: attribute dateTime assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL HTMLTimeElement must be primary interface of document.createElement("time") assert_own_property: self does not have own property "HTMLTimeElement" expected property "HTMLTimeElement" missing +FAIL Stringification of document.createElement("time") assert_equals: class string of document.createElement("time") expected "[object HTMLTimeElement]" but got "[object HTMLUnknownElement]" +FAIL HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type (0) assert_inherits: property "dateTime" not found in prototype chain +PASS HTMLSpanElement interface: existence and properties of interface object +PASS HTMLSpanElement interface object length +PASS HTMLSpanElement interface object name +PASS HTMLSpanElement interface: existence and properties of interface prototype object +PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLSpanElement must be primary interface of document.createElement("span") +PASS Stringification of document.createElement("span") +PASS HTMLBRElement interface: existence and properties of interface object +PASS HTMLBRElement interface object length +PASS HTMLBRElement interface object name +PASS HTMLBRElement interface: existence and properties of interface prototype object +PASS HTMLBRElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLBRElement interface: attribute clear +PASS HTMLBRElement must be primary interface of document.createElement("br") +PASS Stringification of document.createElement("br") +PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type (0) +PASS HTMLModElement interface: existence and properties of interface object +PASS HTMLModElement interface object length +PASS HTMLModElement interface object name +PASS HTMLModElement interface: existence and properties of interface prototype object +PASS HTMLModElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLModElement interface: attribute cite +PASS HTMLModElement interface: attribute dateTime +PASS HTMLModElement must be primary interface of document.createElement("ins") +PASS Stringification of document.createElement("ins") +PASS HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type (0) +PASS HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type (1) +PASS HTMLModElement must be primary interface of document.createElement("del") +PASS Stringification of document.createElement("del") +PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type (0) +PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type (1) +PASS HTMLPictureElement interface: existence and properties of interface object +PASS HTMLPictureElement interface object length +PASS HTMLPictureElement interface object name +PASS HTMLPictureElement interface: existence and properties of interface prototype object +PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLPictureElement must be primary interface of document.createElement("picture") +PASS Stringification of document.createElement("picture") +PASS HTMLImageElement interface: existence and properties of interface object +PASS HTMLImageElement interface object length +PASS HTMLImageElement interface object name +PASS HTMLImageElement interface: existence and properties of interface prototype object +PASS HTMLImageElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLImageElement interface: attribute alt +PASS HTMLImageElement interface: attribute src +PASS HTMLImageElement interface: attribute srcset +PASS HTMLImageElement interface: attribute sizes +PASS HTMLImageElement interface: attribute crossOrigin +PASS HTMLImageElement interface: attribute useMap +PASS HTMLImageElement interface: attribute isMap +PASS HTMLImageElement interface: attribute width +PASS HTMLImageElement interface: attribute height +PASS HTMLImageElement interface: attribute naturalWidth +PASS HTMLImageElement interface: attribute naturalHeight +PASS HTMLImageElement interface: attribute complete +PASS HTMLImageElement interface: attribute currentSrc +PASS HTMLImageElement interface: attribute referrerPolicy +PASS HTMLImageElement interface: attribute name +PASS HTMLImageElement interface: attribute lowsrc +PASS HTMLImageElement interface: attribute align +PASS HTMLImageElement interface: attribute hspace +PASS HTMLImageElement interface: attribute vspace +PASS HTMLImageElement interface: attribute longDesc +PASS HTMLImageElement interface: attribute border +PASS HTMLImageElement must be primary interface of document.createElement("img") +PASS Stringification of document.createElement("img") +PASS HTMLImageElement interface: document.createElement("img") must inherit property "alt" with the proper type (0) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "src" with the proper type (1) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type (2) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type (3) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type (4) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "useMap" with the proper type (5) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "isMap" with the proper type (6) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "width" with the proper type (7) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "height" with the proper type (8) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalWidth" with the proper type (9) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalHeight" with the proper type (10) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "complete" with the proper type (11) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "currentSrc" with the proper type (12) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type (13) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "name" with the proper type (14) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type (15) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "align" with the proper type (16) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "hspace" with the proper type (17) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "vspace" with the proper type (18) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "longDesc" with the proper type (19) +PASS HTMLImageElement interface: document.createElement("img") must inherit property "border" with the proper type (20) +PASS HTMLImageElement must be primary interface of new Image() +PASS Stringification of new Image() +PASS HTMLImageElement interface: new Image() must inherit property "alt" with the proper type (0) +PASS HTMLImageElement interface: new Image() must inherit property "src" with the proper type (1) +PASS HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type (2) +PASS HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type (3) +PASS HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type (4) +PASS HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type (5) +PASS HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type (6) +PASS HTMLImageElement interface: new Image() must inherit property "width" with the proper type (7) +PASS HTMLImageElement interface: new Image() must inherit property "height" with the proper type (8) +PASS HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type (9) +PASS HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type (10) +PASS HTMLImageElement interface: new Image() must inherit property "complete" with the proper type (11) +PASS HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type (12) +PASS HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type (13) +PASS HTMLImageElement interface: new Image() must inherit property "name" with the proper type (14) +PASS HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type (15) +PASS HTMLImageElement interface: new Image() must inherit property "align" with the proper type (16) +PASS HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type (17) +PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type (18) +PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type (19) +PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type (20) +PASS HTMLIFrameElement interface: existence and properties of interface object +PASS HTMLIFrameElement interface object length +PASS HTMLIFrameElement interface object name +PASS HTMLIFrameElement interface: existence and properties of interface prototype object +PASS HTMLIFrameElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLIFrameElement interface: attribute src +PASS HTMLIFrameElement interface: attribute srcdoc +PASS HTMLIFrameElement interface: attribute name +PASS HTMLIFrameElement interface: attribute sandbox +PASS HTMLIFrameElement interface: attribute allowFullscreen +FAIL HTMLIFrameElement interface: attribute allowUserMedia assert_true: The prototype object must have a property "allowUserMedia" expected true got false +PASS HTMLIFrameElement interface: attribute allowPaymentRequest +PASS HTMLIFrameElement interface: attribute width +PASS HTMLIFrameElement interface: attribute height +PASS HTMLIFrameElement interface: attribute referrerPolicy +PASS HTMLIFrameElement interface: attribute contentDocument +PASS HTMLIFrameElement interface: attribute contentWindow +PASS HTMLIFrameElement interface: operation getSVGDocument() +PASS HTMLIFrameElement interface: attribute align +PASS HTMLIFrameElement interface: attribute scrolling +PASS HTMLIFrameElement interface: attribute frameBorder +PASS HTMLIFrameElement interface: attribute longDesc +PASS HTMLIFrameElement interface: attribute marginHeight +PASS HTMLIFrameElement interface: attribute marginWidth +PASS HTMLEmbedElement interface: existence and properties of interface object +PASS HTMLEmbedElement interface object length +PASS HTMLEmbedElement interface object name +PASS HTMLEmbedElement interface: existence and properties of interface prototype object +PASS HTMLEmbedElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLEmbedElement interface: attribute src +PASS HTMLEmbedElement interface: attribute type +PASS HTMLEmbedElement interface: attribute width +PASS HTMLEmbedElement interface: attribute height +PASS HTMLEmbedElement interface: operation getSVGDocument() +PASS HTMLEmbedElement interface: attribute align +PASS HTMLEmbedElement interface: attribute name +PASS HTMLEmbedElement must be primary interface of document.createElement("embed") +PASS Stringification of document.createElement("embed") +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type (0) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type (1) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type (2) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type (3) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument" with the proper type (4) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type (5) +PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type (6) +PASS HTMLObjectElement interface: existence and properties of interface object +PASS HTMLObjectElement interface object length +PASS HTMLObjectElement interface object name +PASS HTMLObjectElement interface: existence and properties of interface prototype object +PASS HTMLObjectElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLObjectElement interface: attribute data +PASS HTMLObjectElement interface: attribute type +FAIL HTMLObjectElement interface: attribute typeMustMatch assert_true: The prototype object must have a property "typeMustMatch" expected true got false +PASS HTMLObjectElement interface: attribute name +PASS HTMLObjectElement interface: attribute useMap +PASS HTMLObjectElement interface: attribute form +PASS HTMLObjectElement interface: attribute width +PASS HTMLObjectElement interface: attribute height +PASS HTMLObjectElement interface: attribute contentDocument +PASS HTMLObjectElement interface: attribute contentWindow +PASS HTMLObjectElement interface: attribute willValidate +PASS HTMLObjectElement interface: attribute validity +PASS HTMLObjectElement interface: attribute validationMessage +PASS HTMLObjectElement interface: operation checkValidity() +PASS HTMLObjectElement interface: operation reportValidity() +PASS HTMLObjectElement interface: operation setCustomValidity(DOMString) +PASS HTMLObjectElement interface: attribute align +PASS HTMLObjectElement interface: attribute archive +PASS HTMLObjectElement interface: attribute code +PASS HTMLObjectElement interface: attribute declare +PASS HTMLObjectElement interface: attribute hspace +PASS HTMLObjectElement interface: attribute standby +PASS HTMLObjectElement interface: attribute vspace +PASS HTMLObjectElement interface: attribute codeBase +PASS HTMLObjectElement interface: attribute codeType +PASS HTMLObjectElement interface: attribute border +PASS HTMLObjectElement must be primary interface of document.createElement("object") +PASS Stringification of document.createElement("object") +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type (0) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "type" with the proper type (1) +FAIL HTMLObjectElement interface: document.createElement("object") must inherit property "typeMustMatch" with the proper type (2) assert_inherits: property "typeMustMatch" not found in prototype chain +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type (3) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type (4) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "form" with the proper type (5) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type (6) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type (7) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type (8) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type (9) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type (10) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validity" with the proper type (11) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type (12) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity" with the proper type (13) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity" with the proper type (14) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity" with the proper type (15) +PASS HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type (16) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type (17) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type (18) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type (19) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type (20) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type (21) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type (22) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type (23) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type (24) +PASS HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type (25) +PASS HTMLParamElement interface: existence and properties of interface object +PASS HTMLParamElement interface object length +PASS HTMLParamElement interface object name +PASS HTMLParamElement interface: existence and properties of interface prototype object +PASS HTMLParamElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLParamElement interface: attribute name +PASS HTMLParamElement interface: attribute value +PASS HTMLParamElement interface: attribute type +PASS HTMLParamElement interface: attribute valueType +PASS HTMLParamElement must be primary interface of document.createElement("param") +PASS Stringification of document.createElement("param") +PASS HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type (0) +PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type (1) +PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type (2) +PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type (3) +PASS HTMLVideoElement interface: existence and properties of interface object +PASS HTMLVideoElement interface object length +PASS HTMLVideoElement interface object name +PASS HTMLVideoElement interface: existence and properties of interface prototype object +PASS HTMLVideoElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLVideoElement interface: attribute width +PASS HTMLVideoElement interface: attribute height +PASS HTMLVideoElement interface: attribute videoWidth +PASS HTMLVideoElement interface: attribute videoHeight +PASS HTMLVideoElement interface: attribute poster +PASS HTMLVideoElement must be primary interface of document.createElement("video") +PASS Stringification of document.createElement("video") +PASS HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type (0) +PASS HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type (1) +PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type (2) +PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type (3) +PASS HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type (4) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "error" with the proper type (0) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "src" with the proper type (1) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentSrc" with the proper type (2) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type (3) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_EMPTY" with the proper type (4) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_IDLE" with the proper type (5) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_LOADING" with the proper type (6) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_NO_SOURCE" with the proper type (7) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "networkState" with the proper type (8) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preload" with the proper type (9) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type (10) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "load" with the proper type (11) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "canPlayType" with the proper type (12) +PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("video") with too few arguments must throw TypeError +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_NOTHING" with the proper type (13) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_METADATA" with the proper type (14) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_CURRENT_DATA" with the proper type (15) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_FUTURE_DATA" with the proper type (16) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_ENOUGH_DATA" with the proper type (17) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "readyState" with the proper type (18) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type (19) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type (20) +FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek" with the proper type (21) assert_inherits: property "fastSeek" not found in prototype chain +FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type (22) +FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate" with the proper type (23) assert_inherits: property "getStartDate" not found in prototype chain +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "paused" with the proper type (24) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type (25) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type (26) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type (27) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type (28) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type (29) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "autoplay" with the proper type (30) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type (31) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "play" with the proper type (32) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "pause" with the proper type (33) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type (34) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type (35) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type (36) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type (37) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type (38) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type (39) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type (40) +PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack" with the proper type (41) +PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on document.createElement("video") with too few arguments must throw TypeError +PASS HTMLAudioElement interface: existence and properties of interface object +PASS HTMLAudioElement interface object length +PASS HTMLAudioElement interface object name +PASS HTMLAudioElement interface: existence and properties of interface prototype object +PASS HTMLAudioElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLAudioElement must be primary interface of document.createElement("audio") +PASS Stringification of document.createElement("audio") +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "error" with the proper type (0) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "src" with the proper type (1) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentSrc" with the proper type (2) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type (3) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_EMPTY" with the proper type (4) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_IDLE" with the proper type (5) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_LOADING" with the proper type (6) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_NO_SOURCE" with the proper type (7) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "networkState" with the proper type (8) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preload" with the proper type (9) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type (10) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "load" with the proper type (11) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "canPlayType" with the proper type (12) +PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("audio") with too few arguments must throw TypeError +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_NOTHING" with the proper type (13) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_METADATA" with the proper type (14) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_CURRENT_DATA" with the proper type (15) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_FUTURE_DATA" with the proper type (16) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_ENOUGH_DATA" with the proper type (17) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "readyState" with the proper type (18) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type (19) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type (20) +FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek" with the proper type (21) assert_inherits: property "fastSeek" not found in prototype chain +FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type (22) +FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate" with the proper type (23) assert_inherits: property "getStartDate" not found in prototype chain +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "paused" with the proper type (24) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type (25) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type (26) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type (27) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type (28) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type (29) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "autoplay" with the proper type (30) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type (31) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "play" with the proper type (32) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "pause" with the proper type (33) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type (34) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type (35) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type (36) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type (37) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type (38) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type (39) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type (40) +PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack" with the proper type (41) +PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on document.createElement("audio") with too few arguments must throw TypeError +PASS HTMLAudioElement must be primary interface of new Audio() +PASS Stringification of new Audio() +PASS HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type (0) +PASS HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type (1) +PASS HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type (2) +PASS HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type (3) +PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type (4) +PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type (5) +PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type (6) +PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type (7) +PASS HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type (8) +PASS HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type (9) +PASS HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type (10) +PASS HTMLMediaElement interface: new Audio() must inherit property "load" with the proper type (11) +PASS HTMLMediaElement interface: new Audio() must inherit property "canPlayType" with the proper type (12) +PASS HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError +PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type (13) +PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type (14) +PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type (15) +PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type (16) +PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type (17) +PASS HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type (18) +PASS HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type (19) +PASS HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type (20) +FAIL HTMLMediaElement interface: new Audio() must inherit property "fastSeek" with the proper type (21) assert_inherits: property "fastSeek" not found in prototype chain +FAIL HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain +PASS HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type (22) +FAIL HTMLMediaElement interface: new Audio() must inherit property "getStartDate" with the proper type (23) assert_inherits: property "getStartDate" not found in prototype chain +PASS HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type (24) +PASS HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type (25) +PASS HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type (26) +PASS HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type (27) +PASS HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type (28) +PASS HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type (29) +PASS HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type (30) +PASS HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type (31) +PASS HTMLMediaElement interface: new Audio() must inherit property "play" with the proper type (32) +PASS HTMLMediaElement interface: new Audio() must inherit property "pause" with the proper type (33) +PASS HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type (34) +PASS HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type (35) +PASS HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type (36) +PASS HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type (37) +PASS HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type (38) +PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type (39) +PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type (40) +PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack" with the proper type (41) +PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on new Audio() with too few arguments must throw TypeError +PASS HTMLSourceElement interface: existence and properties of interface object +PASS HTMLSourceElement interface object length +PASS HTMLSourceElement interface object name +PASS HTMLSourceElement interface: existence and properties of interface prototype object +PASS HTMLSourceElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLSourceElement interface: attribute src +PASS HTMLSourceElement interface: attribute type +PASS HTMLSourceElement interface: attribute srcset +PASS HTMLSourceElement interface: attribute sizes +PASS HTMLSourceElement interface: attribute media +PASS HTMLSourceElement must be primary interface of document.createElement("source") +PASS Stringification of document.createElement("source") +PASS HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type (0) +PASS HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type (1) +PASS HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type (2) +PASS HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type (3) +PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type (4) +PASS HTMLTrackElement interface: existence and properties of interface object +PASS HTMLTrackElement interface object length +PASS HTMLTrackElement interface object name +PASS HTMLTrackElement interface: existence and properties of interface prototype object +PASS HTMLTrackElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTrackElement interface: attribute kind +PASS HTMLTrackElement interface: attribute src +PASS HTMLTrackElement interface: attribute srclang +PASS HTMLTrackElement interface: attribute label +PASS HTMLTrackElement interface: attribute default +PASS HTMLTrackElement interface: constant NONE on interface object +PASS HTMLTrackElement interface: constant NONE on interface prototype object +PASS HTMLTrackElement interface: constant LOADING on interface object +PASS HTMLTrackElement interface: constant LOADING on interface prototype object +PASS HTMLTrackElement interface: constant LOADED on interface object +PASS HTMLTrackElement interface: constant LOADED on interface prototype object +PASS HTMLTrackElement interface: constant ERROR on interface object +PASS HTMLTrackElement interface: constant ERROR on interface prototype object +PASS HTMLTrackElement interface: attribute readyState +PASS HTMLTrackElement interface: attribute track +PASS HTMLTrackElement must be primary interface of document.createElement("track") +PASS Stringification of document.createElement("track") +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type (0) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type (1) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type (2) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type (3) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type (4) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type (5) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type (6) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type (7) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type (8) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type (9) +PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type (10) +PASS HTMLMediaElement interface: existence and properties of interface object +PASS HTMLMediaElement interface object length +PASS HTMLMediaElement interface object name +PASS HTMLMediaElement interface: existence and properties of interface prototype object +PASS HTMLMediaElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMediaElement interface: attribute error +PASS HTMLMediaElement interface: attribute src +PASS HTMLMediaElement interface: attribute currentSrc +PASS HTMLMediaElement interface: attribute crossOrigin +PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface object +PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface prototype object +PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface object +PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface prototype object +PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface object +PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface prototype object +PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface object +PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface prototype object +PASS HTMLMediaElement interface: attribute networkState +PASS HTMLMediaElement interface: attribute preload +PASS HTMLMediaElement interface: attribute buffered +PASS HTMLMediaElement interface: operation load() +PASS HTMLMediaElement interface: operation canPlayType(DOMString) +PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object +PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object +PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object +PASS HTMLMediaElement interface: constant HAVE_METADATA on interface prototype object +PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface object +PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface prototype object +PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface object +PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface prototype object +PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface object +PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface prototype object +PASS HTMLMediaElement interface: attribute readyState +PASS HTMLMediaElement interface: attribute seeking +PASS HTMLMediaElement interface: attribute currentTime +FAIL HTMLMediaElement interface: operation fastSeek(double) assert_own_property: interface prototype object missing non-static operation expected property "fastSeek" missing +PASS HTMLMediaElement interface: attribute duration +FAIL HTMLMediaElement interface: operation getStartDate() assert_own_property: interface prototype object missing non-static operation expected property "getStartDate" missing +PASS HTMLMediaElement interface: attribute paused +PASS HTMLMediaElement interface: attribute defaultPlaybackRate +PASS HTMLMediaElement interface: attribute playbackRate +PASS HTMLMediaElement interface: attribute played +PASS HTMLMediaElement interface: attribute seekable +PASS HTMLMediaElement interface: attribute ended +PASS HTMLMediaElement interface: attribute autoplay +PASS HTMLMediaElement interface: attribute loop +PASS HTMLMediaElement interface: operation play() +PASS HTMLMediaElement interface: operation pause() +PASS HTMLMediaElement interface: attribute controls +PASS HTMLMediaElement interface: attribute volume +PASS HTMLMediaElement interface: attribute muted +PASS HTMLMediaElement interface: attribute defaultMuted +PASS HTMLMediaElement interface: attribute audioTracks +PASS HTMLMediaElement interface: attribute videoTracks +PASS HTMLMediaElement interface: attribute textTracks +PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind,DOMString,DOMString) +PASS MediaError interface: existence and properties of interface object +PASS MediaError interface object length +PASS MediaError interface object name +PASS MediaError interface: existence and properties of interface prototype object +PASS MediaError interface: existence and properties of interface prototype object's "constructor" property +PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface object +PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface object +PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_DECODE on interface object +PASS MediaError interface: constant MEDIA_ERR_DECODE on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface object +PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface prototype object +PASS MediaError interface: attribute code +PASS MediaError interface: attribute message +PASS MediaError must be primary interface of errorVideo.error +PASS Stringification of errorVideo.error +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_ABORTED" with the proper type (0) +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_NETWORK" with the proper type (1) +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_DECODE" with the proper type (2) +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_SRC_NOT_SUPPORTED" with the proper type (3) +PASS MediaError interface: errorVideo.error must inherit property "code" with the proper type (4) +PASS MediaError interface: errorVideo.error must inherit property "message" with the proper type (5) +PASS AudioTrackList interface: existence and properties of interface object +PASS AudioTrackList interface object length +PASS AudioTrackList interface object name +PASS AudioTrackList interface: existence and properties of interface prototype object +PASS AudioTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS AudioTrackList interface: attribute length +PASS AudioTrackList interface: operation getTrackById(DOMString) +PASS AudioTrackList interface: attribute onchange +PASS AudioTrackList interface: attribute onaddtrack +PASS AudioTrackList interface: attribute onremovetrack +PASS AudioTrack interface: existence and properties of interface object +PASS AudioTrack interface object length +PASS AudioTrack interface object name +PASS AudioTrack interface: existence and properties of interface prototype object +PASS AudioTrack interface: existence and properties of interface prototype object's "constructor" property +PASS AudioTrack interface: attribute id +PASS AudioTrack interface: attribute kind +PASS AudioTrack interface: attribute label +PASS AudioTrack interface: attribute language +PASS AudioTrack interface: attribute enabled +PASS VideoTrackList interface: existence and properties of interface object +PASS VideoTrackList interface object length +PASS VideoTrackList interface object name +PASS VideoTrackList interface: existence and properties of interface prototype object +PASS VideoTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS VideoTrackList interface: attribute length +PASS VideoTrackList interface: operation getTrackById(DOMString) +PASS VideoTrackList interface: attribute selectedIndex +PASS VideoTrackList interface: attribute onchange +PASS VideoTrackList interface: attribute onaddtrack +PASS VideoTrackList interface: attribute onremovetrack +PASS VideoTrack interface: existence and properties of interface object +PASS VideoTrack interface object length +PASS VideoTrack interface object name +PASS VideoTrack interface: existence and properties of interface prototype object +PASS VideoTrack interface: existence and properties of interface prototype object's "constructor" property +PASS VideoTrack interface: attribute id +PASS VideoTrack interface: attribute kind +PASS VideoTrack interface: attribute label +PASS VideoTrack interface: attribute language +PASS VideoTrack interface: attribute selected +PASS TextTrackList interface: existence and properties of interface object +PASS TextTrackList interface object length +PASS TextTrackList interface object name +PASS TextTrackList interface: existence and properties of interface prototype object +PASS TextTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackList interface: attribute length +PASS TextTrackList interface: operation getTrackById(DOMString) +PASS TextTrackList interface: attribute onchange +PASS TextTrackList interface: attribute onaddtrack +PASS TextTrackList interface: attribute onremovetrack +PASS TextTrackList must be primary interface of document.createElement("video").textTracks +PASS Stringification of document.createElement("video").textTracks +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type (0) +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById" with the proper type (2) +PASS TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type (3) +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type (4) +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type (5) +PASS TextTrack interface: existence and properties of interface object +PASS TextTrack interface object length +PASS TextTrack interface object name +PASS TextTrack interface: existence and properties of interface prototype object +PASS TextTrack interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrack interface: attribute kind +PASS TextTrack interface: attribute label +PASS TextTrack interface: attribute language +PASS TextTrack interface: attribute id +FAIL TextTrack interface: attribute inBandMetadataTrackDispatchType assert_true: The prototype object must have a property "inBandMetadataTrackDispatchType" expected true got false +PASS TextTrack interface: attribute mode +PASS TextTrack interface: attribute cues +PASS TextTrack interface: attribute activeCues +PASS TextTrack interface: operation addCue(TextTrackCue) +PASS TextTrack interface: operation removeCue(TextTrackCue) +PASS TextTrack interface: attribute oncuechange +PASS TextTrack must be primary interface of document.createElement("track").track +PASS Stringification of document.createElement("track").track +PASS TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type (0) +PASS TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type (1) +PASS TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type (2) +PASS TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type (3) +FAIL TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type (4) assert_inherits: property "inBandMetadataTrackDispatchType" not found in prototype chain +PASS TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type (5) +PASS TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type (6) +PASS TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type (7) +PASS TextTrack interface: document.createElement("track").track must inherit property "addCue" with the proper type (8) +PASS TextTrack interface: calling addCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError +PASS TextTrack interface: document.createElement("track").track must inherit property "removeCue" with the proper type (9) +PASS TextTrack interface: calling removeCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError +PASS TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type (10) +PASS TextTrackCueList interface: existence and properties of interface object +PASS TextTrackCueList interface object length +PASS TextTrackCueList interface object name +PASS TextTrackCueList interface: existence and properties of interface prototype object +PASS TextTrackCueList interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackCueList interface: attribute length +PASS TextTrackCueList interface: operation getCueById(DOMString) +PASS TextTrackCueList must be primary interface of document.createElement("video").addTextTrack("subtitles").cues +PASS Stringification of document.createElement("video").addTextTrack("subtitles").cues +PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type (0) +PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById" with the proper type (2) +PASS TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError +PASS TextTrackCue interface: existence and properties of interface object +PASS TextTrackCue interface object length +PASS TextTrackCue interface object name +PASS TextTrackCue interface: existence and properties of interface prototype object +PASS TextTrackCue interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackCue interface: attribute track +PASS TextTrackCue interface: attribute id +PASS TextTrackCue interface: attribute startTime +PASS TextTrackCue interface: attribute endTime +PASS TextTrackCue interface: attribute pauseOnExit +PASS TextTrackCue interface: attribute onenter +PASS TextTrackCue interface: attribute onexit +PASS TimeRanges interface: existence and properties of interface object +PASS TimeRanges interface object length +PASS TimeRanges interface object name +PASS TimeRanges interface: existence and properties of interface prototype object +PASS TimeRanges interface: existence and properties of interface prototype object's "constructor" property +PASS TimeRanges interface: attribute length +PASS TimeRanges interface: operation start(unsigned long) +PASS TimeRanges interface: operation end(unsigned long) +PASS TimeRanges must be primary interface of document.createElement("video").buffered +PASS Stringification of document.createElement("video").buffered +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type (0) +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "start" with the proper type (1) +PASS TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "end" with the proper type (2) +PASS TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError +PASS TrackEvent interface: existence and properties of interface object +PASS TrackEvent interface object length +PASS TrackEvent interface object name +PASS TrackEvent interface: existence and properties of interface prototype object +PASS TrackEvent interface: existence and properties of interface prototype object's "constructor" property +PASS TrackEvent interface: attribute track +PASS TrackEvent must be primary interface of new TrackEvent("addtrack", {track:document.createElement("track").track}) +PASS Stringification of new TrackEvent("addtrack", {track:document.createElement("track").track}) +PASS TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type (0) +PASS HTMLMapElement interface: existence and properties of interface object +PASS HTMLMapElement interface object length +PASS HTMLMapElement interface object name +PASS HTMLMapElement interface: existence and properties of interface prototype object +PASS HTMLMapElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMapElement interface: attribute name +PASS HTMLMapElement interface: attribute areas +PASS HTMLMapElement must be primary interface of document.createElement("map") +PASS Stringification of document.createElement("map") +PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type (0) +PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type (1) +PASS HTMLAreaElement interface: existence and properties of interface object +PASS HTMLAreaElement interface object length +PASS HTMLAreaElement interface object name +PASS HTMLAreaElement interface: existence and properties of interface prototype object +PASS HTMLAreaElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLAreaElement interface: attribute alt +PASS HTMLAreaElement interface: attribute coords +PASS HTMLAreaElement interface: attribute shape +PASS HTMLAreaElement interface: attribute target +PASS HTMLAreaElement interface: attribute download +PASS HTMLAreaElement interface: attribute ping +PASS HTMLAreaElement interface: attribute rel +FAIL HTMLAreaElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false +PASS HTMLAreaElement interface: attribute referrerPolicy +PASS HTMLAreaElement interface: attribute noHref +PASS HTMLAreaElement interface: attribute href +PASS HTMLAreaElement interface: stringifier +PASS HTMLAreaElement interface: attribute origin +PASS HTMLAreaElement interface: attribute protocol +PASS HTMLAreaElement interface: attribute username +PASS HTMLAreaElement interface: attribute password +PASS HTMLAreaElement interface: attribute host +PASS HTMLAreaElement interface: attribute hostname +PASS HTMLAreaElement interface: attribute port +PASS HTMLAreaElement interface: attribute pathname +PASS HTMLAreaElement interface: attribute search +PASS HTMLAreaElement interface: attribute hash +PASS HTMLAreaElement must be primary interface of document.createElement("area") +PASS Stringification of document.createElement("area") +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type (0) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type (1) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type (2) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type (3) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type (4) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type (5) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type (6) +FAIL HTMLAreaElement interface: document.createElement("area") must inherit property "relList" with the proper type (7) assert_inherits: property "relList" not found in prototype chain +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type (8) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type (9) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type (10) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type (11) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type (12) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type (13) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type (14) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type (15) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type (16) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type (17) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type (18) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type (19) +PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type (20) +PASS HTMLTableElement interface: existence and properties of interface object +PASS HTMLTableElement interface object length +PASS HTMLTableElement interface object name +PASS HTMLTableElement interface: existence and properties of interface prototype object +PASS HTMLTableElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableElement interface: attribute caption +PASS HTMLTableElement interface: operation createCaption() +PASS HTMLTableElement interface: operation deleteCaption() +PASS HTMLTableElement interface: attribute tHead +PASS HTMLTableElement interface: operation createTHead() +PASS HTMLTableElement interface: operation deleteTHead() +PASS HTMLTableElement interface: attribute tFoot +PASS HTMLTableElement interface: operation createTFoot() +PASS HTMLTableElement interface: operation deleteTFoot() +PASS HTMLTableElement interface: attribute tBodies +PASS HTMLTableElement interface: operation createTBody() +PASS HTMLTableElement interface: attribute rows +PASS HTMLTableElement interface: operation insertRow(long) +PASS HTMLTableElement interface: operation deleteRow(long) +PASS HTMLTableElement interface: attribute align +PASS HTMLTableElement interface: attribute border +PASS HTMLTableElement interface: attribute frame +PASS HTMLTableElement interface: attribute rules +PASS HTMLTableElement interface: attribute summary +PASS HTMLTableElement interface: attribute width +PASS HTMLTableElement interface: attribute bgColor +PASS HTMLTableElement interface: attribute cellPadding +PASS HTMLTableElement interface: attribute cellSpacing +PASS HTMLTableElement must be primary interface of document.createElement("table") +PASS Stringification of document.createElement("table") +PASS HTMLTableElement interface: document.createElement("table") must inherit property "caption" with the proper type (0) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "createCaption" with the proper type (1) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteCaption" with the proper type (2) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "tHead" with the proper type (3) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTHead" with the proper type (4) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTHead" with the proper type (5) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "tFoot" with the proper type (6) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTFoot" with the proper type (7) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTFoot" with the proper type (8) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "tBodies" with the proper type (9) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTBody" with the proper type (10) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "rows" with the proper type (11) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "insertRow" with the proper type (12) +PASS HTMLTableElement interface: calling insertRow(long) on document.createElement("table") with too few arguments must throw TypeError +PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteRow" with the proper type (13) +PASS HTMLTableElement interface: calling deleteRow(long) on document.createElement("table") with too few arguments must throw TypeError +PASS HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type (14) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type (15) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type (16) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type (17) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type (18) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "width" with the proper type (19) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type (20) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type (21) +PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type (22) +PASS HTMLTableCaptionElement interface: existence and properties of interface object +PASS HTMLTableCaptionElement interface object length +PASS HTMLTableCaptionElement interface object name +PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object +PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableCaptionElement interface: attribute align +PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption") +PASS Stringification of document.createElement("caption") +PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type (0) +PASS HTMLTableColElement interface: existence and properties of interface object +PASS HTMLTableColElement interface object length +PASS HTMLTableColElement interface object name +PASS HTMLTableColElement interface: existence and properties of interface prototype object +PASS HTMLTableColElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableColElement interface: attribute span +PASS HTMLTableColElement interface: attribute align +PASS HTMLTableColElement interface: attribute ch +PASS HTMLTableColElement interface: attribute chOff +PASS HTMLTableColElement interface: attribute vAlign +PASS HTMLTableColElement interface: attribute width +PASS HTMLTableColElement must be primary interface of document.createElement("colgroup") +PASS Stringification of document.createElement("colgroup") +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type (0) +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type (1) +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type (2) +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type (3) +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type (4) +PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type (5) +PASS HTMLTableColElement must be primary interface of document.createElement("col") +PASS Stringification of document.createElement("col") +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type (0) +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type (1) +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type (2) +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type (3) +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type (4) +PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type (5) +PASS HTMLTableSectionElement interface: existence and properties of interface object +PASS HTMLTableSectionElement interface object length +PASS HTMLTableSectionElement interface object name +PASS HTMLTableSectionElement interface: existence and properties of interface prototype object +PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableSectionElement interface: attribute rows +PASS HTMLTableSectionElement interface: operation insertRow(long) +PASS HTMLTableSectionElement interface: operation deleteRow(long) +PASS HTMLTableSectionElement interface: attribute align +PASS HTMLTableSectionElement interface: attribute ch +PASS HTMLTableSectionElement interface: attribute chOff +PASS HTMLTableSectionElement interface: attribute vAlign +PASS HTMLTableSectionElement must be primary interface of document.createElement("tbody") +PASS Stringification of document.createElement("tbody") +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "rows" with the proper type (0) +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "insertRow" with the proper type (1) +PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tbody") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "deleteRow" with the proper type (2) +PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tbody") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type (3) +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type (4) +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type (5) +PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type (6) +PASS HTMLTableSectionElement must be primary interface of document.createElement("thead") +PASS Stringification of document.createElement("thead") +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "rows" with the proper type (0) +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "insertRow" with the proper type (1) +PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("thead") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "deleteRow" with the proper type (2) +PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("thead") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type (3) +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type (4) +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type (5) +PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type (6) +PASS HTMLTableSectionElement must be primary interface of document.createElement("tfoot") +PASS Stringification of document.createElement("tfoot") +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "rows" with the proper type (0) +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "insertRow" with the proper type (1) +PASS HTMLTableSectionElement interface: calling insertRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "deleteRow" with the proper type (2) +PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type (3) +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type (4) +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type (5) +PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type (6) +PASS HTMLTableRowElement interface: existence and properties of interface object +PASS HTMLTableRowElement interface object length +PASS HTMLTableRowElement interface object name +PASS HTMLTableRowElement interface: existence and properties of interface prototype object +PASS HTMLTableRowElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableRowElement interface: attribute rowIndex +PASS HTMLTableRowElement interface: attribute sectionRowIndex +PASS HTMLTableRowElement interface: attribute cells +PASS HTMLTableRowElement interface: operation insertCell(long) +PASS HTMLTableRowElement interface: operation deleteCell(long) +PASS HTMLTableRowElement interface: attribute align +PASS HTMLTableRowElement interface: attribute ch +PASS HTMLTableRowElement interface: attribute chOff +PASS HTMLTableRowElement interface: attribute vAlign +PASS HTMLTableRowElement interface: attribute bgColor +PASS HTMLTableRowElement must be primary interface of document.createElement("tr") +PASS Stringification of document.createElement("tr") +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "rowIndex" with the proper type (0) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type (1) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "cells" with the proper type (2) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "insertCell" with the proper type (3) +PASS HTMLTableRowElement interface: calling insertCell(long) on document.createElement("tr") with too few arguments must throw TypeError +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "deleteCell" with the proper type (4) +PASS HTMLTableRowElement interface: calling deleteCell(long) on document.createElement("tr") with too few arguments must throw TypeError +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type (5) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type (6) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type (7) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type (8) +PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type (9) +PASS HTMLTableCellElement interface: existence and properties of interface object +PASS HTMLTableCellElement interface object length +PASS HTMLTableCellElement interface object name +PASS HTMLTableCellElement interface: existence and properties of interface prototype object +PASS HTMLTableCellElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTableCellElement interface: attribute colSpan +PASS HTMLTableCellElement interface: attribute rowSpan +PASS HTMLTableCellElement interface: attribute headers +PASS HTMLTableCellElement interface: attribute cellIndex +PASS HTMLTableCellElement interface: attribute scope +PASS HTMLTableCellElement interface: attribute abbr +PASS HTMLTableCellElement interface: attribute align +PASS HTMLTableCellElement interface: attribute axis +PASS HTMLTableCellElement interface: attribute height +PASS HTMLTableCellElement interface: attribute width +PASS HTMLTableCellElement interface: attribute ch +PASS HTMLTableCellElement interface: attribute chOff +PASS HTMLTableCellElement interface: attribute noWrap +PASS HTMLTableCellElement interface: attribute vAlign +PASS HTMLTableCellElement interface: attribute bgColor +PASS HTMLTableCellElement must be primary interface of document.createElement("td") +PASS Stringification of document.createElement("td") +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type (0) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type (1) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type (2) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "cellIndex" with the proper type (3) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type (4) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type (5) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type (6) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type (7) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type (8) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "width" with the proper type (9) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type (10) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type (11) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type (12) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type (13) +PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type (14) +PASS HTMLTableCellElement must be primary interface of document.createElement("th") +PASS Stringification of document.createElement("th") +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type (0) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type (1) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type (2) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "cellIndex" with the proper type (3) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type (4) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type (5) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type (6) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type (7) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type (8) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "width" with the proper type (9) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type (10) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type (11) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type (12) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type (13) +PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type (14) +PASS HTMLFormElement interface: existence and properties of interface object +PASS HTMLFormElement interface object length +PASS HTMLFormElement interface object name +PASS HTMLFormElement interface: existence and properties of interface prototype object +PASS HTMLFormElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFormElement interface: attribute acceptCharset +PASS HTMLFormElement interface: attribute action +PASS HTMLFormElement interface: attribute autocomplete +PASS HTMLFormElement interface: attribute enctype +PASS HTMLFormElement interface: attribute encoding +PASS HTMLFormElement interface: attribute method +PASS HTMLFormElement interface: attribute name +PASS HTMLFormElement interface: attribute noValidate +PASS HTMLFormElement interface: attribute target +PASS HTMLFormElement interface: attribute elements +PASS HTMLFormElement interface: attribute length +PASS HTMLFormElement interface: operation submit() +PASS HTMLFormElement interface: operation reset() +PASS HTMLFormElement interface: operation checkValidity() +PASS HTMLFormElement interface: operation reportValidity() +PASS HTMLFormElement must be primary interface of document.createElement("form") +PASS Stringification of document.createElement("form") +PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type (0) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type (1) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type (2) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type (3) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type (4) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type (5) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type (6) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type (7) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type (8) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type (9) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type (10) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit" with the proper type (13) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset" with the proper type (14) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity" with the proper type (15) +PASS HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity" with the proper type (16) +PASS HTMLLabelElement interface: existence and properties of interface object +PASS HTMLLabelElement interface object length +PASS HTMLLabelElement interface object name +PASS HTMLLabelElement interface: existence and properties of interface prototype object +PASS HTMLLabelElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLLabelElement interface: attribute form +PASS HTMLLabelElement interface: attribute htmlFor +PASS HTMLLabelElement interface: attribute control +PASS HTMLLabelElement must be primary interface of document.createElement("label") +PASS Stringification of document.createElement("label") +PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type (0) +PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type (1) +PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type (2) +PASS HTMLInputElement interface: existence and properties of interface object +PASS HTMLInputElement interface object length +PASS HTMLInputElement interface object name +PASS HTMLInputElement interface: existence and properties of interface prototype object +PASS HTMLInputElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLInputElement interface: attribute accept +PASS HTMLInputElement interface: attribute alt +PASS HTMLInputElement interface: attribute autocomplete +PASS HTMLInputElement interface: attribute autofocus +PASS HTMLInputElement interface: attribute defaultChecked +PASS HTMLInputElement interface: attribute checked +PASS HTMLInputElement interface: attribute dirName +PASS HTMLInputElement interface: attribute disabled +PASS HTMLInputElement interface: attribute form +FAIL HTMLInputElement interface: attribute files assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }" +PASS HTMLInputElement interface: attribute formAction +PASS HTMLInputElement interface: attribute formEnctype +PASS HTMLInputElement interface: attribute formMethod +PASS HTMLInputElement interface: attribute formNoValidate +PASS HTMLInputElement interface: attribute formTarget +PASS HTMLInputElement interface: attribute height +PASS HTMLInputElement interface: attribute indeterminate +FAIL HTMLInputElement interface: attribute inputMode assert_own_property: expected property "inputMode" missing +PASS HTMLInputElement interface: attribute list +PASS HTMLInputElement interface: attribute max +PASS HTMLInputElement interface: attribute maxLength +PASS HTMLInputElement interface: attribute min +PASS HTMLInputElement interface: attribute minLength +PASS HTMLInputElement interface: attribute multiple +PASS HTMLInputElement interface: attribute name +PASS HTMLInputElement interface: attribute pattern +PASS HTMLInputElement interface: attribute placeholder +PASS HTMLInputElement interface: attribute readOnly +PASS HTMLInputElement interface: attribute required +PASS HTMLInputElement interface: attribute size +PASS HTMLInputElement interface: attribute src +PASS HTMLInputElement interface: attribute step +PASS HTMLInputElement interface: attribute type +PASS HTMLInputElement interface: attribute defaultValue +PASS HTMLInputElement interface: attribute value +PASS HTMLInputElement interface: attribute valueAsDate +PASS HTMLInputElement interface: attribute valueAsNumber +PASS HTMLInputElement interface: attribute width +PASS HTMLInputElement interface: operation stepUp(long) +PASS HTMLInputElement interface: operation stepDown(long) +PASS HTMLInputElement interface: attribute willValidate +PASS HTMLInputElement interface: attribute validity +PASS HTMLInputElement interface: attribute validationMessage +PASS HTMLInputElement interface: operation checkValidity() +PASS HTMLInputElement interface: operation reportValidity() +PASS HTMLInputElement interface: operation setCustomValidity(DOMString) +PASS HTMLInputElement interface: attribute labels +PASS HTMLInputElement interface: operation select() +PASS HTMLInputElement interface: attribute selectionStart +PASS HTMLInputElement interface: attribute selectionEnd +PASS HTMLInputElement interface: attribute selectionDirection +PASS HTMLInputElement interface: operation setRangeText(DOMString) +PASS HTMLInputElement interface: operation setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) +PASS HTMLInputElement interface: operation setSelectionRange(unsigned long,unsigned long,DOMString) +PASS HTMLInputElement interface: attribute align +PASS HTMLInputElement interface: attribute useMap +PASS HTMLInputElement must be primary interface of document.createElement("input") +PASS Stringification of document.createElement("input") +PASS HTMLInputElement interface: document.createElement("input") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on document.createElement("input") with too few arguments must throw TypeError +PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("text") +PASS Stringification of createInput("text") +PASS HTMLInputElement interface: createInput("text") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("text") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("text") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("text") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("text") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("text") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("text") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("text") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("text") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("text") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("text") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("text") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("text") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("text") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("text") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("text") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("text") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("text") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("text") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("text") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("text") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("text") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("text") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("text") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("text") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("text") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("text") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("text") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("text") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("text") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("text") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("text") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("text") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("text") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("text") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("text") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("text") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("text") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("text") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("text") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("hidden") +PASS Stringification of createInput("hidden") +PASS HTMLInputElement interface: createInput("hidden") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("hidden") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("search") +PASS Stringification of createInput("search") +PASS HTMLInputElement interface: createInput("search") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("search") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("search") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("search") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("search") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("search") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("search") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("search") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("search") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("search") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("search") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("search") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("search") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("search") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("search") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("search") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("search") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("search") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("search") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("search") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("search") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("search") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("search") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("search") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("search") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("search") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("search") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("search") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("search") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("search") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("search") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("search") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("search") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("search") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("search") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("search") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("search") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("search") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("search") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("search") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("tel") +PASS Stringification of createInput("tel") +PASS HTMLInputElement interface: createInput("tel") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("tel") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("tel") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("tel") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("tel") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("tel") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("tel") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("tel") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("tel") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("tel") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("tel") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("tel") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("tel") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("tel") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("tel") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("tel") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("tel") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("tel") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("tel") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("tel") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("tel") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("tel") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("tel") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("tel") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("tel") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("tel") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("tel") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("tel") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("tel") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("tel") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("tel") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("tel") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("tel") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("tel") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("tel") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("url") +PASS Stringification of createInput("url") +PASS HTMLInputElement interface: createInput("url") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("url") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("url") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("url") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("url") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("url") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("url") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("url") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("url") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("url") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("url") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("url") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("url") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("url") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("url") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("url") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("url") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("url") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("url") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("url") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("url") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("url") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("url") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("url") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("url") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("url") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("url") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("url") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("url") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("url") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("url") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("url") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("url") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("url") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("url") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("url") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("url") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("url") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("url") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("url") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("email") +PASS Stringification of createInput("email") +PASS HTMLInputElement interface: createInput("email") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("email") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("email") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("email") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("email") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("email") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("email") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("email") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("email") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("email") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("email") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("email") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("email") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("email") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("email") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("email") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("email") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("email") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("email") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("email") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("email") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("email") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("email") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("email") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("email") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("email") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("email") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("email") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("email") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("email") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("email") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("email") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("email") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("email") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("email") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("email") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("email") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("email") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("email") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("email") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("password") +PASS Stringification of createInput("password") +PASS HTMLInputElement interface: createInput("password") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("password") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("password") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("password") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("password") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("password") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("password") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("password") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("password") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("password") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("password") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("password") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("password") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("password") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("password") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("password") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("password") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("password") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("password") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("password") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("password") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("password") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("password") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("password") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("password") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("password") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("password") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("password") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("password") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("password") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("password") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("password") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("password") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("password") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("password") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("password") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("password") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("password") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("password") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("password") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("date") +PASS Stringification of createInput("date") +PASS HTMLInputElement interface: createInput("date") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("date") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("date") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("date") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("date") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("date") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("date") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("date") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("date") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("date") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("date") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("date") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("date") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("date") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("date") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("date") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("date") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("date") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("date") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("date") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("date") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("date") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("date") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("date") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("date") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("date") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("date") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("date") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("date") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("date") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("date") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("date") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("date") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("date") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("date") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("date") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("date") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("date") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("date") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("date") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("month") +PASS Stringification of createInput("month") +PASS HTMLInputElement interface: createInput("month") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("month") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("month") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("month") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("month") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("month") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("month") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("month") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("month") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("month") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("month") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("month") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("month") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("month") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("month") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("month") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("month") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("month") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("month") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("month") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("month") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("month") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("month") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("month") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("month") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("month") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("month") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("month") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("month") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("month") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("month") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("month") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("month") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("month") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("month") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("month") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("month") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("month") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("month") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("month") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("week") +PASS Stringification of createInput("week") +PASS HTMLInputElement interface: createInput("week") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("week") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("week") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("week") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("week") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("week") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("week") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("week") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("week") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("week") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("week") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("week") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("week") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("week") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("week") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("week") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("week") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("week") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("week") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("week") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("week") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("week") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("week") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("week") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("week") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("week") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("week") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("week") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("week") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("week") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("week") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("week") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("week") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("week") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("week") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("week") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("week") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("week") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("week") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("week") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("time") +PASS Stringification of createInput("time") +PASS HTMLInputElement interface: createInput("time") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("time") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("time") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("time") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("time") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("time") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("time") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("time") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("time") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("time") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("time") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("time") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("time") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("time") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("time") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("time") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("time") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("time") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("time") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("time") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("time") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("time") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("time") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("time") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("time") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("time") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("time") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("time") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("time") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("time") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("time") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("time") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("time") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("time") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("time") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("time") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("time") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("time") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("time") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("time") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("datetime-local") +PASS Stringification of createInput("datetime-local") +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("datetime-local") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("number") +PASS Stringification of createInput("number") +PASS HTMLInputElement interface: createInput("number") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("number") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("number") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("number") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("number") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("number") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("number") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("number") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("number") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("number") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("number") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("number") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("number") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("number") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("number") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("number") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("number") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("number") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("number") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("number") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("number") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("number") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("number") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("number") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("number") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("number") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("number") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("number") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("number") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("number") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("number") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("number") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("number") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("number") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("number") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("number") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("number") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("number") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("number") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("number") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("range") +PASS Stringification of createInput("range") +PASS HTMLInputElement interface: createInput("range") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("range") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("range") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("range") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("range") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("range") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("range") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("range") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("range") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("range") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("range") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("range") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("range") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("range") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("range") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("range") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("range") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("range") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("range") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("range") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("range") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("range") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("range") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("range") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("range") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("range") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("range") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("range") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("range") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("range") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("range") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("range") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("range") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("range") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("range") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("range") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("range") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("range") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("range") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("range") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("color") +PASS Stringification of createInput("color") +PASS HTMLInputElement interface: createInput("color") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("color") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("color") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("color") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("color") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("color") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("color") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("color") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("color") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("color") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("color") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("color") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("color") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("color") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("color") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("color") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("color") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("color") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("color") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("color") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("color") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("color") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("color") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("color") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("color") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("color") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("color") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("color") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("color") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("color") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("color") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("color") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("color") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("color") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("color") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("color") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("color") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("color") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("color") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("color") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("checkbox") +PASS Stringification of createInput("checkbox") +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("checkbox") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("radio") +PASS Stringification of createInput("radio") +PASS HTMLInputElement interface: createInput("radio") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("radio") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("radio") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("radio") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("radio") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("radio") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("radio") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("radio") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("radio") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("radio") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("radio") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("radio") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("radio") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("radio") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("radio") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("radio") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("radio") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("radio") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("radio") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("radio") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("radio") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("radio") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("radio") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("radio") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("radio") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("radio") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("radio") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("radio") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("radio") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("radio") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("radio") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("radio") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("radio") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("radio") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("radio") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("file") +PASS Stringification of createInput("file") +PASS HTMLInputElement interface: createInput("file") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("file") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("file") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("file") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("file") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("file") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("file") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("file") must inherit property "form" with the proper type (8) +FAIL HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type (9) Unrecognized type FileList +PASS HTMLInputElement interface: createInput("file") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("file") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("file") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("file") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("file") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("file") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("file") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("file") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("file") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("file") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("file") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("file") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("file") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("file") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("file") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("file") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("file") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("file") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("file") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("file") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("file") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("file") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("file") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("file") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("file") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("file") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("file") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("file") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("file") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("file") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("file") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("submit") +PASS Stringification of createInput("submit") +PASS HTMLInputElement interface: createInput("submit") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("submit") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("submit") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("submit") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("submit") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("submit") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("submit") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("submit") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("submit") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("submit") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("submit") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("submit") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("submit") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("submit") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("submit") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("submit") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("submit") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("submit") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("submit") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("submit") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("submit") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("submit") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("submit") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("submit") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("submit") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("submit") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("submit") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("submit") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("submit") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("submit") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("submit") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("submit") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("submit") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("submit") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("submit") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("image") +PASS Stringification of createInput("image") +PASS HTMLInputElement interface: createInput("image") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("image") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("image") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("image") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("image") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("image") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("image") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("image") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("image") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("image") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("image") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("image") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("image") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("image") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("image") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("image") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("image") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("image") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("image") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("image") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("image") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("image") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("image") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("image") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("image") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("image") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("image") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("image") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("image") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("image") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("image") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("image") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("image") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("image") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("image") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("image") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("image") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("image") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("image") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("image") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("reset") +PASS Stringification of createInput("reset") +PASS HTMLInputElement interface: createInput("reset") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("reset") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("reset") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("reset") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("reset") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("reset") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("reset") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("reset") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("reset") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("reset") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("reset") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("reset") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("reset") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("reset") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("reset") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("reset") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("reset") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("reset") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("reset") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("reset") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("reset") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("reset") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("reset") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("reset") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("reset") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("reset") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("reset") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("reset") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("reset") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("reset") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("reset") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("reset") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("reset") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("reset") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("reset") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type (55) +PASS HTMLInputElement must be primary interface of createInput("button") +PASS Stringification of createInput("button") +PASS HTMLInputElement interface: createInput("button") must inherit property "accept" with the proper type (0) +PASS HTMLInputElement interface: createInput("button") must inherit property "alt" with the proper type (1) +PASS HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type (2) +PASS HTMLInputElement interface: createInput("button") must inherit property "autofocus" with the proper type (3) +PASS HTMLInputElement interface: createInput("button") must inherit property "defaultChecked" with the proper type (4) +PASS HTMLInputElement interface: createInput("button") must inherit property "checked" with the proper type (5) +PASS HTMLInputElement interface: createInput("button") must inherit property "dirName" with the proper type (6) +PASS HTMLInputElement interface: createInput("button") must inherit property "disabled" with the proper type (7) +PASS HTMLInputElement interface: createInput("button") must inherit property "form" with the proper type (8) +PASS HTMLInputElement interface: createInput("button") must inherit property "files" with the proper type (9) +PASS HTMLInputElement interface: createInput("button") must inherit property "formAction" with the proper type (10) +PASS HTMLInputElement interface: createInput("button") must inherit property "formEnctype" with the proper type (11) +PASS HTMLInputElement interface: createInput("button") must inherit property "formMethod" with the proper type (12) +PASS HTMLInputElement interface: createInput("button") must inherit property "formNoValidate" with the proper type (13) +PASS HTMLInputElement interface: createInput("button") must inherit property "formTarget" with the proper type (14) +PASS HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type (15) +PASS HTMLInputElement interface: createInput("button") must inherit property "indeterminate" with the proper type (16) +PASS HTMLInputElement interface: createInput("button") must inherit property "inputMode" with the proper type (17) +PASS HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type (18) +PASS HTMLInputElement interface: createInput("button") must inherit property "max" with the proper type (19) +PASS HTMLInputElement interface: createInput("button") must inherit property "maxLength" with the proper type (20) +PASS HTMLInputElement interface: createInput("button") must inherit property "min" with the proper type (21) +PASS HTMLInputElement interface: createInput("button") must inherit property "minLength" with the proper type (22) +PASS HTMLInputElement interface: createInput("button") must inherit property "multiple" with the proper type (23) +PASS HTMLInputElement interface: createInput("button") must inherit property "name" with the proper type (24) +PASS HTMLInputElement interface: createInput("button") must inherit property "pattern" with the proper type (25) +PASS HTMLInputElement interface: createInput("button") must inherit property "placeholder" with the proper type (26) +PASS HTMLInputElement interface: createInput("button") must inherit property "readOnly" with the proper type (27) +PASS HTMLInputElement interface: createInput("button") must inherit property "required" with the proper type (28) +PASS HTMLInputElement interface: createInput("button") must inherit property "size" with the proper type (29) +PASS HTMLInputElement interface: createInput("button") must inherit property "src" with the proper type (30) +PASS HTMLInputElement interface: createInput("button") must inherit property "step" with the proper type (31) +PASS HTMLInputElement interface: createInput("button") must inherit property "type" with the proper type (32) +PASS HTMLInputElement interface: createInput("button") must inherit property "defaultValue" with the proper type (33) +PASS HTMLInputElement interface: createInput("button") must inherit property "value" with the proper type (34) +PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type (35) +PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type (36) +PASS HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type (37) +PASS HTMLInputElement interface: createInput("button") must inherit property "stepUp" with the proper type (38) +PASS HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown" with the proper type (39) +PASS HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type (40) +PASS HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type (41) +PASS HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type (42) +PASS HTMLInputElement interface: createInput("button") must inherit property "checkValidity" with the proper type (43) +PASS HTMLInputElement interface: createInput("button") must inherit property "reportValidity" with the proper type (44) +PASS HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity" with the proper type (45) +PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type (46) +PASS HTMLInputElement interface: createInput("button") must inherit property "select" with the proper type (47) +PASS HTMLInputElement interface: createInput("button") must inherit property "selectionStart" with the proper type (48) +PASS HTMLInputElement interface: createInput("button") must inherit property "selectionEnd" with the proper type (49) +PASS HTMLInputElement interface: createInput("button") must inherit property "selectionDirection" with the proper type (50) +PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (51) +PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (52) +PASS HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange" with the proper type (53) +PASS HTMLInputElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on createInput("button") with too few arguments must throw TypeError +PASS HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type (54) +PASS HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type (55) +PASS HTMLButtonElement interface: existence and properties of interface object +PASS HTMLButtonElement interface object length +PASS HTMLButtonElement interface object name +PASS HTMLButtonElement interface: existence and properties of interface prototype object +PASS HTMLButtonElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLButtonElement interface: attribute autofocus +PASS HTMLButtonElement interface: attribute disabled +PASS HTMLButtonElement interface: attribute form +PASS HTMLButtonElement interface: attribute formAction +PASS HTMLButtonElement interface: attribute formEnctype +PASS HTMLButtonElement interface: attribute formMethod +PASS HTMLButtonElement interface: attribute formNoValidate +PASS HTMLButtonElement interface: attribute formTarget +PASS HTMLButtonElement interface: attribute name +PASS HTMLButtonElement interface: attribute type +PASS HTMLButtonElement interface: attribute value +PASS HTMLButtonElement interface: attribute willValidate +PASS HTMLButtonElement interface: attribute validity +PASS HTMLButtonElement interface: attribute validationMessage +PASS HTMLButtonElement interface: operation checkValidity() +PASS HTMLButtonElement interface: operation reportValidity() +PASS HTMLButtonElement interface: operation setCustomValidity(DOMString) +PASS HTMLButtonElement interface: attribute labels +PASS HTMLButtonElement must be primary interface of document.createElement("button") +PASS Stringification of document.createElement("button") +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "autofocus" with the proper type (0) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "disabled" with the proper type (1) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "form" with the proper type (2) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formAction" with the proper type (3) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formEnctype" with the proper type (4) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formMethod" with the proper type (5) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formNoValidate" with the proper type (6) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formTarget" with the proper type (7) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "name" with the proper type (8) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "type" with the proper type (9) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "value" with the proper type (10) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type (11) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validity" with the proper type (12) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type (13) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity" with the proper type (14) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity" with the proper type (15) +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity" with the proper type (16) +PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError +PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type (17) +PASS HTMLSelectElement interface: existence and properties of interface object +PASS HTMLSelectElement interface object length +PASS HTMLSelectElement interface object name +PASS HTMLSelectElement interface: existence and properties of interface prototype object +PASS HTMLSelectElement interface: existence and properties of interface prototype object's "constructor" property +FAIL HTMLSelectElement interface: attribute autocomplete assert_true: The prototype object must have a property "autocomplete" expected true got false +PASS HTMLSelectElement interface: attribute autofocus +PASS HTMLSelectElement interface: attribute disabled +PASS HTMLSelectElement interface: attribute form +PASS HTMLSelectElement interface: attribute multiple +PASS HTMLSelectElement interface: attribute name +PASS HTMLSelectElement interface: attribute required +PASS HTMLSelectElement interface: attribute size +PASS HTMLSelectElement interface: attribute type +PASS HTMLSelectElement interface: attribute options +PASS HTMLSelectElement interface: attribute length +PASS HTMLSelectElement interface: operation item(unsigned long) +PASS HTMLSelectElement interface: operation namedItem(DOMString) +PASS HTMLSelectElement interface: operation add([object Object],[object Object],[object Object],[object Object]) +PASS HTMLSelectElement interface: operation remove() +PASS HTMLSelectElement interface: operation remove(long) +PASS HTMLSelectElement interface: attribute selectedOptions +PASS HTMLSelectElement interface: attribute selectedIndex +PASS HTMLSelectElement interface: attribute value +PASS HTMLSelectElement interface: attribute willValidate +PASS HTMLSelectElement interface: attribute validity +PASS HTMLSelectElement interface: attribute validationMessage +PASS HTMLSelectElement interface: operation checkValidity() +PASS HTMLSelectElement interface: operation reportValidity() +PASS HTMLSelectElement interface: operation setCustomValidity(DOMString) +PASS HTMLSelectElement interface: attribute labels +PASS HTMLSelectElement must be primary interface of document.createElement("select") +PASS Stringification of document.createElement("select") +FAIL HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type (0) assert_inherits: property "autocomplete" not found in prototype chain +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "autofocus" with the proper type (1) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "disabled" with the proper type (2) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "form" with the proper type (3) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "multiple" with the proper type (4) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "name" with the proper type (5) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type (6) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "size" with the proper type (7) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "type" with the proper type (8) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "options" with the proper type (9) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "length" with the proper type (10) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "item" with the proper type (11) +PASS HTMLSelectElement interface: calling item(unsigned long) on document.createElement("select") with too few arguments must throw TypeError +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "namedItem" with the proper type (12) +PASS HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "add" with the proper type (13) +PASS HTMLSelectElement interface: calling add([object Object],[object Object],[object Object],[object Object]) on document.createElement("select") with too few arguments must throw TypeError +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove" with the proper type (14) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove" with the proper type (15) +PASS HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type (17) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedIndex" with the proper type (18) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "value" with the proper type (19) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type (20) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validity" with the proper type (21) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type (22) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity" with the proper type (23) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity" with the proper type (24) +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity" with the proper type (25) +PASS HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError +PASS HTMLSelectElement interface: document.createElement("select") must inherit property "labels" with the proper type (26) +PASS HTMLDataListElement interface: existence and properties of interface object +PASS HTMLDataListElement interface object length +PASS HTMLDataListElement interface object name +PASS HTMLDataListElement interface: existence and properties of interface prototype object +PASS HTMLDataListElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDataListElement interface: attribute options +PASS HTMLDataListElement must be primary interface of document.createElement("datalist") +PASS Stringification of document.createElement("datalist") +PASS HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type (0) +PASS HTMLOptGroupElement interface: existence and properties of interface object +PASS HTMLOptGroupElement interface object length +PASS HTMLOptGroupElement interface object name +PASS HTMLOptGroupElement interface: existence and properties of interface prototype object +PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLOptGroupElement interface: attribute disabled +PASS HTMLOptGroupElement interface: attribute label +PASS HTMLOptGroupElement must be primary interface of document.createElement("optgroup") +PASS Stringification of document.createElement("optgroup") +PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type (0) +PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type (1) +PASS HTMLOptionElement interface: existence and properties of interface object +PASS HTMLOptionElement interface object length +PASS HTMLOptionElement interface object name +PASS HTMLOptionElement interface: existence and properties of interface prototype object +PASS HTMLOptionElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLOptionElement interface: attribute disabled +PASS HTMLOptionElement interface: attribute form +PASS HTMLOptionElement interface: attribute label +PASS HTMLOptionElement interface: attribute defaultSelected +PASS HTMLOptionElement interface: attribute selected +PASS HTMLOptionElement interface: attribute value +PASS HTMLOptionElement interface: attribute text +PASS HTMLOptionElement interface: attribute index +PASS HTMLOptionElement must be primary interface of document.createElement("option") +PASS Stringification of document.createElement("option") +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "disabled" with the proper type (0) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type (1) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "label" with the proper type (2) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "defaultSelected" with the proper type (3) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "selected" with the proper type (4) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "value" with the proper type (5) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "text" with the proper type (6) +PASS HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type (7) +PASS HTMLOptionElement must be primary interface of new Option() +PASS Stringification of new Option() +PASS HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type (0) +PASS HTMLOptionElement interface: new Option() must inherit property "form" with the proper type (1) +PASS HTMLOptionElement interface: new Option() must inherit property "label" with the proper type (2) +PASS HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type (3) +PASS HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type (4) +PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type (5) +PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type (6) +PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7) +PASS HTMLTextAreaElement interface: existence and properties of interface object +PASS HTMLTextAreaElement interface object length +PASS HTMLTextAreaElement interface object name +PASS HTMLTextAreaElement interface: existence and properties of interface prototype object +PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's "constructor" property +FAIL HTMLTextAreaElement interface: attribute autocomplete assert_true: The prototype object must have a property "autocomplete" expected true got false +PASS HTMLTextAreaElement interface: attribute autofocus +PASS HTMLTextAreaElement interface: attribute cols +PASS HTMLTextAreaElement interface: attribute dirName +PASS HTMLTextAreaElement interface: attribute disabled +PASS HTMLTextAreaElement interface: attribute form +FAIL HTMLTextAreaElement interface: attribute inputMode assert_own_property: expected property "inputMode" missing +PASS HTMLTextAreaElement interface: attribute maxLength +PASS HTMLTextAreaElement interface: attribute minLength +PASS HTMLTextAreaElement interface: attribute name +PASS HTMLTextAreaElement interface: attribute placeholder +PASS HTMLTextAreaElement interface: attribute readOnly +PASS HTMLTextAreaElement interface: attribute required +PASS HTMLTextAreaElement interface: attribute rows +PASS HTMLTextAreaElement interface: attribute wrap +PASS HTMLTextAreaElement interface: attribute type +PASS HTMLTextAreaElement interface: attribute defaultValue +PASS HTMLTextAreaElement interface: attribute value +PASS HTMLTextAreaElement interface: attribute textLength +PASS HTMLTextAreaElement interface: attribute willValidate +PASS HTMLTextAreaElement interface: attribute validity +PASS HTMLTextAreaElement interface: attribute validationMessage +PASS HTMLTextAreaElement interface: operation checkValidity() +PASS HTMLTextAreaElement interface: operation reportValidity() +PASS HTMLTextAreaElement interface: operation setCustomValidity(DOMString) +PASS HTMLTextAreaElement interface: attribute labels +PASS HTMLTextAreaElement interface: operation select() +PASS HTMLTextAreaElement interface: attribute selectionStart +PASS HTMLTextAreaElement interface: attribute selectionEnd +PASS HTMLTextAreaElement interface: attribute selectionDirection +PASS HTMLTextAreaElement interface: operation setRangeText(DOMString) +PASS HTMLTextAreaElement interface: operation setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) +PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long,unsigned long,DOMString) +PASS HTMLTextAreaElement must be primary interface of document.createElement("textarea") +PASS Stringification of document.createElement("textarea") +FAIL HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type (0) assert_inherits: property "autocomplete" not found in prototype chain +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autofocus" with the proper type (1) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "cols" with the proper type (2) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type (3) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "disabled" with the proper type (4) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "form" with the proper type (5) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "inputMode" with the proper type (6) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type (7) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type (8) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "name" with the proper type (9) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "placeholder" with the proper type (10) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "readOnly" with the proper type (11) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "required" with the proper type (12) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "rows" with the proper type (13) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "wrap" with the proper type (14) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "type" with the proper type (15) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "defaultValue" with the proper type (16) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "value" with the proper type (17) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type (18) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type (19) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type (20) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type (21) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity" with the proper type (22) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity" with the proper type (23) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity" with the proper type (24) +PASS HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "labels" with the proper type (25) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select" with the proper type (26) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionStart" with the proper type (27) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionEnd" with the proper type (28) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionDirection" with the proper type (29) +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText" with the proper type (30) +PASS HTMLTextAreaElement interface: calling setRangeText(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText" with the proper type (31) +PASS HTMLTextAreaElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError +PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setSelectionRange" with the proper type (32) +PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long,unsigned long,DOMString) on document.createElement("textarea") with too few arguments must throw TypeError +PASS HTMLOutputElement interface: existence and properties of interface object +PASS HTMLOutputElement interface object length +PASS HTMLOutputElement interface object name +PASS HTMLOutputElement interface: existence and properties of interface prototype object +PASS HTMLOutputElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLOutputElement interface: attribute htmlFor +PASS HTMLOutputElement interface: attribute form +PASS HTMLOutputElement interface: attribute name +PASS HTMLOutputElement interface: attribute type +PASS HTMLOutputElement interface: attribute defaultValue +PASS HTMLOutputElement interface: attribute value +PASS HTMLOutputElement interface: attribute willValidate +PASS HTMLOutputElement interface: attribute validity +PASS HTMLOutputElement interface: attribute validationMessage +PASS HTMLOutputElement interface: operation checkValidity() +PASS HTMLOutputElement interface: operation reportValidity() +PASS HTMLOutputElement interface: operation setCustomValidity(DOMString) +PASS HTMLOutputElement interface: attribute labels +PASS HTMLOutputElement must be primary interface of document.createElement("output") +PASS Stringification of document.createElement("output") +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type (0) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "form" with the proper type (1) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type (2) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type (3) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type (4) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type (5) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type (6) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validity" with the proper type (7) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type (8) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity" with the proper type (9) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity" with the proper type (10) +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity" with the proper type (11) +PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError +PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type (12) +PASS HTMLProgressElement interface: existence and properties of interface object +PASS HTMLProgressElement interface object length +PASS HTMLProgressElement interface object name +PASS HTMLProgressElement interface: existence and properties of interface prototype object +PASS HTMLProgressElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLProgressElement interface: attribute value +PASS HTMLProgressElement interface: attribute max +PASS HTMLProgressElement interface: attribute position +PASS HTMLProgressElement interface: attribute labels +PASS HTMLProgressElement must be primary interface of document.createElement("progress") +PASS Stringification of document.createElement("progress") +PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type (0) +PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type (1) +PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type (2) +PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type (3) +PASS HTMLMeterElement interface: existence and properties of interface object +PASS HTMLMeterElement interface object length +PASS HTMLMeterElement interface object name +PASS HTMLMeterElement interface: existence and properties of interface prototype object +PASS HTMLMeterElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMeterElement interface: attribute value +PASS HTMLMeterElement interface: attribute min +PASS HTMLMeterElement interface: attribute max +PASS HTMLMeterElement interface: attribute low +PASS HTMLMeterElement interface: attribute high +PASS HTMLMeterElement interface: attribute optimum +PASS HTMLMeterElement interface: attribute labels +PASS HTMLMeterElement must be primary interface of document.createElement("meter") +PASS Stringification of document.createElement("meter") +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type (0) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type (1) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type (2) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type (3) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type (4) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type (5) +PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type (6) +PASS HTMLFieldSetElement interface: existence and properties of interface object +PASS HTMLFieldSetElement interface object length +PASS HTMLFieldSetElement interface object name +PASS HTMLFieldSetElement interface: existence and properties of interface prototype object +PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFieldSetElement interface: attribute disabled +PASS HTMLFieldSetElement interface: attribute form +PASS HTMLFieldSetElement interface: attribute name +PASS HTMLFieldSetElement interface: attribute type +PASS HTMLFieldSetElement interface: attribute elements +PASS HTMLFieldSetElement interface: attribute willValidate +PASS HTMLFieldSetElement interface: attribute validity +PASS HTMLFieldSetElement interface: attribute validationMessage +PASS HTMLFieldSetElement interface: operation checkValidity() +PASS HTMLFieldSetElement interface: operation reportValidity() +PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString) +PASS HTMLLegendElement interface: existence and properties of interface object +PASS HTMLLegendElement interface object length +PASS HTMLLegendElement interface object name +PASS HTMLLegendElement interface: existence and properties of interface prototype object +PASS HTMLLegendElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLLegendElement interface: attribute form +PASS HTMLLegendElement interface: attribute align +PASS HTMLLegendElement must be primary interface of document.createElement("legend") +PASS Stringification of document.createElement("legend") +PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "form" with the proper type (0) +PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type (1) +PASS ValidityState interface: existence and properties of interface object +PASS ValidityState interface object length +PASS ValidityState interface object name +PASS ValidityState interface: existence and properties of interface prototype object +PASS ValidityState interface: existence and properties of interface prototype object's "constructor" property +PASS ValidityState interface: attribute valueMissing +PASS ValidityState interface: attribute typeMismatch +PASS ValidityState interface: attribute patternMismatch +PASS ValidityState interface: attribute tooLong +PASS ValidityState interface: attribute tooShort +PASS ValidityState interface: attribute rangeUnderflow +PASS ValidityState interface: attribute rangeOverflow +PASS ValidityState interface: attribute stepMismatch +PASS ValidityState interface: attribute badInput +PASS ValidityState interface: attribute customError +PASS ValidityState interface: attribute valid +PASS ValidityState must be primary interface of document.createElement("input").validity +PASS Stringification of document.createElement("input").validity +PASS ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type (0) +PASS ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type (1) +PASS ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type (2) +PASS ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type (3) +PASS ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type (4) +PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type (5) +PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type (6) +PASS ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type (7) +PASS ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type (8) +PASS ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type (9) +PASS ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type (10) +PASS HTMLDetailsElement interface: existence and properties of interface object +PASS HTMLDetailsElement interface object length +PASS HTMLDetailsElement interface object name +PASS HTMLDetailsElement interface: existence and properties of interface prototype object +PASS HTMLDetailsElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDetailsElement interface: attribute open +PASS HTMLDetailsElement must be primary interface of document.createElement("details") +PASS Stringification of document.createElement("details") +PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type (0) +PASS HTMLMenuElement interface: existence and properties of interface object +PASS HTMLMenuElement interface object length +PASS HTMLMenuElement interface object name +PASS HTMLMenuElement interface: existence and properties of interface prototype object +PASS HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMenuElement interface: attribute compact +PASS HTMLMenuElement must be primary interface of document.createElement("menu") +PASS Stringification of document.createElement("menu") +PASS HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type (0) +PASS HTMLDialogElement interface: existence and properties of interface object +PASS HTMLDialogElement interface object length +PASS HTMLDialogElement interface object name +PASS HTMLDialogElement interface: existence and properties of interface prototype object +PASS HTMLDialogElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDialogElement interface: attribute open +PASS HTMLDialogElement interface: attribute returnValue +PASS HTMLDialogElement interface: operation show() +PASS HTMLDialogElement interface: operation showModal() +PASS HTMLDialogElement interface: operation close(DOMString) +PASS HTMLScriptElement interface: existence and properties of interface object +PASS HTMLScriptElement interface object length +PASS HTMLScriptElement interface object name +PASS HTMLScriptElement interface: existence and properties of interface prototype object +PASS HTMLScriptElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLScriptElement interface: attribute src +PASS HTMLScriptElement interface: attribute type +PASS HTMLScriptElement interface: attribute noModule +PASS HTMLScriptElement interface: attribute charset +PASS HTMLScriptElement interface: attribute async +PASS HTMLScriptElement interface: attribute defer +PASS HTMLScriptElement interface: attribute crossOrigin +PASS HTMLScriptElement interface: attribute text +FAIL HTMLScriptElement interface: attribute nonce assert_own_property: expected property "nonce" missing +PASS HTMLScriptElement interface: attribute integrity +PASS HTMLScriptElement interface: attribute event +PASS HTMLScriptElement interface: attribute htmlFor +PASS HTMLScriptElement must be primary interface of document.createElement("script") +PASS Stringification of document.createElement("script") +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "src" with the proper type (0) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "type" with the proper type (1) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type (2) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "charset" with the proper type (3) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type (4) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "defer" with the proper type (5) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type (6) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type (7) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "nonce" with the proper type (8) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "integrity" with the proper type (9) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type (10) +PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type (11) +PASS HTMLTemplateElement interface: existence and properties of interface object +PASS HTMLTemplateElement interface object length +PASS HTMLTemplateElement interface object name +PASS HTMLTemplateElement interface: existence and properties of interface prototype object +PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLTemplateElement interface: attribute content +PASS HTMLTemplateElement must be primary interface of document.createElement("template") +PASS Stringification of document.createElement("template") +PASS HTMLTemplateElement interface: document.createElement("template") must inherit property "content" with the proper type (0) +PASS HTMLSlotElement interface: existence and properties of interface object +PASS HTMLSlotElement interface object length +PASS HTMLSlotElement interface object name +PASS HTMLSlotElement interface: existence and properties of interface prototype object +PASS HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLSlotElement interface: attribute name +PASS HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions) +PASS HTMLSlotElement must be primary interface of document.createElement("slot") +PASS Stringification of document.createElement("slot") +PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type (0) +PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes" with the proper type (1) +PASS HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError +PASS HTMLCanvasElement interface: existence and properties of interface object +PASS HTMLCanvasElement interface object length +PASS HTMLCanvasElement interface object name +PASS HTMLCanvasElement interface: existence and properties of interface prototype object +PASS HTMLCanvasElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLCanvasElement interface: attribute width +PASS HTMLCanvasElement interface: attribute height +PASS HTMLCanvasElement interface: operation getContext(DOMString,any) +PASS HTMLCanvasElement interface: operation toDataURL(DOMString,any) +PASS HTMLCanvasElement interface: operation toBlob(BlobCallback,DOMString,any) +PASS HTMLCanvasElement must be primary interface of document.createElement("canvas") +PASS Stringification of document.createElement("canvas") +PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "width" with the proper type (0) +PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "height" with the proper type (1) +PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "getContext" with the proper type (2) +PASS HTMLCanvasElement interface: calling getContext(DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError +PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL" with the proper type (3) +PASS HTMLCanvasElement interface: calling toDataURL(DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError +PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob" with the proper type (4) +PASS HTMLCanvasElement interface: calling toBlob(BlobCallback,DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: existence and properties of interface object +PASS CanvasRenderingContext2D interface object length +PASS CanvasRenderingContext2D interface object name +PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object +PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasRenderingContext2D interface: attribute canvas +PASS CanvasRenderingContext2D interface: operation save() +PASS CanvasRenderingContext2D interface: operation restore() +PASS CanvasRenderingContext2D interface: operation scale(unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation rotate(unrestricted double) +PASS CanvasRenderingContext2D interface: operation translate(unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation transform(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +FAIL CanvasRenderingContext2D interface: operation getTransform() assert_own_property: interface prototype object missing non-static operation expected property "getTransform" missing +FAIL CanvasRenderingContext2D interface: operation setTransform(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) assert_equals: property has wrong .length expected 0 but got 6 +FAIL CanvasRenderingContext2D interface: operation setTransform(DOMMatrixInit) assert_equals: property has wrong .length expected 0 but got 6 +PASS CanvasRenderingContext2D interface: operation resetTransform() +PASS CanvasRenderingContext2D interface: attribute globalAlpha +PASS CanvasRenderingContext2D interface: attribute globalCompositeOperation +PASS CanvasRenderingContext2D interface: attribute imageSmoothingEnabled +PASS CanvasRenderingContext2D interface: attribute imageSmoothingQuality +PASS CanvasRenderingContext2D interface: attribute strokeStyle +PASS CanvasRenderingContext2D interface: attribute fillStyle +PASS CanvasRenderingContext2D interface: operation createLinearGradient(double,double,double,double) +PASS CanvasRenderingContext2D interface: operation createRadialGradient(double,double,double,double,double,double) +PASS CanvasRenderingContext2D interface: operation createPattern(CanvasImageSource,DOMString) +PASS CanvasRenderingContext2D interface: attribute shadowOffsetX +PASS CanvasRenderingContext2D interface: attribute shadowOffsetY +PASS CanvasRenderingContext2D interface: attribute shadowBlur +PASS CanvasRenderingContext2D interface: attribute shadowColor +PASS CanvasRenderingContext2D interface: attribute filter +PASS CanvasRenderingContext2D interface: operation clearRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation fillRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation strokeRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation beginPath() +PASS CanvasRenderingContext2D interface: operation fill(CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation fill(Path2D,CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation stroke() +PASS CanvasRenderingContext2D interface: operation stroke(Path2D) +PASS CanvasRenderingContext2D interface: operation clip(CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation clip(Path2D,CanvasFillRule) +FAIL CanvasRenderingContext2D interface: operation resetClip() assert_own_property: interface prototype object missing non-static operation expected property "resetClip" missing +PASS CanvasRenderingContext2D interface: operation isPointInPath(unrestricted double,unrestricted double,CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation isPointInPath(Path2D,unrestricted double,unrestricted double,CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation isPointInStroke(Path2D,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element) +PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D,Element) +PASS CanvasRenderingContext2D interface: operation scrollPathIntoView() +PASS CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D) +PASS CanvasRenderingContext2D interface: operation fillText(DOMString,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation strokeText(DOMString,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation measureText(DOMString) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation addHitRegion(HitRegionOptions) +PASS CanvasRenderingContext2D interface: operation removeHitRegion(DOMString) +PASS CanvasRenderingContext2D interface: operation clearHitRegions() +PASS CanvasRenderingContext2D interface: operation createImageData(double,double) +PASS CanvasRenderingContext2D interface: operation createImageData(ImageData) +PASS CanvasRenderingContext2D interface: operation getImageData(double,double,double,double) +PASS CanvasRenderingContext2D interface: operation putImageData(ImageData,double,double) +PASS CanvasRenderingContext2D interface: operation putImageData(ImageData,double,double,double,double,double,double) +PASS CanvasRenderingContext2D interface: attribute lineWidth +PASS CanvasRenderingContext2D interface: attribute lineCap +PASS CanvasRenderingContext2D interface: attribute lineJoin +PASS CanvasRenderingContext2D interface: attribute miterLimit +PASS CanvasRenderingContext2D interface: operation setLineDash([object Object]) +PASS CanvasRenderingContext2D interface: operation getLineDash() +PASS CanvasRenderingContext2D interface: attribute lineDashOffset +PASS CanvasRenderingContext2D interface: attribute font +PASS CanvasRenderingContext2D interface: attribute textAlign +PASS CanvasRenderingContext2D interface: attribute textBaseline +PASS CanvasRenderingContext2D interface: attribute direction +PASS CanvasRenderingContext2D interface: operation closePath() +PASS CanvasRenderingContext2D interface: operation moveTo(unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation lineTo(unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS CanvasRenderingContext2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) +PASS CanvasRenderingContext2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) +PASS CanvasRenderingContext2D must be primary interface of document.createElement("canvas").getContext("2d") +PASS Stringification of document.createElement("canvas").getContext("2d") +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "canvas" with the proper type (0) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "save" with the proper type (1) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "restore" with the proper type (2) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scale" with the proper type (3) +PASS CanvasRenderingContext2D interface: calling scale(unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rotate" with the proper type (4) +PASS CanvasRenderingContext2D interface: calling rotate(unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "translate" with the proper type (5) +PASS CanvasRenderingContext2D interface: calling translate(unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "transform" with the proper type (6) +PASS CanvasRenderingContext2D interface: calling transform(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +FAIL CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform" with the proper type (7) assert_inherits: property "getTransform" not found in prototype chain +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform" with the proper type (8) +PASS CanvasRenderingContext2D interface: calling setTransform(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform" with the proper type (9) +PASS CanvasRenderingContext2D interface: calling setTransform(DOMMatrixInit) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetTransform" with the proper type (10) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalAlpha" with the proper type (11) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalCompositeOperation" with the proper type (12) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingEnabled" with the proper type (13) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type (14) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeStyle" with the proper type (15) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillStyle" with the proper type (16) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createLinearGradient" with the proper type (17) +PASS CanvasRenderingContext2D interface: calling createLinearGradient(double,double,double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createRadialGradient" with the proper type (18) +PASS CanvasRenderingContext2D interface: calling createRadialGradient(double,double,double,double,double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createPattern" with the proper type (19) +PASS CanvasRenderingContext2D interface: calling createPattern(CanvasImageSource,DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetX" with the proper type (20) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetY" with the proper type (21) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowBlur" with the proper type (22) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type (23) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type (24) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clearRect" with the proper type (25) +PASS CanvasRenderingContext2D interface: calling clearRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillRect" with the proper type (26) +PASS CanvasRenderingContext2D interface: calling fillRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeRect" with the proper type (27) +PASS CanvasRenderingContext2D interface: calling strokeRect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "beginPath" with the proper type (28) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill" with the proper type (29) +PASS CanvasRenderingContext2D interface: calling fill(CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill" with the proper type (30) +PASS CanvasRenderingContext2D interface: calling fill(Path2D,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke" with the proper type (31) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke" with the proper type (32) +PASS CanvasRenderingContext2D interface: calling stroke(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip" with the proper type (33) +PASS CanvasRenderingContext2D interface: calling clip(CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip" with the proper type (34) +PASS CanvasRenderingContext2D interface: calling clip(Path2D,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +FAIL CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip" with the proper type (35) assert_inherits: property "resetClip" not found in prototype chain +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath" with the proper type (36) +PASS CanvasRenderingContext2D interface: calling isPointInPath(unrestricted double,unrestricted double,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath" with the proper type (37) +PASS CanvasRenderingContext2D interface: calling isPointInPath(Path2D,unrestricted double,unrestricted double,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke" with the proper type (38) +PASS CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke" with the proper type (39) +PASS CanvasRenderingContext2D interface: calling isPointInStroke(Path2D,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded" with the proper type (40) +PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded" with the proper type (41) +PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Path2D,Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView" with the proper type (42) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView" with the proper type (43) +PASS CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillText" with the proper type (44) +PASS CanvasRenderingContext2D interface: calling fillText(DOMString,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeText" with the proper type (45) +PASS CanvasRenderingContext2D interface: calling strokeText(DOMString,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "measureText" with the proper type (46) +PASS CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage" with the proper type (47) +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage" with the proper type (48) +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage" with the proper type (49) +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "addHitRegion" with the proper type (50) +PASS CanvasRenderingContext2D interface: calling addHitRegion(HitRegionOptions) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "removeHitRegion" with the proper type (51) +PASS CanvasRenderingContext2D interface: calling removeHitRegion(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clearHitRegions" with the proper type (52) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData" with the proper type (53) +PASS CanvasRenderingContext2D interface: calling createImageData(double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData" with the proper type (54) +PASS CanvasRenderingContext2D interface: calling createImageData(ImageData) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getImageData" with the proper type (55) +PASS CanvasRenderingContext2D interface: calling getImageData(double,double,double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData" with the proper type (56) +PASS CanvasRenderingContext2D interface: calling putImageData(ImageData,double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData" with the proper type (57) +PASS CanvasRenderingContext2D interface: calling putImageData(ImageData,double,double,double,double,double,double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineWidth" with the proper type (58) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineCap" with the proper type (59) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineJoin" with the proper type (60) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "miterLimit" with the proper type (61) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash" with the proper type (62) +PASS CanvasRenderingContext2D interface: calling setLineDash([object Object]) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash" with the proper type (63) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type (64) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type (65) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type (66) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type (67) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (68) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "closePath" with the proper type (69) +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "moveTo" with the proper type (70) +PASS CanvasRenderingContext2D interface: calling moveTo(unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineTo" with the proper type (71) +PASS CanvasRenderingContext2D interface: calling lineTo(unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "quadraticCurveTo" with the proper type (72) +PASS CanvasRenderingContext2D interface: calling quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "bezierCurveTo" with the proper type (73) +PASS CanvasRenderingContext2D interface: calling bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arcTo" with the proper type (74) +PASS CanvasRenderingContext2D interface: calling arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arcTo" with the proper type (75) +PASS CanvasRenderingContext2D interface: calling arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rect" with the proper type (76) +PASS CanvasRenderingContext2D interface: calling rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arc" with the proper type (77) +PASS CanvasRenderingContext2D interface: calling arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse" with the proper type (78) +PASS CanvasRenderingContext2D interface: calling ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasGradient interface: existence and properties of interface object +PASS CanvasGradient interface object length +PASS CanvasGradient interface object name +PASS CanvasGradient interface: existence and properties of interface prototype object +PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasGradient interface: operation addColorStop(double,DOMString) +PASS CanvasPattern interface: existence and properties of interface object +PASS CanvasPattern interface object length +PASS CanvasPattern interface object name +PASS CanvasPattern interface: existence and properties of interface prototype object +PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property +FAIL CanvasPattern interface: operation setTransform(DOMMatrixInit) assert_equals: property has wrong .length expected 0 but got 1 +PASS TextMetrics interface: existence and properties of interface object +PASS TextMetrics interface object length +PASS TextMetrics interface object name +PASS TextMetrics interface: existence and properties of interface prototype object +PASS TextMetrics interface: existence and properties of interface prototype object's "constructor" property +PASS TextMetrics interface: attribute width +PASS TextMetrics interface: attribute actualBoundingBoxLeft +PASS TextMetrics interface: attribute actualBoundingBoxRight +PASS TextMetrics interface: attribute fontBoundingBoxAscent +PASS TextMetrics interface: attribute fontBoundingBoxDescent +PASS TextMetrics interface: attribute actualBoundingBoxAscent +PASS TextMetrics interface: attribute actualBoundingBoxDescent +PASS TextMetrics interface: attribute emHeightAscent +PASS TextMetrics interface: attribute emHeightDescent +PASS TextMetrics interface: attribute hangingBaseline +PASS TextMetrics interface: attribute alphabeticBaseline +PASS TextMetrics interface: attribute ideographicBaseline +PASS ImageData interface: existence and properties of interface object +PASS ImageData interface object length +PASS ImageData interface object name +PASS ImageData interface: existence and properties of interface prototype object +PASS ImageData interface: existence and properties of interface prototype object's "constructor" property +PASS ImageData interface: attribute width +PASS ImageData interface: attribute height +PASS ImageData interface: attribute data +PASS Path2D interface: existence and properties of interface object +PASS Path2D interface object length +PASS Path2D interface object name +PASS Path2D interface: existence and properties of interface prototype object +PASS Path2D interface: existence and properties of interface prototype object's "constructor" property +PASS Path2D interface: operation addPath(Path2D,DOMMatrixInit) +PASS Path2D interface: operation closePath() +PASS Path2D interface: operation moveTo(unrestricted double,unrestricted double) +PASS Path2D interface: operation lineTo(unrestricted double,unrestricted double) +PASS Path2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS Path2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double) +PASS Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) +PASS Path2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean) +FAIL DataTransfer interface: existence and properties of interface object assert_throws: interface object didn't throw TypeError when called as a constructor function "function () { [native code] }" did not throw +PASS DataTransfer interface object length +PASS DataTransfer interface object name +PASS DataTransfer interface: existence and properties of interface prototype object +PASS DataTransfer interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransfer interface: attribute dropEffect +PASS DataTransfer interface: attribute effectAllowed +PASS DataTransfer interface: attribute items +PASS DataTransfer interface: operation setDragImage(Element,long,long) +PASS DataTransfer interface: attribute types +PASS DataTransfer interface: operation getData(DOMString) +PASS DataTransfer interface: operation setData(DOMString,DOMString) +PASS DataTransfer interface: operation clearData(DOMString) +PASS DataTransfer interface: attribute files +PASS DataTransferItemList interface: existence and properties of interface object +PASS DataTransferItemList interface object length +PASS DataTransferItemList interface object name +PASS DataTransferItemList interface: existence and properties of interface prototype object +PASS DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransferItemList interface: attribute length +PASS DataTransferItemList interface: operation add(DOMString,DOMString) +PASS DataTransferItemList interface: operation add(File) +PASS DataTransferItemList interface: operation remove(unsigned long) +PASS DataTransferItemList interface: operation clear() +PASS DataTransferItem interface: existence and properties of interface object +PASS DataTransferItem interface object length +PASS DataTransferItem interface object name +PASS DataTransferItem interface: existence and properties of interface prototype object +PASS DataTransferItem interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransferItem interface: attribute kind +PASS DataTransferItem interface: attribute type +PASS DataTransferItem interface: operation getAsString(FunctionStringCallback) +PASS DataTransferItem interface: operation getAsFile() +PASS DragEvent interface: existence and properties of interface object +PASS DragEvent interface object length +PASS DragEvent interface object name +PASS DragEvent interface: existence and properties of interface prototype object +PASS DragEvent interface: existence and properties of interface prototype object's "constructor" property +PASS DragEvent interface: attribute dataTransfer +PASS Window interface: existence and properties of interface object +PASS Window interface object length +PASS Window interface object name +PASS Window interface: existence and properties of interface prototype object +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true +PASS Window interface: existence and properties of interface prototype object's "constructor" property +FAIL Window interface: attribute self assert_equals: "self" must have a getter expected "function" but got "undefined" +PASS Window interface: attribute name +PASS Window interface: attribute history +PASS Window interface: attribute locationbar +PASS Window interface: attribute menubar +PASS Window interface: attribute personalbar +PASS Window interface: attribute scrollbars +PASS Window interface: attribute statusbar +PASS Window interface: attribute toolbar +PASS Window interface: attribute status +PASS Window interface: operation close() +FAIL Window interface: attribute closed assert_equals: "closed" must have a getter expected "function" but got "undefined" +PASS Window interface: operation stop() +PASS Window interface: operation focus() +PASS Window interface: operation blur() +FAIL Window interface: attribute frames assert_equals: "frames" must have a getter expected "function" but got "undefined" +FAIL Window interface: attribute length assert_equals: "length" must have a getter expected "function" but got "undefined" +FAIL Window interface: attribute opener assert_equals: "opener" must have a getter expected "function" but got "undefined" +FAIL Window interface: attribute parent assert_equals: "parent" must have a getter expected "function" but got "undefined" +PASS Window interface: attribute frameElement +FAIL Window interface: operation open(DOMString,DOMString,DOMString,boolean) assert_equals: property has wrong .length expected 0 but got 2 +PASS Window interface: attribute navigator +PASS Window interface: attribute external +PASS Window interface: attribute applicationCache +PASS Window interface: operation alert() +PASS Window interface: operation confirm(DOMString) +PASS Window interface: operation prompt(DOMString,DOMString) +PASS Window interface: operation print() +PASS Window interface: operation postMessage(any,DOMString,[object Object]) +PASS Window interface: operation captureEvents() +PASS Window interface: operation releaseEvents() +PASS Window interface: attribute onabort +PASS Window interface: attribute onauxclick +PASS Window interface: attribute onblur +PASS Window interface: attribute oncancel +PASS Window interface: attribute oncanplay +PASS Window interface: attribute oncanplaythrough +PASS Window interface: attribute onchange +PASS Window interface: attribute onclick +PASS Window interface: attribute onclose +PASS Window interface: attribute oncontextmenu +PASS Window interface: attribute oncuechange +PASS Window interface: attribute ondblclick +PASS Window interface: attribute ondrag +PASS Window interface: attribute ondragend +PASS Window interface: attribute ondragenter +FAIL Window interface: attribute ondragexit assert_own_property: The global object must have a property "ondragexit" expected property "ondragexit" missing +PASS Window interface: attribute ondragleave +PASS Window interface: attribute ondragover +PASS Window interface: attribute ondragstart +PASS Window interface: attribute ondrop +PASS Window interface: attribute ondurationchange +PASS Window interface: attribute onemptied +PASS Window interface: attribute onended +PASS Window interface: attribute onerror +PASS Window interface: attribute onfocus +PASS Window interface: attribute oninput +PASS Window interface: attribute oninvalid +PASS Window interface: attribute onkeydown +PASS Window interface: attribute onkeypress +PASS Window interface: attribute onkeyup +PASS Window interface: attribute onload +PASS Window interface: attribute onloadeddata +PASS Window interface: attribute onloadedmetadata +FAIL Window interface: attribute onloadend assert_own_property: The global object must have a property "onloadend" expected property "onloadend" missing +PASS Window interface: attribute onloadstart +PASS Window interface: attribute onmousedown +PASS Window interface: attribute onmouseenter +PASS Window interface: attribute onmouseleave +PASS Window interface: attribute onmousemove +PASS Window interface: attribute onmouseout +PASS Window interface: attribute onmouseover +PASS Window interface: attribute onmouseup +PASS Window interface: attribute onwheel +PASS Window interface: attribute onpause +PASS Window interface: attribute onplay +PASS Window interface: attribute onplaying +PASS Window interface: attribute onprogress +PASS Window interface: attribute onratechange +PASS Window interface: attribute onreset +PASS Window interface: attribute onresize +PASS Window interface: attribute onscroll +PASS Window interface: attribute onseeked +PASS Window interface: attribute onseeking +PASS Window interface: attribute onselect +PASS Window interface: attribute onstalled +PASS Window interface: attribute onsubmit +PASS Window interface: attribute onsuspend +PASS Window interface: attribute ontimeupdate +PASS Window interface: attribute ontoggle +PASS Window interface: attribute onvolumechange +PASS Window interface: attribute onwaiting +FAIL Window interface: attribute onafterprint assert_own_property: The global object must have a property "onafterprint" expected property "onafterprint" missing +FAIL Window interface: attribute onbeforeprint assert_own_property: The global object must have a property "onbeforeprint" expected property "onbeforeprint" missing +PASS Window interface: attribute onbeforeunload +PASS Window interface: attribute onhashchange +PASS Window interface: attribute onlanguagechange +PASS Window interface: attribute onmessage +PASS Window interface: attribute onmessageerror +PASS Window interface: attribute onoffline +PASS Window interface: attribute ononline +PASS Window interface: attribute onpagehide +PASS Window interface: attribute onpageshow +PASS Window interface: attribute onpopstate +PASS Window interface: attribute onrejectionhandled +PASS Window interface: attribute onstorage +PASS Window interface: attribute onunhandledrejection +PASS Window interface: attribute onunload +PASS Window interface: attribute origin +PASS Window interface: operation btoa(DOMString) +PASS Window interface: operation atob(DOMString) +PASS Window interface: operation setTimeout(TimerHandler,long,any) +PASS Window interface: operation clearTimeout(long) +PASS Window interface: operation setInterval(TimerHandler,long,any) +PASS Window interface: operation clearInterval(long) +PASS Window interface: operation createImageBitmap(ImageBitmapSource,ImageBitmapOptions) +PASS Window interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions) +PASS Window interface: attribute sessionStorage +PASS Window interface: attribute localStorage +PASS Window must be primary interface of window +PASS Stringification of window +FAIL Window interface: window must have own property "window" assert_false: property descriptor should not have a "value" field expected false got true +PASS Window interface: window must inherit property "self" with the proper type (1) +PASS Window interface: window must have own property "document" +PASS Window interface: window must inherit property "name" with the proper type (3) +FAIL Window interface: window must have own property "location" assert_false: property descriptor should not have a "value" field expected false got true +PASS Window interface: window must inherit property "history" with the proper type (5) +PASS Window interface: window must inherit property "locationbar" with the proper type (6) +PASS Window interface: window must inherit property "menubar" with the proper type (7) +PASS Window interface: window must inherit property "personalbar" with the proper type (8) +PASS Window interface: window must inherit property "scrollbars" with the proper type (9) +PASS Window interface: window must inherit property "statusbar" with the proper type (10) +PASS Window interface: window must inherit property "toolbar" with the proper type (11) +PASS Window interface: window must inherit property "status" with the proper type (12) +PASS Window interface: window must inherit property "close" with the proper type (13) +PASS Window interface: window must inherit property "closed" with the proper type (14) +PASS Window interface: window must inherit property "stop" with the proper type (15) +PASS Window interface: window must inherit property "focus" with the proper type (16) +PASS Window interface: window must inherit property "blur" with the proper type (17) +PASS Window interface: window must inherit property "frames" with the proper type (18) +PASS Window interface: window must inherit property "length" with the proper type (19) +FAIL Window interface: window must have own property "top" assert_false: property descriptor should not have a "value" field expected false got true +PASS Window interface: window must inherit property "opener" with the proper type (21) +PASS Window interface: window must inherit property "parent" with the proper type (22) +PASS Window interface: window must inherit property "frameElement" with the proper type (23) +PASS Window interface: window must inherit property "open" with the proper type (24) +PASS Window interface: calling open(DOMString,DOMString,DOMString,boolean) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "navigator" with the proper type (27) +PASS Window interface: window must inherit property "external" with the proper type (28) +PASS Window interface: window must inherit property "applicationCache" with the proper type (29) +PASS Window interface: window must inherit property "alert" with the proper type (30) +PASS Window interface: window must inherit property "confirm" with the proper type (31) +PASS Window interface: calling confirm(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "prompt" with the proper type (32) +PASS Window interface: calling prompt(DOMString,DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "print" with the proper type (33) +PASS Window interface: window must inherit property "postMessage" with the proper type (34) +PASS Window interface: calling postMessage(any,DOMString,[object Object]) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "captureEvents" with the proper type (35) +PASS Window interface: window must inherit property "releaseEvents" with the proper type (36) +PASS Window interface: window must inherit property "onabort" with the proper type (37) +PASS Window interface: window must inherit property "onauxclick" with the proper type (38) +PASS Window interface: window must inherit property "onblur" with the proper type (39) +PASS Window interface: window must inherit property "oncancel" with the proper type (40) +PASS Window interface: window must inherit property "oncanplay" with the proper type (41) +PASS Window interface: window must inherit property "oncanplaythrough" with the proper type (42) +PASS Window interface: window must inherit property "onchange" with the proper type (43) +PASS Window interface: window must inherit property "onclick" with the proper type (44) +PASS Window interface: window must inherit property "onclose" with the proper type (45) +PASS Window interface: window must inherit property "oncontextmenu" with the proper type (46) +PASS Window interface: window must inherit property "oncuechange" with the proper type (47) +PASS Window interface: window must inherit property "ondblclick" with the proper type (48) +PASS Window interface: window must inherit property "ondrag" with the proper type (49) +PASS Window interface: window must inherit property "ondragend" with the proper type (50) +PASS Window interface: window must inherit property "ondragenter" with the proper type (51) +FAIL Window interface: window must inherit property "ondragexit" with the proper type (52) assert_own_property: expected property "ondragexit" missing +PASS Window interface: window must inherit property "ondragleave" with the proper type (53) +PASS Window interface: window must inherit property "ondragover" with the proper type (54) +PASS Window interface: window must inherit property "ondragstart" with the proper type (55) +PASS Window interface: window must inherit property "ondrop" with the proper type (56) +PASS Window interface: window must inherit property "ondurationchange" with the proper type (57) +PASS Window interface: window must inherit property "onemptied" with the proper type (58) +PASS Window interface: window must inherit property "onended" with the proper type (59) +PASS Window interface: window must inherit property "onerror" with the proper type (60) +PASS Window interface: window must inherit property "onfocus" with the proper type (61) +PASS Window interface: window must inherit property "oninput" with the proper type (62) +PASS Window interface: window must inherit property "oninvalid" with the proper type (63) +PASS Window interface: window must inherit property "onkeydown" with the proper type (64) +PASS Window interface: window must inherit property "onkeypress" with the proper type (65) +PASS Window interface: window must inherit property "onkeyup" with the proper type (66) +PASS Window interface: window must inherit property "onload" with the proper type (67) +PASS Window interface: window must inherit property "onloadeddata" with the proper type (68) +PASS Window interface: window must inherit property "onloadedmetadata" with the proper type (69) +FAIL Window interface: window must inherit property "onloadend" with the proper type (70) assert_own_property: expected property "onloadend" missing +PASS Window interface: window must inherit property "onloadstart" with the proper type (71) +PASS Window interface: window must inherit property "onmousedown" with the proper type (72) +PASS Window interface: window must inherit property "onmouseenter" with the proper type (73) +PASS Window interface: window must inherit property "onmouseleave" with the proper type (74) +PASS Window interface: window must inherit property "onmousemove" with the proper type (75) +PASS Window interface: window must inherit property "onmouseout" with the proper type (76) +PASS Window interface: window must inherit property "onmouseover" with the proper type (77) +PASS Window interface: window must inherit property "onmouseup" with the proper type (78) +PASS Window interface: window must inherit property "onwheel" with the proper type (79) +PASS Window interface: window must inherit property "onpause" with the proper type (80) +PASS Window interface: window must inherit property "onplay" with the proper type (81) +PASS Window interface: window must inherit property "onplaying" with the proper type (82) +PASS Window interface: window must inherit property "onprogress" with the proper type (83) +PASS Window interface: window must inherit property "onratechange" with the proper type (84) +PASS Window interface: window must inherit property "onreset" with the proper type (85) +PASS Window interface: window must inherit property "onresize" with the proper type (86) +PASS Window interface: window must inherit property "onscroll" with the proper type (87) +PASS Window interface: window must inherit property "onseeked" with the proper type (88) +PASS Window interface: window must inherit property "onseeking" with the proper type (89) +PASS Window interface: window must inherit property "onselect" with the proper type (90) +PASS Window interface: window must inherit property "onstalled" with the proper type (91) +PASS Window interface: window must inherit property "onsubmit" with the proper type (92) +PASS Window interface: window must inherit property "onsuspend" with the proper type (93) +PASS Window interface: window must inherit property "ontimeupdate" with the proper type (94) +PASS Window interface: window must inherit property "ontoggle" with the proper type (95) +PASS Window interface: window must inherit property "onvolumechange" with the proper type (96) +PASS Window interface: window must inherit property "onwaiting" with the proper type (97) +FAIL Window interface: window must inherit property "onafterprint" with the proper type (98) assert_own_property: expected property "onafterprint" missing +FAIL Window interface: window must inherit property "onbeforeprint" with the proper type (99) assert_own_property: expected property "onbeforeprint" missing +PASS Window interface: window must inherit property "onbeforeunload" with the proper type (100) +PASS Window interface: window must inherit property "onhashchange" with the proper type (101) +PASS Window interface: window must inherit property "onlanguagechange" with the proper type (102) +PASS Window interface: window must inherit property "onmessage" with the proper type (103) +PASS Window interface: window must inherit property "onmessageerror" with the proper type (104) +PASS Window interface: window must inherit property "onoffline" with the proper type (105) +PASS Window interface: window must inherit property "ononline" with the proper type (106) +PASS Window interface: window must inherit property "onpagehide" with the proper type (107) +PASS Window interface: window must inherit property "onpageshow" with the proper type (108) +PASS Window interface: window must inherit property "onpopstate" with the proper type (109) +PASS Window interface: window must inherit property "onrejectionhandled" with the proper type (110) +PASS Window interface: window must inherit property "onstorage" with the proper type (111) +PASS Window interface: window must inherit property "onunhandledrejection" with the proper type (112) +PASS Window interface: window must inherit property "onunload" with the proper type (113) +PASS Window interface: window must inherit property "origin" with the proper type (114) +PASS Window interface: window must inherit property "btoa" with the proper type (115) +PASS Window interface: calling btoa(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "atob" with the proper type (116) +PASS Window interface: calling atob(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "setTimeout" with the proper type (117) +PASS Window interface: calling setTimeout(TimerHandler,long,any) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "clearTimeout" with the proper type (118) +PASS Window interface: calling clearTimeout(long) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "setInterval" with the proper type (119) +PASS Window interface: calling setInterval(TimerHandler,long,any) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "clearInterval" with the proper type (120) +PASS Window interface: calling clearInterval(long) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "createImageBitmap" with the proper type (121) +PASS Window interface: calling createImageBitmap(ImageBitmapSource,ImageBitmapOptions) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "createImageBitmap" with the proper type (122) +PASS Window interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "sessionStorage" with the proper type (123) +PASS Window interface: window must inherit property "localStorage" with the proper type (124) +PASS BarProp interface: existence and properties of interface object +PASS BarProp interface object length +PASS BarProp interface object name +PASS BarProp interface: existence and properties of interface prototype object +PASS BarProp interface: existence and properties of interface prototype object's "constructor" property +PASS BarProp interface: attribute visible +PASS History interface: existence and properties of interface object +PASS History interface object length +PASS History interface object name +PASS History interface: existence and properties of interface prototype object +PASS History interface: existence and properties of interface prototype object's "constructor" property +PASS History interface: attribute length +PASS History interface: attribute scrollRestoration +PASS History interface: attribute state +PASS History interface: operation go(long) +PASS History interface: operation back() +PASS History interface: operation forward() +PASS History interface: operation pushState(any,DOMString,DOMString) +PASS History interface: operation replaceState(any,DOMString,DOMString) +PASS History must be primary interface of window.history +PASS Stringification of window.history +PASS History interface: window.history must inherit property "length" with the proper type (0) +PASS History interface: window.history must inherit property "scrollRestoration" with the proper type (1) +PASS History interface: window.history must inherit property "state" with the proper type (2) +PASS History interface: window.history must inherit property "go" with the proper type (3) +PASS History interface: calling go(long) on window.history with too few arguments must throw TypeError +PASS History interface: window.history must inherit property "back" with the proper type (4) +PASS History interface: window.history must inherit property "forward" with the proper type (5) +PASS History interface: window.history must inherit property "pushState" with the proper type (6) +PASS History interface: calling pushState(any,DOMString,DOMString) on window.history with too few arguments must throw TypeError +PASS History interface: window.history must inherit property "replaceState" with the proper type (7) +PASS History interface: calling replaceState(any,DOMString,DOMString) on window.history with too few arguments must throw TypeError +PASS Location interface: existence and properties of interface object +PASS Location interface object length +PASS Location interface object name +PASS Location interface: existence and properties of interface prototype object +PASS Location interface: existence and properties of interface prototype object's "constructor" property +FAIL Location interface: stringifier assert_own_property: interface prototype object missing non-static operation expected property "toString" missing +PASS Location must be primary interface of window.location +PASS Stringification of window.location +FAIL Location interface: window.location must have own property "href" assert_false: property descriptor should not have a "value" field expected false got true +PASS Location interface: window.location must have own property "origin" +PASS Location interface: window.location must have own property "protocol" +PASS Location interface: window.location must have own property "host" +PASS Location interface: window.location must have own property "hostname" +PASS Location interface: window.location must have own property "port" +PASS Location interface: window.location must have own property "pathname" +PASS Location interface: window.location must have own property "search" +PASS Location interface: window.location must have own property "hash" +PASS Location interface: window.location must have own property "assign" +PASS Location interface: calling assign(USVString) on window.location with too few arguments must throw TypeError +PASS Location interface: window.location must have own property "replace" +PASS Location interface: calling replace(USVString) on window.location with too few arguments must throw TypeError +PASS Location interface: window.location must have own property "reload" +PASS Location interface: window.location must have own property "ancestorOrigins" +PASS PopStateEvent interface: existence and properties of interface object +PASS PopStateEvent interface object length +PASS PopStateEvent interface object name +PASS PopStateEvent interface: existence and properties of interface prototype object +PASS PopStateEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PopStateEvent interface: attribute state +PASS PopStateEvent must be primary interface of new PopStateEvent("popstate", { data: {} }) +PASS Stringification of new PopStateEvent("popstate", { data: {} }) +PASS PopStateEvent interface: new PopStateEvent("popstate", { data: {} }) must inherit property "state" with the proper type (0) +PASS HashChangeEvent interface: existence and properties of interface object +PASS HashChangeEvent interface object length +PASS HashChangeEvent interface object name +PASS HashChangeEvent interface: existence and properties of interface prototype object +PASS HashChangeEvent interface: existence and properties of interface prototype object's "constructor" property +PASS HashChangeEvent interface: attribute oldURL +PASS HashChangeEvent interface: attribute newURL +PASS PageTransitionEvent interface: existence and properties of interface object +PASS PageTransitionEvent interface object length +PASS PageTransitionEvent interface object name +PASS PageTransitionEvent interface: existence and properties of interface prototype object +PASS PageTransitionEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PageTransitionEvent interface: attribute persisted +PASS BeforeUnloadEvent interface: existence and properties of interface object +PASS BeforeUnloadEvent interface object length +PASS BeforeUnloadEvent interface object name +PASS BeforeUnloadEvent interface: existence and properties of interface prototype object +PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's "constructor" property +PASS BeforeUnloadEvent interface: attribute returnValue +PASS ApplicationCache interface: existence and properties of interface object +PASS ApplicationCache interface object length +PASS ApplicationCache interface object name +PASS ApplicationCache interface: existence and properties of interface prototype object +PASS ApplicationCache interface: existence and properties of interface prototype object's "constructor" property +PASS ApplicationCache interface: constant UNCACHED on interface object +PASS ApplicationCache interface: constant UNCACHED on interface prototype object +PASS ApplicationCache interface: constant IDLE on interface object +PASS ApplicationCache interface: constant IDLE on interface prototype object +PASS ApplicationCache interface: constant CHECKING on interface object +PASS ApplicationCache interface: constant CHECKING on interface prototype object +PASS ApplicationCache interface: constant DOWNLOADING on interface object +PASS ApplicationCache interface: constant DOWNLOADING on interface prototype object +PASS ApplicationCache interface: constant UPDATEREADY on interface object +PASS ApplicationCache interface: constant UPDATEREADY on interface prototype object +PASS ApplicationCache interface: constant OBSOLETE on interface object +PASS ApplicationCache interface: constant OBSOLETE on interface prototype object +PASS ApplicationCache interface: attribute status +PASS ApplicationCache interface: operation update() +PASS ApplicationCache interface: operation abort() +PASS ApplicationCache interface: operation swapCache() +PASS ApplicationCache interface: attribute onchecking +PASS ApplicationCache interface: attribute onerror +PASS ApplicationCache interface: attribute onnoupdate +PASS ApplicationCache interface: attribute ondownloading +PASS ApplicationCache interface: attribute onprogress +PASS ApplicationCache interface: attribute onupdateready +PASS ApplicationCache interface: attribute oncached +PASS ApplicationCache interface: attribute onobsolete +PASS ApplicationCache must be primary interface of window.applicationCache +PASS Stringification of window.applicationCache +PASS ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type (0) +PASS ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type (1) +PASS ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type (2) +PASS ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type (3) +PASS ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type (4) +PASS ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type (5) +PASS ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type (6) +PASS ApplicationCache interface: window.applicationCache must inherit property "update" with the proper type (7) +PASS ApplicationCache interface: window.applicationCache must inherit property "abort" with the proper type (8) +PASS ApplicationCache interface: window.applicationCache must inherit property "swapCache" with the proper type (9) +PASS ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type (10) +PASS ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type (11) +PASS ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type (12) +PASS ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type (13) +PASS ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type (14) +PASS ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type (15) +PASS ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type (16) +PASS ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type (17) +PASS ErrorEvent interface: existence and properties of interface object +PASS ErrorEvent interface object length +PASS ErrorEvent interface object name +PASS ErrorEvent interface: existence and properties of interface prototype object +PASS ErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS ErrorEvent interface: attribute message +PASS ErrorEvent interface: attribute filename +PASS ErrorEvent interface: attribute lineno +PASS ErrorEvent interface: attribute colno +PASS ErrorEvent interface: attribute error +PASS Navigator interface: existence and properties of interface object +PASS Navigator interface object length +PASS Navigator interface object name +PASS Navigator interface: existence and properties of interface prototype object +PASS Navigator interface: existence and properties of interface prototype object's "constructor" property +PASS Navigator interface: attribute appCodeName +PASS Navigator interface: attribute appName +PASS Navigator interface: attribute appVersion +PASS Navigator interface: attribute platform +PASS Navigator interface: attribute product +PASS Navigator interface: attribute productSub +PASS Navigator interface: attribute userAgent +PASS Navigator interface: attribute vendor +PASS Navigator interface: attribute vendorSub +PASS Navigator interface: attribute language +PASS Navigator interface: attribute languages +PASS Navigator interface: attribute onLine +PASS Navigator interface: operation registerProtocolHandler(DOMString,USVString,DOMString) +FAIL Navigator interface: operation registerContentHandler(DOMString,USVString,DOMString) assert_own_property: interface prototype object missing non-static operation expected property "registerContentHandler" missing +PASS Navigator interface: operation isProtocolHandlerRegistered(DOMString,USVString) +FAIL Navigator interface: operation isContentHandlerRegistered(DOMString,USVString) assert_own_property: interface prototype object missing non-static operation expected property "isContentHandlerRegistered" missing +PASS Navigator interface: operation unregisterProtocolHandler(DOMString,USVString) +FAIL Navigator interface: operation unregisterContentHandler(DOMString,USVString) assert_own_property: interface prototype object missing non-static operation expected property "unregisterContentHandler" missing +PASS Navigator interface: attribute cookieEnabled +PASS Navigator interface: attribute plugins +PASS Navigator interface: attribute mimeTypes +PASS Navigator interface: operation javaEnabled() +PASS Navigator interface: attribute hardwareConcurrency +PASS Navigator must be primary interface of window.navigator +PASS Stringification of window.navigator +PASS Navigator interface: window.navigator must inherit property "appCodeName" with the proper type (0) +PASS Navigator interface: window.navigator must inherit property "appName" with the proper type (1) +PASS Navigator interface: window.navigator must inherit property "appVersion" with the proper type (2) +PASS Navigator interface: window.navigator must inherit property "platform" with the proper type (3) +PASS Navigator interface: window.navigator must inherit property "product" with the proper type (4) +PASS Navigator interface: window.navigator must inherit property "productSub" with the proper type (5) +PASS Navigator interface: window.navigator must inherit property "userAgent" with the proper type (6) +PASS Navigator interface: window.navigator must inherit property "vendor" with the proper type (7) +PASS Navigator interface: window.navigator must inherit property "vendorSub" with the proper type (8) +PASS Navigator interface: window.navigator must inherit property "language" with the proper type (9) +PASS Navigator interface: window.navigator must inherit property "languages" with the proper type (10) +PASS Navigator interface: window.navigator must inherit property "onLine" with the proper type (11) +PASS Navigator interface: window.navigator must inherit property "registerProtocolHandler" with the proper type (12) +PASS Navigator interface: calling registerProtocolHandler(DOMString,USVString,DOMString) on window.navigator with too few arguments must throw TypeError +FAIL Navigator interface: window.navigator must inherit property "registerContentHandler" with the proper type (13) assert_inherits: property "registerContentHandler" not found in prototype chain +FAIL Navigator interface: calling registerContentHandler(DOMString,USVString,DOMString) on window.navigator with too few arguments must throw TypeError assert_inherits: property "registerContentHandler" not found in prototype chain +PASS Navigator interface: window.navigator must inherit property "isProtocolHandlerRegistered" with the proper type (14) +PASS Navigator interface: calling isProtocolHandlerRegistered(DOMString,USVString) on window.navigator with too few arguments must throw TypeError +FAIL Navigator interface: window.navigator must inherit property "isContentHandlerRegistered" with the proper type (15) assert_inherits: property "isContentHandlerRegistered" not found in prototype chain +FAIL Navigator interface: calling isContentHandlerRegistered(DOMString,USVString) on window.navigator with too few arguments must throw TypeError assert_inherits: property "isContentHandlerRegistered" not found in prototype chain +PASS Navigator interface: window.navigator must inherit property "unregisterProtocolHandler" with the proper type (16) +PASS Navigator interface: calling unregisterProtocolHandler(DOMString,USVString) on window.navigator with too few arguments must throw TypeError +FAIL Navigator interface: window.navigator must inherit property "unregisterContentHandler" with the proper type (17) assert_inherits: property "unregisterContentHandler" not found in prototype chain +FAIL Navigator interface: calling unregisterContentHandler(DOMString,USVString) on window.navigator with too few arguments must throw TypeError assert_inherits: property "unregisterContentHandler" not found in prototype chain +PASS Navigator interface: window.navigator must inherit property "cookieEnabled" with the proper type (18) +PASS Navigator interface: window.navigator must inherit property "plugins" with the proper type (19) +PASS Navigator interface: window.navigator must inherit property "mimeTypes" with the proper type (20) +PASS Navigator interface: window.navigator must inherit property "javaEnabled" with the proper type (21) +PASS Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type (22) +PASS PluginArray interface: existence and properties of interface object +PASS PluginArray interface object length +PASS PluginArray interface object name +PASS PluginArray interface: existence and properties of interface prototype object +PASS PluginArray interface: existence and properties of interface prototype object's "constructor" property +PASS PluginArray interface: operation refresh(boolean) +PASS PluginArray interface: attribute length +PASS PluginArray interface: operation item(unsigned long) +PASS PluginArray interface: operation namedItem(DOMString) +PASS MimeTypeArray interface: existence and properties of interface object +PASS MimeTypeArray interface object length +PASS MimeTypeArray interface object name +PASS MimeTypeArray interface: existence and properties of interface prototype object +PASS MimeTypeArray interface: existence and properties of interface prototype object's "constructor" property +PASS MimeTypeArray interface: attribute length +PASS MimeTypeArray interface: operation item(unsigned long) +PASS MimeTypeArray interface: operation namedItem(DOMString) +PASS Plugin interface: existence and properties of interface object +PASS Plugin interface object length +PASS Plugin interface object name +PASS Plugin interface: existence and properties of interface prototype object +PASS Plugin interface: existence and properties of interface prototype object's "constructor" property +PASS Plugin interface: attribute name +PASS Plugin interface: attribute description +PASS Plugin interface: attribute filename +PASS Plugin interface: attribute length +PASS Plugin interface: operation item(unsigned long) +PASS Plugin interface: operation namedItem(DOMString) +PASS MimeType interface: existence and properties of interface object +PASS MimeType interface object length +PASS MimeType interface object name +PASS MimeType interface: existence and properties of interface prototype object +PASS MimeType interface: existence and properties of interface prototype object's "constructor" property +PASS MimeType interface: attribute type +PASS MimeType interface: attribute description +PASS MimeType interface: attribute suffixes +PASS MimeType interface: attribute enabledPlugin +FAIL External interface: existence and properties of interface object assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface object length assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface object name assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface: existence and properties of interface prototype object assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface: operation AddSearchProvider(DOMString) assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External interface: operation IsSearchProviderInstalled(DOMString) assert_own_property: self does not have own property "External" expected property "External" missing +FAIL External must be primary interface of window.external assert_own_property: self does not have own property "External" expected property "External" missing +PASS Stringification of window.external +PASS External interface: window.external must inherit property "AddSearchProvider" with the proper type (0) +FAIL External interface: calling AddSearchProvider(DOMString) on window.external with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () { + fn.apply(obj, args); + }" did not throw +PASS External interface: window.external must inherit property "IsSearchProviderInstalled" with the proper type (1) +FAIL External interface: calling IsSearchProviderInstalled(DOMString) on window.external with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () { + fn.apply(obj, args); + }" did not throw +PASS ImageBitmap interface: existence and properties of interface object +PASS ImageBitmap interface object length +PASS ImageBitmap interface object name +PASS ImageBitmap interface: existence and properties of interface prototype object +PASS ImageBitmap interface: existence and properties of interface prototype object's "constructor" property +PASS ImageBitmap interface: attribute width +PASS ImageBitmap interface: attribute height +PASS MessageEvent interface: existence and properties of interface object +PASS MessageEvent interface object length +PASS MessageEvent interface object name +PASS MessageEvent interface: existence and properties of interface prototype object +PASS MessageEvent interface: existence and properties of interface prototype object's "constructor" property +PASS MessageEvent interface: attribute data +PASS MessageEvent interface: attribute origin +PASS MessageEvent interface: attribute lastEventId +PASS MessageEvent interface: attribute source +PASS MessageEvent interface: attribute ports +FAIL MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object],[object Object],[object Object]) assert_equals: property has wrong .length expected 1 but got 0 +PASS MessageEvent must be primary interface of new MessageEvent("message", { data: 5 }) +PASS Stringification of new MessageEvent("message", { data: 5 }) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type (0) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type (1) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type (2) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type (3) +FAIL MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type (4) assert_true: Value should be array expected true got false +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent" with the proper type (5) +FAIL MessageEvent interface: calling initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object],[object Object],[object Object]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () { + fn.apply(obj, args); + }" did not throw +PASS EventSource interface: existence and properties of interface object +PASS EventSource interface object length +PASS EventSource interface object name +PASS EventSource interface: existence and properties of interface prototype object +PASS EventSource interface: existence and properties of interface prototype object's "constructor" property +PASS EventSource interface: attribute url +PASS EventSource interface: attribute withCredentials +PASS EventSource interface: constant CONNECTING on interface object +PASS EventSource interface: constant CONNECTING on interface prototype object +PASS EventSource interface: constant OPEN on interface object +PASS EventSource interface: constant OPEN on interface prototype object +PASS EventSource interface: constant CLOSED on interface object +PASS EventSource interface: constant CLOSED on interface prototype object +PASS EventSource interface: attribute readyState +PASS EventSource interface: attribute onopen +PASS EventSource interface: attribute onmessage +PASS EventSource interface: attribute onerror +PASS EventSource interface: operation close() +PASS WebSocket interface: existence and properties of interface object +PASS WebSocket interface object length +PASS WebSocket interface object name +PASS WebSocket interface: existence and properties of interface prototype object +PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property +PASS WebSocket interface: attribute url +PASS WebSocket interface: constant CONNECTING on interface object +PASS WebSocket interface: constant CONNECTING on interface prototype object +PASS WebSocket interface: constant OPEN on interface object +PASS WebSocket interface: constant OPEN on interface prototype object +PASS WebSocket interface: constant CLOSING on interface object +PASS WebSocket interface: constant CLOSING on interface prototype object +PASS WebSocket interface: constant CLOSED on interface object +PASS WebSocket interface: constant CLOSED on interface prototype object +PASS WebSocket interface: attribute readyState +PASS WebSocket interface: attribute bufferedAmount +PASS WebSocket interface: attribute onopen +PASS WebSocket interface: attribute onerror +PASS WebSocket interface: attribute onclose +PASS WebSocket interface: attribute extensions +PASS WebSocket interface: attribute protocol +PASS WebSocket interface: operation close(unsigned short,USVString) +PASS WebSocket interface: attribute onmessage +PASS WebSocket interface: attribute binaryType +PASS WebSocket interface: operation send(USVString) +PASS WebSocket interface: operation send(Blob) +PASS WebSocket interface: operation send(ArrayBuffer) +PASS WebSocket interface: operation send(ArrayBufferView) +PASS WebSocket must be primary interface of new WebSocket("ws://foo") +PASS Stringification of new WebSocket("ws://foo") +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "url" with the proper type (0) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CONNECTING" with the proper type (1) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "OPEN" with the proper type (2) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSING" with the proper type (3) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSED" with the proper type (4) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "readyState" with the proper type (5) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "bufferedAmount" with the proper type (6) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onopen" with the proper type (7) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onerror" with the proper type (8) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onclose" with the proper type (9) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type (10) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "protocol" with the proper type (11) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "close" with the proper type (12) +PASS WebSocket interface: calling close(unsigned short,USVString) on new WebSocket("ws://foo") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "onmessage" with the proper type (13) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "binaryType" with the proper type (14) +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (15) +PASS WebSocket interface: calling send(USVString) on new WebSocket("ws://foo") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (16) +PASS WebSocket interface: calling send(Blob) on new WebSocket("ws://foo") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (17) +PASS WebSocket interface: calling send(ArrayBuffer) on new WebSocket("ws://foo") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (18) +PASS WebSocket interface: calling send(ArrayBufferView) on new WebSocket("ws://foo") with too few arguments must throw TypeError +PASS CloseEvent interface: existence and properties of interface object +PASS CloseEvent interface object length +PASS CloseEvent interface object name +PASS CloseEvent interface: existence and properties of interface prototype object +PASS CloseEvent interface: existence and properties of interface prototype object's "constructor" property +PASS CloseEvent interface: attribute wasClean +PASS CloseEvent interface: attribute code +PASS CloseEvent interface: attribute reason +PASS CloseEvent must be primary interface of new CloseEvent("close") +PASS Stringification of new CloseEvent("close") +PASS CloseEvent interface: new CloseEvent("close") must inherit property "wasClean" with the proper type (0) +PASS CloseEvent interface: new CloseEvent("close") must inherit property "code" with the proper type (1) +PASS CloseEvent interface: new CloseEvent("close") must inherit property "reason" with the proper type (2) +PASS MessageChannel interface: existence and properties of interface object +PASS MessageChannel interface object length +PASS MessageChannel interface object name +PASS MessageChannel interface: existence and properties of interface prototype object +PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property +PASS MessageChannel interface: attribute port1 +PASS MessageChannel interface: attribute port2 +PASS MessagePort interface: existence and properties of interface object +PASS MessagePort interface object length +PASS MessagePort interface object name +PASS MessagePort interface: existence and properties of interface prototype object +PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property +PASS MessagePort interface: operation postMessage(any,[object Object]) +PASS MessagePort interface: operation start() +PASS MessagePort interface: operation close() +PASS MessagePort interface: attribute onmessage +PASS MessagePort interface: attribute onmessageerror +PASS BroadcastChannel interface: existence and properties of interface object +PASS BroadcastChannel interface object length +PASS BroadcastChannel interface object name +PASS BroadcastChannel interface: existence and properties of interface prototype object +PASS BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property +PASS BroadcastChannel interface: attribute name +PASS BroadcastChannel interface: operation postMessage(any) +PASS BroadcastChannel interface: operation close() +PASS BroadcastChannel interface: attribute onmessage +PASS BroadcastChannel interface: attribute onmessageerror +PASS WorkerGlobalScope interface: existence and properties of interface object +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface object +PASS SharedWorkerGlobalScope interface: existence and properties of interface object +PASS Worker interface: existence and properties of interface object +PASS Worker interface object length +PASS Worker interface object name +PASS Worker interface: existence and properties of interface prototype object +PASS Worker interface: existence and properties of interface prototype object's "constructor" property +PASS Worker interface: operation terminate() +PASS Worker interface: operation postMessage(any,[object Object]) +PASS Worker interface: attribute onmessage +PASS Worker interface: attribute onerror +PASS SharedWorker interface: existence and properties of interface object +PASS SharedWorker interface object length +PASS SharedWorker interface object name +PASS SharedWorker interface: existence and properties of interface prototype object +PASS SharedWorker interface: existence and properties of interface prototype object's "constructor" property +PASS SharedWorker interface: attribute port +PASS SharedWorker interface: attribute onerror +PASS WorkerNavigator interface: existence and properties of interface object +PASS WorkerLocation interface: existence and properties of interface object +PASS Storage interface: existence and properties of interface object +PASS Storage interface object length +PASS Storage interface object name +PASS Storage interface: existence and properties of interface prototype object +PASS Storage interface: existence and properties of interface prototype object's "constructor" property +FAIL Storage interface: attribute length assert_true: property should be enumerable expected true got false +FAIL Storage interface: operation key(unsigned long) assert_true: property should be enumerable expected true got false +FAIL Storage interface: operation getItem(DOMString) assert_true: property should be enumerable expected true got false +FAIL Storage interface: operation setItem(DOMString,DOMString) assert_true: property should be enumerable expected true got false +FAIL Storage interface: operation removeItem(DOMString) assert_true: property should be enumerable expected true got false +FAIL Storage interface: operation clear() assert_true: property should be enumerable expected true got false +PASS StorageEvent interface: existence and properties of interface object +PASS StorageEvent interface object length +PASS StorageEvent interface object name +PASS StorageEvent interface: existence and properties of interface prototype object +PASS StorageEvent interface: existence and properties of interface prototype object's "constructor" property +PASS StorageEvent interface: attribute key +PASS StorageEvent interface: attribute oldValue +PASS StorageEvent interface: attribute newValue +PASS StorageEvent interface: attribute url +PASS StorageEvent interface: attribute storageArea +FAIL HTMLAppletElement interface: existence and properties of interface object assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface object length assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface object name assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: existence and properties of interface prototype object assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute align assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute alt assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute archive assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute code assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute codeBase assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute height assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute hspace assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute name assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute object assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute vspace assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement interface: attribute width assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL HTMLAppletElement must be primary interface of document.createElement("applet") assert_own_property: self does not have own property "HTMLAppletElement" expected property "HTMLAppletElement" missing +FAIL Stringification of document.createElement("applet") assert_equals: class string of document.createElement("applet") expected "[object HTMLAppletElement]" but got "[object HTMLUnknownElement]" +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "align" with the proper type (0) assert_inherits: property "align" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "alt" with the proper type (1) assert_inherits: property "alt" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "archive" with the proper type (2) assert_inherits: property "archive" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "code" with the proper type (3) assert_inherits: property "code" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "codeBase" with the proper type (4) assert_inherits: property "codeBase" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "height" with the proper type (5) assert_inherits: property "height" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "hspace" with the proper type (6) assert_inherits: property "hspace" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "name" with the proper type (7) assert_inherits: property "name" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "object" with the proper type (8) assert_inherits: property "object" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "vspace" with the proper type (9) assert_inherits: property "vspace" not found in prototype chain +FAIL HTMLAppletElement interface: document.createElement("applet") must inherit property "width" with the proper type (10) assert_inherits: property "width" not found in prototype chain +PASS HTMLMarqueeElement interface: existence and properties of interface object +PASS HTMLMarqueeElement interface object length +PASS HTMLMarqueeElement interface object name +PASS HTMLMarqueeElement interface: existence and properties of interface prototype object +PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLMarqueeElement interface: attribute behavior +PASS HTMLMarqueeElement interface: attribute bgColor +PASS HTMLMarqueeElement interface: attribute direction +PASS HTMLMarqueeElement interface: attribute height +PASS HTMLMarqueeElement interface: attribute hspace +PASS HTMLMarqueeElement interface: attribute loop +PASS HTMLMarqueeElement interface: attribute scrollAmount +PASS HTMLMarqueeElement interface: attribute scrollDelay +PASS HTMLMarqueeElement interface: attribute trueSpeed +PASS HTMLMarqueeElement interface: attribute vspace +PASS HTMLMarqueeElement interface: attribute width +FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false +FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false +FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false +PASS HTMLMarqueeElement interface: operation start() +PASS HTMLMarqueeElement interface: operation stop() +PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee") +PASS Stringification of document.createElement("marquee") +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type (0) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type (1) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type (2) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type (3) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type (4) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type (5) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type (6) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type (7) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type (8) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type (9) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type (10) +FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type (11) assert_inherits: property "onbounce" not found in prototype chain +FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type (12) assert_inherits: property "onfinish" not found in prototype chain +FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type (13) assert_inherits: property "onstart" not found in prototype chain +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start" with the proper type (14) +PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop" with the proper type (15) +PASS HTMLFrameSetElement interface: existence and properties of interface object +PASS HTMLFrameSetElement interface object length +PASS HTMLFrameSetElement interface object name +PASS HTMLFrameSetElement interface: existence and properties of interface prototype object +PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFrameSetElement interface: attribute cols +PASS HTMLFrameSetElement interface: attribute rows +FAIL HTMLFrameSetElement interface: attribute onafterprint assert_true: The prototype object must have a property "onafterprint" expected true got false +FAIL HTMLFrameSetElement interface: attribute onbeforeprint assert_true: The prototype object must have a property "onbeforeprint" expected true got false +PASS HTMLFrameSetElement interface: attribute onbeforeunload +PASS HTMLFrameSetElement interface: attribute onhashchange +PASS HTMLFrameSetElement interface: attribute onlanguagechange +PASS HTMLFrameSetElement interface: attribute onmessage +PASS HTMLFrameSetElement interface: attribute onmessageerror +PASS HTMLFrameSetElement interface: attribute onoffline +PASS HTMLFrameSetElement interface: attribute ononline +PASS HTMLFrameSetElement interface: attribute onpagehide +PASS HTMLFrameSetElement interface: attribute onpageshow +PASS HTMLFrameSetElement interface: attribute onpopstate +PASS HTMLFrameSetElement interface: attribute onrejectionhandled +PASS HTMLFrameSetElement interface: attribute onstorage +PASS HTMLFrameSetElement interface: attribute onunhandledrejection +PASS HTMLFrameSetElement interface: attribute onunload +PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset") +PASS Stringification of document.createElement("frameset") +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type (0) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type (1) +FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type (2) assert_inherits: property "onafterprint" not found in prototype chain +FAIL HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type (3) assert_inherits: property "onbeforeprint" not found in prototype chain +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type (4) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type (5) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type (6) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type (7) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type (8) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type (9) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type (10) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type (11) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type (12) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type (13) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type (14) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (15) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type (16) +PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type (17) +PASS HTMLFrameElement interface: existence and properties of interface object +PASS HTMLFrameElement interface object length +PASS HTMLFrameElement interface object name +PASS HTMLFrameElement interface: existence and properties of interface prototype object +PASS HTMLFrameElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFrameElement interface: attribute name +PASS HTMLFrameElement interface: attribute scrolling +PASS HTMLFrameElement interface: attribute src +PASS HTMLFrameElement interface: attribute frameBorder +PASS HTMLFrameElement interface: attribute longDesc +PASS HTMLFrameElement interface: attribute noResize +PASS HTMLFrameElement interface: attribute contentDocument +PASS HTMLFrameElement interface: attribute contentWindow +PASS HTMLFrameElement interface: attribute marginHeight +PASS HTMLFrameElement interface: attribute marginWidth +PASS HTMLFrameElement must be primary interface of document.createElement("frame") +PASS Stringification of document.createElement("frame") +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type (0) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type (1) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type (2) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type (3) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type (4) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type (5) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type (6) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type (7) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type (8) +PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type (9) +PASS HTMLDirectoryElement interface: existence and properties of interface object +PASS HTMLDirectoryElement interface object length +PASS HTMLDirectoryElement interface object name +PASS HTMLDirectoryElement interface: existence and properties of interface prototype object +PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLDirectoryElement interface: attribute compact +PASS HTMLDirectoryElement must be primary interface of document.createElement("dir") +PASS Stringification of document.createElement("dir") +PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type (0) +PASS HTMLFontElement interface: existence and properties of interface object +PASS HTMLFontElement interface object length +PASS HTMLFontElement interface object name +PASS HTMLFontElement interface: existence and properties of interface prototype object +PASS HTMLFontElement interface: existence and properties of interface prototype object's "constructor" property +PASS HTMLFontElement interface: attribute color +PASS HTMLFontElement interface: attribute face +PASS HTMLFontElement interface: attribute size +PASS HTMLFontElement must be primary interface of document.createElement("font") +PASS Stringification of document.createElement("font") +PASS HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type (0) +PASS HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type (1) +PASS HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type (2) +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces.html new file mode 100644 index 0000000..8440615 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/interfaces.html
@@ -0,0 +1,239 @@ +<!doctype html> +<meta charset=utf-8> +<!-- WARNING: These tests are preliminary and probably partly incorrect. --> +<title>HTML IDL tests</title> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/WebIDLParser.js></script> +<script src=/resources/idlharness.js></script> + +<h1>HTML IDL tests</h1> +<div id=log></div> + +<script> +"use strict"; +var errorVideo; // used to get a MediaError object +var iframe; // used to get a Document object (can't use `document` because some test clears the page) +setup(function() { + errorVideo = document.createElement('video'); + errorVideo.src = 'data:,'; + errorVideo.preload = 'auto'; + iframe = document.createElement('iframe'); + iframe.hidden = true; + document.body.appendChild(iframe); +}); + +function createInput(type) { + var input = document.createElement('input'); + input.type = type; + return input; +} + +function doTest([html, dom, cssom, uievents, touchevents]) { + var idlArray = new IdlArray(); + idlArray.add_untested_idls(dom + cssom + uievents + touchevents); + idlArray.add_idls(html); + + idlArray.add_objects({ + NodeList: ['document.getElementsByName("name")'], + HTMLAllCollection: ['document.all'], + HTMLFormControlsCollection: ['document.createElement("form").elements'], + RadioNodeList: [], + HTMLOptionsCollection: ['document.createElement("select").options'], + DOMStringMap: ['document.head.dataset'], + Transferable: [], + Document: ['iframe.contentDocument', 'new Document()'], + XMLDocument: ['document.implementation.createDocument(null, "", null)'], + HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js + HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js + HTMLHtmlElement: ['document.createElement("html")'], + HTMLHeadElement: ['document.createElement("head")'], + HTMLTitleElement: ['document.createElement("title")'], + HTMLBaseElement: ['document.createElement("base")'], + HTMLLinkElement: ['document.createElement("link")'], + HTMLMetaElement: ['document.createElement("meta")'], + HTMLStyleElement: ['document.createElement("style")'], + HTMLScriptElement: ['document.createElement("script")'], + HTMLBodyElement: ['document.createElement("body")'], + HTMLHeadingElement: ['document.createElement("h1")'], + HTMLParagraphElement: ['document.createElement("p")'], + HTMLHRElement: ['document.createElement("hr")'], + HTMLPreElement: [ + 'document.createElement("pre")', + 'document.createElement("listing")', + 'document.createElement("xmp")', + ], + HTMLQuoteElement: [ + 'document.createElement("blockquote")', + 'document.createElement("q")', + ], + HTMLOlistElement: ['document.createElement("ol")'], + HTMLUlistElement: ['document.createElement("ul")'], + HTMLLIElement: ['document.createElement("li")'], + HTMLDlistElement: ['document.createElement("dl")'], + HTMLDivElement: ['document.createElement("div")'], + HTMLAnchorElement: ['document.createElement("a")'], + HTMLDataElement: ['document.createElement("data")'], + HTMLTimeElement: ['document.createElement("time")'], + HTMLSpanElement: ['document.createElement("span")'], + HTMLBRElement: ['document.createElement("br")'], + HTMLModElement: [ + 'document.createElement("ins")', + 'document.createElement("del")', + ], + HTMLPictureElement: ['document.createElement("picture")'], + HTMLImageElement: ['document.createElement("img")', 'new Image()'], + HTMLIframeElement: ['document.createElement("iframe")'], + HTMLEmbedElement: ['document.createElement("embed")'], + HTMLObjectElement: ['document.createElement("object")'], + HTMLParamElement: ['document.createElement("param")'], + HTMLVideoElement: ['document.createElement("video")'], + HTMLAudioElement: ['document.createElement("audio")', 'new Audio()'], + HTMLSourceElement: ['document.createElement("source")'], + HTMLTrackElement: ['document.createElement("track")'], + HTMLMediaElement: [], + MediaError: ['errorVideo.error'], + AudioTrackList: [], + AudioTrack: [], + VideoTrackList: [], + VideoTrack: [], + TextTrackList: ['document.createElement("video").textTracks'], + TextTrack: ['document.createElement("track").track'], + TextTrackCueList: ['document.createElement("video").addTextTrack("subtitles").cues'], + TextTrackCue: [], + DataCue: [], + TimeRanges: ['document.createElement("video").buffered'], + TrackEvent: ['new TrackEvent("addtrack", {track:document.createElement("track").track})'], + HTMLTemplateElement: ['document.createElement("template")'], + HTMLSlotElement: ['document.createElement("slot")'], + HTMLCanvasElement: ['document.createElement("canvas")'], + CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'], + CanvasGradient: [], + CanvasPattern: [], + TextMetrics: [], + ImageData: [], + HTMLMapElement: ['document.createElement("map")'], + HTMLAreaElement: ['document.createElement("area")'], + HTMLTableElement: ['document.createElement("table")'], + HTMLTableCaptionElement: ['document.createElement("caption")'], + HTMLTableColElement: [ + 'document.createElement("colgroup")', + 'document.createElement("col")', + ], + HTMLTableSectionElement: [ + 'document.createElement("tbody")', + 'document.createElement("thead")', + 'document.createElement("tfoot")', + ], + HTMLTableRowElement: ['document.createElement("tr")'], + HTMLTableCellElement: [ + 'document.createElement("td")', + 'document.createElement("th")', + ], + HTMLFormElement: ['document.createElement("form")'], + HTMLFieldsetElement: ['document.createElement("fieldset")'], + HTMLLegendElement: ['document.createElement("legend")'], + HTMLLabelElement: ['document.createElement("label")'], + HTMLInputElement: [ + 'document.createElement("input")', + 'createInput("text")', + 'createInput("hidden")', + 'createInput("search")', + 'createInput("tel")', + 'createInput("url")', + 'createInput("email")', + 'createInput("password")', + 'createInput("date")', + 'createInput("month")', + 'createInput("week")', + 'createInput("time")', + 'createInput("datetime-local")', + 'createInput("number")', + 'createInput("range")', + 'createInput("color")', + 'createInput("checkbox")', + 'createInput("radio")', + 'createInput("file")', + 'createInput("submit")', + 'createInput("image")', + 'createInput("reset")', + 'createInput("button")' + ], + HTMLButtonElement: ['document.createElement("button")'], + HTMLSelectElement: ['document.createElement("select")'], + HTMLDataListElement: ['document.createElement("datalist")'], + HTMLOptGroupElement: ['document.createElement("optgroup")'], + HTMLOptionElement: ['document.createElement("option")', 'new Option()'], + HTMLTextAreaElement: ['document.createElement("textarea")'], + HTMLOutputElement: ['document.createElement("output")'], + HTMLProgressElement: ['document.createElement("progress")'], + HTMLMeterElement: ['document.createElement("meter")'], + ValidityState: ['document.createElement("input").validity'], + HTMLDetailsElement: ['document.createElement("details")'], + HTMLMenuElement: ['document.createElement("menu")'], + Window: ['window'], + BarProp: [], + History: ['window.history'], + Location: ['window.location'], + PopStateEvent: ['new PopStateEvent("popstate", { data: {} })'], + HashChangeEvent: [], + PageTransitionEvent: [], + BeforeUnloadEvent: [], + ApplicationCache: ['window.applicationCache'], + WindowModal: [], + Navigator: ['window.navigator'], + External: ['window.external'], + DataTransfer: [], + DataTransferItemList: [], + DataTransferItem: [], + DragEvent: [], + NavigatorUserMediaError: [], + MediaStream: [], + LocalMediaStream: [], + MediaStreamTrack: [], + MediaStreamRecorder: [], + PeerConnection: [], + MediaStreamEvent: [], + ErrorEvent: [], + WebSocket: ['new WebSocket("ws://foo")'], + CloseEvent: ['new CloseEvent("close")'], + AbstractWorker: [], + Worker: [], + SharedWorker: [], + MessageEvent: ['new MessageEvent("message", { data: 5 })'], + MessageChannel: [], + MessagePort: [], + HTMLAppletElement: ['document.createElement("applet")'], + HTMLMarqueeElement: ['document.createElement("marquee")'], + HTMLFrameSetElement: ['document.createElement("frameset")'], + HTMLFrameElement: ['document.createElement("frame")'], + HTMLDirectoryElement: ['document.createElement("dir")'], + HTMLFontElement: ['document.createElement("font")'], + }); + idlArray.prevent_multiple_testing("HTMLElement"); + idlArray.test(); +}; + +function fetchData(url) { + return fetch(url).then((response) => response.text()); +} + +function waitForLoad() { + return new Promise(function(resolve) { + addEventListener("load", resolve); + }); +} + +promise_test(function() { + // Have to wait for onload + return Promise.all([fetchData("/interfaces/html.idl"), + fetchData("/interfaces/dom.idl"), + fetchData("/interfaces/cssom.idl"), + fetchData("/interfaces/touchevents.idl"), + fetchData("/interfaces/uievents.idl"), + waitForLoad()]) + .then(doTest); +}, "Test driver"); + +</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked-expected.txt deleted file mode 100644 index c19a6f1..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -Verify that a CSP connect-src directive blocks redirects. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -PASS navigator.sendBeacon("resources/redir.php?url=http://127.0.0.1:8080/sendbeacon/resources/save-beacon.php%3Fname%3Dcsp-redirect-blocked", "ping"); is true -PASS Beacon sent successfully -PASS Content-Type: text/plain;charset=UTF-8 -PASS Origin: null -PASS Referer: http://127.0.0.1:8000/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked.html -PASS Request-Method: POST -PASS Length: 4 -PASS Body: ping -PASS -PASS successfullyParsed is true - -TEST COMPLETE -
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked.html b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked.html deleted file mode 100644 index 73a2e86..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-beacon-redirect-to-blocked.html +++ /dev/null
@@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta http-equiv="Content-Security-Policy" content="connect-src http://127.0.0.1:8000"> -<script src="/js-test-resources/js-test.js"></script> -</head> -<body> -<script> -description("Verify that a CSP connect-src directive blocks redirects."); -window.jsTestIsAsync = true; - -shouldBeTrue('navigator.sendBeacon("resources/redir.php?url=http://127.0.0.1:8080/sendbeacon/resources/save-beacon.php%3Fname%3Dcsp-redirect-blocked", "ping");'); - -function checkForBeacon() { - var xhr = new XMLHttpRequest(); - xhr.open("GET", "http://127.0.0.1:8000/sendbeacon/resources/check-beacon.php?name=csp-redirect-blocked&retries=100", true); - xhr.onload = function () { - var lines = xhr.responseText.split("\n"); - for (var i in lines) - testPassed(lines[i]); - finishJSTest(); - }; - xhr.onerror = function () { - testFailed("Unable to fetch beacon status"); - finishJSTest(); - }; - xhr.send(); -} -setTimeout(checkForBeacon, 1000); -</script> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin-expected.txt deleted file mode 100644 index a542140..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin-expected.txt +++ /dev/null
@@ -1,2 +0,0 @@ -CONSOLE MESSAGE: line 32: PASS: Caught exception while trying to access victim's properties. -This test passes if it doesn't alert the contents of innocent-victim.html.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin.xml b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin.xml deleted file mode 100644 index 456f6c6f..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-securityOrigin.xml +++ /dev/null
@@ -1,49 +0,0 @@ -<?xml-stylesheet type="text/xsl" href="xss-DENIED-xsl-document-securityOrigin.xml"?> -<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> -<xsl:template match="/"> -<html> -<head> -<script> -<![CDATA[ -if (window.testRunner) { - testRunner.dumpAsText(); - testRunner.waitUntilDone(); - testRunner.setCanOpenWindows(); - testRunner.setCloseRemainingWindowsWhenComplete(true); - } - -window.onload = function() -{ - if (!opener) { - victim = document.body.appendChild(document.createElement("iframe")); - wnd = victim.contentWindow.open(); - victim.src = "http://localhost:8080/security/resources/innocent-victim.html"; - victim.onload = function() { wnd.eval("location = '" + location + "'"); } - } else if (location != "about:blank") { - url = location.href; - blank = document.body.appendChild(document.createElement("iframe")); - blank.contentWindow.eval("parent.document.open()"); - location = "javascript:(\"\x3C?xml-stylesheet type='text/xsl' href='" + url + "'?\x3E\x3Croot/\x3E\")"; - } else { - victim = opener; - open("javascript:void(0)", "_self"); - try { - if (victim.eval) - victim.eval("alert(document.body.innerHTML)"); - } catch (e) { - console.log("PASS: Caught exception while trying to access victim's properties."); - } - - if (window.testRunner) - testRunner.notifyDone(); - } -} -]]> -</script> -</head> -<body> -This test passes if it doesn't alert the contents of innocent-victim.html. -</body> -</html> -</xsl:template> -</xsl:stylesheet>
diff --git a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp index b136e05..8bda40f 100644 --- a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.cpp
@@ -64,7 +64,8 @@ namespace blink { -void LocalWindowProxy::DisposeContext(Lifecycle next_status) { +void LocalWindowProxy::DisposeContext(Lifecycle next_status, + FrameReuseStatus frame_reuse_status) { DCHECK(next_status == Lifecycle::kGlobalObjectIsDetached || next_status == Lifecycle::kFrameIsDetached); @@ -98,12 +99,11 @@ } script_state_->DisposePerContextData(); - // It's likely that disposing the context has created a lot of // garbage. Notify V8 about this so it'll have a chance of cleaning // it up when idle. V8GCForContextDispose::Instance().NotifyContextDisposed( - GetFrame()->IsMainFrame()); + GetFrame()->IsMainFrame(), frame_reuse_status); if (next_status == Lifecycle::kFrameIsDetached) { // The context's frame is detached from the DOM, so there shouldn't be a
diff --git a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.h b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.h index 3af018d..f8a54df 100644 --- a/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.h +++ b/third_party/WebKit/Source/bindings/core/v8/LocalWindowProxy.h
@@ -74,7 +74,7 @@ bool IsLocal() const override { return true; } void Initialize() override; - void DisposeContext(Lifecycle next_status) override; + void DisposeContext(Lifecycle next_status, FrameReuseStatus) override; // Creates a new v8::Context with the window wrapper object as the global // object (aka the inner global). Note that the window wrapper and its
diff --git a/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.cpp index d1fae09..21a6981 100644 --- a/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.cpp
@@ -49,7 +49,8 @@ RefPtr<DOMWrapperWorld> world) : WindowProxy(isolate, frame, std::move(world)) {} -void RemoteWindowProxy::DisposeContext(Lifecycle next_status) { +void RemoteWindowProxy::DisposeContext(Lifecycle next_status, + FrameReuseStatus) { DCHECK(next_status == Lifecycle::kGlobalObjectIsDetached || next_status == Lifecycle::kFrameIsDetached);
diff --git a/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.h b/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.h index 40a31d1..182255c 100644 --- a/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.h +++ b/third_party/WebKit/Source/bindings/core/v8/RemoteWindowProxy.h
@@ -55,7 +55,7 @@ RemoteWindowProxy(v8::Isolate*, RemoteFrame&, RefPtr<DOMWrapperWorld>); void Initialize() override; - void DisposeContext(Lifecycle next_status) override; + void DisposeContext(Lifecycle next_status, FrameReuseStatus) override; // Creates a new v8::Context with the window wrapper object as the global // object (aka the inner global). Note that the window wrapper and its
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.cpp b/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.cpp index deca64c..000898de 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.cpp
@@ -30,12 +30,26 @@ #include "bindings/core/v8/V8GCForContextDispose.h" +#include "platform/Histogram.h" +#include "platform/MemoryCoordinator.h" #include "platform/bindings/V8PerIsolateData.h" #include "platform/wtf/CurrentTime.h" +#include "platform/wtf/ProcessMetrics.h" #include "platform/wtf/StdLibExtras.h" #include "public/platform/Platform.h" #include "v8/include/v8.h" +size_t GetMemoryUsage() { + size_t usage = WTF::GetMallocUsage() + WTF::Partitions::TotalActiveBytes() + + blink::ProcessHeap::TotalAllocatedObjectSize() + + blink::ProcessHeap::TotalMarkedObjectSize(); + v8::HeapStatistics v8_heap_statistics; + blink::V8PerIsolateData::MainThreadIsolate()->GetHeapStatistics( + &v8_heap_statistics); + usage = v8_heap_statistics.total_heap_size(); + return usage; +} + namespace blink { V8GCForContextDispose::V8GCForContextDispose() @@ -43,9 +57,30 @@ Reset(); } -void V8GCForContextDispose::NotifyContextDisposed(bool is_main_frame) { +void V8GCForContextDispose::NotifyContextDisposed( + bool is_main_frame, + WindowProxy::FrameReuseStatus frame_reuse_status) { did_dispose_context_for_main_frame_ = is_main_frame; last_context_disposal_time_ = WTF::CurrentTime(); +#if OS(ANDROID) + // When a low end device is in a low memory situation we should prioritize + // memory use and trigger a V8+Blink GC. However, on Android, if the frame + // will not be reused, the process will likely to be killed soon so skip this. + if (is_main_frame && frame_reuse_status == WindowProxy::kFrameWillBeReused && + MemoryCoordinator::IsLowEndDevice() && + MemoryCoordinator::IsCurrentlyLowMemory()) { + size_t pre_gc_memory_usage = GetMemoryUsage(); + V8PerIsolateData::MainThreadIsolate()->MemoryPressureNotification( + v8::MemoryPressureLevel::kCritical); + size_t post_gc_memory_usage = GetMemoryUsage(); + int reduction = static_cast<int>(pre_gc_memory_usage) - + static_cast<int>(post_gc_memory_usage); + DEFINE_STATIC_LOCAL( + CustomCountHistogram, reduction_histogram, + ("BlinkGC.LowMemoryPageNavigationGC.Reduction", 1, 512, 50)); + reduction_histogram.Count(reduction / 1024 / 1024); + } +#endif V8PerIsolateData::MainThreadIsolate()->ContextDisposedNotification( !is_main_frame); pseudo_idle_timer_.Stop();
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.h b/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.h index de0aec5..b9fd253a 100644 --- a/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.h +++ b/third_party/WebKit/Source/bindings/core/v8/V8GCForContextDispose.h
@@ -31,6 +31,7 @@ #ifndef V8GCForContextDispose_h #define V8GCForContextDispose_h +#include "bindings/core/v8/WindowProxy.h" #include "platform/Timer.h" namespace blink { @@ -40,7 +41,7 @@ WTF_MAKE_NONCOPYABLE(V8GCForContextDispose); public: - void NotifyContextDisposed(bool is_main_frame); + void NotifyContextDisposed(bool is_main_frame, WindowProxy::FrameReuseStatus); void NotifyIdle(); static V8GCForContextDispose& Instance();
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp index bda519f..4e89f5b 100644 --- a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.cpp
@@ -63,11 +63,15 @@ lifecycle_(Lifecycle::kContextIsUninitialized) {} void WindowProxy::ClearForClose() { - DisposeContext(Lifecycle::kFrameIsDetached); + DisposeContext(Lifecycle::kFrameIsDetached, kFrameWillNotBeReused); } void WindowProxy::ClearForNavigation() { - DisposeContext(Lifecycle::kGlobalObjectIsDetached); + DisposeContext(Lifecycle::kGlobalObjectIsDetached, kFrameWillBeReused); +} + +void WindowProxy::ClearForSwap() { + DisposeContext(Lifecycle::kGlobalObjectIsDetached, kFrameWillNotBeReused); } v8::Local<v8::Object> WindowProxy::GlobalProxyIfNotDetached() {
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h index f42a069..7143fa4 100644 --- a/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h +++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxy.h
@@ -151,6 +151,7 @@ void ClearForClose(); void ClearForNavigation(); + void ClearForSwap(); CORE_EXPORT v8::Local<v8::Object> GlobalProxyIfNotDetached(); v8::Local<v8::Object> ReleaseGlobalProxy(); @@ -162,6 +163,8 @@ virtual bool IsLocal() const { return false; } + enum FrameReuseStatus { kFrameWillNotBeReused, kFrameWillBeReused }; + protected: // Lifecycle represents the following four states. // @@ -227,7 +230,7 @@ virtual void Initialize() = 0; - virtual void DisposeContext(Lifecycle next_status) = 0; + virtual void DisposeContext(Lifecycle next_status, FrameReuseStatus) = 0; WARN_UNUSED_RESULT v8::Local<v8::Object> AssociateWithWrapper( DOMWindow*,
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp index 53e5ca3..753b12c48 100644 --- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.cpp
@@ -26,6 +26,12 @@ entry.value->ClearForNavigation(); } +void WindowProxyManager::ClearForSwap() { + window_proxy_->ClearForSwap(); + for (auto& entry : isolated_worlds_) + entry.value->ClearForSwap(); +} + void WindowProxyManager::ReleaseGlobalProxies( GlobalProxyVector& global_proxies) { DCHECK(global_proxies.IsEmpty());
diff --git a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h index cd9ffab..ef28337 100644 --- a/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h +++ b/third_party/WebKit/Source/bindings/core/v8/WindowProxyManager.h
@@ -28,6 +28,7 @@ void ClearForClose(); void CORE_EXPORT ClearForNavigation(); + void ClearForSwap(); // Global proxies are passed in a vector to maintain their order: global proxy // object for the main world is always first. This is needed to prevent bugs
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn index 6aaa0d5..6d459f87 100644 --- a/third_party/WebKit/Source/core/BUILD.gn +++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -1159,7 +1159,6 @@ "animation/AnimationTest.cpp", "animation/AnimationTestHelper.cpp", "animation/AnimationTestHelper.h", - "animation/AnimationTimelineTest.cpp", "animation/CompositorAnimationsTest.cpp", "animation/DocumentTimelineTest.cpp", "animation/EffectInputTest.cpp",
diff --git a/third_party/WebKit/Source/core/animation/Animation.cpp b/third_party/WebKit/Source/core/animation/Animation.cpp index bd3225a..c404e327 100644 --- a/third_party/WebKit/Source/core/animation/Animation.cpp +++ b/third_party/WebKit/Source/core/animation/Animation.cpp
@@ -30,7 +30,6 @@ #include "core/animation/Animation.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CompositorPendingAnimations.h" #include "core/animation/DocumentTimeline.h" #include "core/animation/KeyframeEffectReadOnly.h" @@ -70,13 +69,13 @@ Animation* Animation::Create(AnimationEffectReadOnly* effect, SuperAnimationTimeline* timeline) { - if (!timeline || !timeline->IsAnimationTimeline()) { + if (!timeline || !timeline->IsDocumentTimeline()) { // FIXME: Support creating animations without a timeline. NOTREACHED(); return nullptr; } - AnimationTimeline* subtimeline = ToAnimationTimeline(timeline); + DocumentTimeline* subtimeline = ToDocumentTimeline(timeline); Animation* animation = new Animation( subtimeline->GetDocument()->ContextDocument(), *subtimeline, effect); @@ -112,7 +111,7 @@ } Animation::Animation(ExecutionContext* execution_context, - AnimationTimeline& timeline, + DocumentTimeline& timeline, AnimationEffectReadOnly* content) : ContextLifecycleObserver(execution_context), play_state_(kIdle), @@ -151,7 +150,7 @@ void Animation::Dispose() { DestroyCompositorPlayer(); - // If the AnimationTimeline and its Animation objects are + // If the DocumentTimeline and its Animation objects are // finalized by the same GC, we have to eagerly clear out // this Animation object's compositor player registration. DCHECK(!compositor_player_); @@ -1214,12 +1213,18 @@ if (!content_ || !content_->IsKeyframeEffectReadOnly()) return; - Element& target = *ToKeyframeEffectReadOnly(content_.Get())->Target(); + Element* target = ToKeyframeEffectReadOnly(content_.Get())->Target(); - if (CSSAnimations::IsAffectedByKeyframesFromScope(target, tree_scope)) - target.SetNeedsStyleRecalc(kLocalStyleChange, - StyleChangeReasonForTracing::Create( - StyleChangeReason::kStyleSheetChange)); + // TODO(alancutter): Remove dependency of this function on CSSAnimations. + // This function makes the incorrect assumption that the animation uses + // @keyframes for its effect model when it may instead be using JS provided + // keyframes. + if (target && + CSSAnimations::IsAffectedByKeyframesFromScope(*target, tree_scope)) { + target->SetNeedsStyleRecalc(kLocalStyleChange, + StyleChangeReasonForTracing::Create( + StyleChangeReason::kStyleSheetChange)); + } } void Animation::ResolvePromiseMaybeAsync(AnimationPromise* promise) {
diff --git a/third_party/WebKit/Source/core/animation/Animation.h b/third_party/WebKit/Source/core/animation/Animation.h index f507056e..9190f5e 100644 --- a/third_party/WebKit/Source/core/animation/Animation.h +++ b/third_party/WebKit/Source/core/animation/Animation.h
@@ -38,8 +38,8 @@ #include "core/CSSPropertyNames.h" #include "core/CoreExport.h" #include "core/animation/AnimationEffectReadOnly.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CompositorAnimations.h" +#include "core/animation/DocumentTimeline.h" #include "core/dom/ContextLifecycleObserver.h" #include "core/dom/DOMException.h" #include "core/events/EventTarget.h" @@ -142,8 +142,8 @@ SuperAnimationTimeline* timeline() { return static_cast<SuperAnimationTimeline*>(timeline_); } - const AnimationTimeline* TimelineInternal() const { return timeline_; } - AnimationTimeline* TimelineInternal() { return timeline_; } + const DocumentTimeline* TimelineInternal() const { return timeline_; } + DocumentTimeline* TimelineInternal() { return timeline_; } double CalculateStartTime(double current_time) const; bool HasStartTime() const { return !IsNull(start_time_); } @@ -217,7 +217,7 @@ RegisteredEventListener&) override; private: - Animation(ExecutionContext*, AnimationTimeline&, AnimationEffectReadOnly*); + Animation(ExecutionContext*, DocumentTimeline&, AnimationEffectReadOnly*); void ClearOutdated(); void ForceServiceOnNextFrame(); @@ -268,7 +268,7 @@ Member<AnimationPromise> ready_promise_; Member<AnimationEffectReadOnly> content_; - Member<AnimationTimeline> timeline_; + Member<DocumentTimeline> timeline_; // Reflects all pausing, including via pauseForTesting(). bool paused_;
diff --git a/third_party/WebKit/Source/core/animation/AnimationTest.cpp b/third_party/WebKit/Source/core/animation/AnimationTest.cpp index 6c2f2dd7..006024a5 100644 --- a/third_party/WebKit/Source/core/animation/AnimationTest.cpp +++ b/third_party/WebKit/Source/core/animation/AnimationTest.cpp
@@ -32,8 +32,8 @@ #include <memory> #include "core/animation/AnimationClock.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CompositorPendingAnimations.h" +#include "core/animation/DocumentTimeline.h" #include "core/animation/ElementAnimations.h" #include "core/animation/KeyframeEffect.h" #include "core/dom/DOMNodeIds.h" @@ -63,7 +63,7 @@ page_holder = DummyPageHolder::Create(); document = &page_holder->GetDocument(); document->GetAnimationClock().ResetTimeForTesting(); - timeline = AnimationTimeline::Create(document.Get()); + timeline = DocumentTimeline::Create(document.Get()); timeline->ResetForTesting(); animation = timeline->Play(0); animation->setStartTime(0, false); @@ -92,7 +92,7 @@ } Persistent<Document> document; - Persistent<AnimationTimeline> timeline; + Persistent<DocumentTimeline> timeline; Persistent<Animation> animation; std::unique_ptr<DummyPageHolder> page_holder; };
diff --git a/third_party/WebKit/Source/core/animation/AnimationTimeline.h b/third_party/WebKit/Source/core/animation/AnimationTimeline.h deleted file mode 100644 index 5b5bf24..0000000 --- a/third_party/WebKit/Source/core/animation/AnimationTimeline.h +++ /dev/null
@@ -1,172 +0,0 @@ -/* - * Copyright (C) 2013 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef AnimationTimeline_h -#define AnimationTimeline_h - -#include <memory> -#include "core/CoreExport.h" -#include "core/animation/AnimationEffectReadOnly.h" -#include "core/animation/EffectModel.h" -#include "core/animation/SuperAnimationTimeline.h" -#include "core/dom/Element.h" -#include "core/dom/TaskRunnerHelper.h" -#include "platform/Timer.h" -#include "platform/animation/CompositorAnimationTimeline.h" -#include "platform/bindings/ScriptWrappable.h" -#include "platform/heap/Handle.h" -#include "platform/wtf/RefPtr.h" -#include "platform/wtf/Vector.h" - -namespace blink { - -class Animation; -class AnimationEffectReadOnly; -class Document; - -// AnimationTimeline is constructed and owned by Document, and tied to its -// lifecycle. -class CORE_EXPORT AnimationTimeline : public SuperAnimationTimeline { - DEFINE_WRAPPERTYPEINFO(); - - public: - class PlatformTiming : public GarbageCollectedFinalized<PlatformTiming> { - public: - // Calls AnimationTimeline's wake() method after duration seconds. - virtual void WakeAfter(double duration) = 0; - virtual void ServiceOnNextFrame() = 0; - virtual ~PlatformTiming() {} - DEFINE_INLINE_VIRTUAL_TRACE() {} - }; - - static AnimationTimeline* Create(Document*, PlatformTiming* = nullptr); - - virtual ~AnimationTimeline() {} - - bool IsAnimationTimeline() const final { return true; } - - void ServiceAnimations(TimingUpdateReason); - void ScheduleNextService(); - - Animation* Play(AnimationEffectReadOnly*); - HeapVector<Member<Animation>> getAnimations(); - - void AnimationAttached(Animation&); - - bool IsActive(); - bool HasPendingUpdates() const { - return !animations_needing_update_.IsEmpty(); - } - double ZeroTime(); - double currentTime(bool& is_null) override; - double currentTime(); - double CurrentTimeInternal(bool& is_null); - double CurrentTimeInternal(); - double EffectiveTime(); - void PauseAnimationsForTesting(double); - - void SetAllCompositorPending(bool source_changed = false); - void SetOutdatedAnimation(Animation*); - void ClearOutdatedAnimation(Animation*); - bool HasOutdatedAnimation() const { return outdated_animation_count_ > 0; } - bool NeedsAnimationTimingUpdate(); - void InvalidateKeyframeEffects(const TreeScope&); - - void SetPlaybackRate(double); - double PlaybackRate() const; - - CompositorAnimationTimeline* CompositorTimeline() const { - return compositor_timeline_.get(); - } - - Document* GetDocument() { return document_.Get(); } - void Wake(); - void ResetForTesting(); - - DECLARE_VIRTUAL_TRACE(); - - protected: - AnimationTimeline(Document*, PlatformTiming*); - - private: - Member<Document> document_; - double zero_time_; - bool zero_time_initialized_; - unsigned outdated_animation_count_; - // Animations which will be updated on the next frame - // i.e. current, in effect, or had timing changed - HeapHashSet<Member<Animation>> animations_needing_update_; - HeapHashSet<WeakMember<Animation>> animations_; - - double playback_rate_; - - friend class SMILTimeContainer; - static const double kMinimumDelay; - - Member<PlatformTiming> timing_; - double last_current_time_internal_; - - std::unique_ptr<CompositorAnimationTimeline> compositor_timeline_; - - class AnimationTimelineTiming final : public PlatformTiming { - public: - AnimationTimelineTiming(AnimationTimeline* timeline) - : timeline_(timeline), - timer_(TaskRunnerHelper::Get(TaskType::kUnspecedTimer, - timeline->GetDocument()), - this, - &AnimationTimelineTiming::TimerFired) { - DCHECK(timeline_); - } - - void WakeAfter(double duration) override; - void ServiceOnNextFrame() override; - - void TimerFired(TimerBase*) { timeline_->Wake(); } - - DECLARE_VIRTUAL_TRACE(); - - private: - Member<AnimationTimeline> timeline_; - TaskRunnerTimer<AnimationTimelineTiming> timer_; - }; - - friend class AnimationAnimationTimelineTest; -}; - -DEFINE_TYPE_CASTS(AnimationTimeline, - SuperAnimationTimeline, - timeline, - timeline->IsAnimationTimeline(), - timeline.IsAnimationTimeline()); - -} // namespace blink - -#endif
diff --git a/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp b/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp deleted file mode 100644 index 46be9c5..0000000 --- a/third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp +++ /dev/null
@@ -1,296 +0,0 @@ -/* - * Copyright (c) 2013, Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "core/animation/AnimationTimeline.h" - -#include "core/animation/AnimationClock.h" -#include "core/animation/AnimationEffectReadOnly.h" -#include "core/animation/CompositorPendingAnimations.h" -#include "core/animation/KeyframeEffect.h" -#include "core/animation/KeyframeEffectModel.h" -#include "core/dom/Document.h" -#include "core/dom/Element.h" -#include "core/dom/QualifiedName.h" -#include "core/testing/DummyPageHolder.h" -#include "platform/weborigin/KURL.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include <memory> - -namespace blink { - -class MockPlatformTiming : public AnimationTimeline::PlatformTiming { - public: - MOCK_METHOD1(WakeAfter, void(double)); - MOCK_METHOD0(ServiceOnNextFrame, void()); - - DEFINE_INLINE_TRACE() { AnimationTimeline::PlatformTiming::Trace(visitor); } -}; - -class AnimationAnimationTimelineTest : public ::testing::Test { - protected: - virtual void SetUp() { - page_holder = DummyPageHolder::Create(); - document = &page_holder->GetDocument(); - document->GetAnimationClock().ResetTimeForTesting(); - element = Element::Create(QualifiedName::Null(), document.Get()); - platform_timing = new MockPlatformTiming; - timeline = AnimationTimeline::Create(document.Get(), platform_timing); - timeline->ResetForTesting(); - ASSERT_EQ(0, timeline->CurrentTimeInternal()); - } - - virtual void TearDown() { - document.Release(); - element.Release(); - timeline.Release(); - ThreadState::Current()->CollectAllGarbage(); - } - - void UpdateClockAndService(double time) { - document->GetAnimationClock().UpdateTime(time); - document->GetCompositorPendingAnimations().Update( - Optional<CompositorElementIdSet>(), false); - timeline->ServiceAnimations(kTimingUpdateForAnimationFrame); - timeline->ScheduleNextService(); - } - - std::unique_ptr<DummyPageHolder> page_holder; - Persistent<Document> document; - Persistent<Element> element; - Persistent<AnimationTimeline> timeline; - Timing timing; - Persistent<MockPlatformTiming> platform_timing; - - void Wake() { timeline->Wake(); } - - double MinimumDelay() { return AnimationTimeline::kMinimumDelay; } -}; - -TEST_F(AnimationAnimationTimelineTest, EmptyKeyframeAnimation) { - AnimatableValueKeyframeEffectModel* effect = - AnimatableValueKeyframeEffectModel::Create( - AnimatableValueKeyframeVector()); - KeyframeEffect* keyframe_effect = - KeyframeEffect::Create(element.Get(), effect, timing); - - timeline->Play(keyframe_effect); - - UpdateClockAndService(0); - EXPECT_FLOAT_EQ(0, timeline->CurrentTimeInternal()); - EXPECT_FALSE(keyframe_effect->IsInEffect()); - - UpdateClockAndService(100); - EXPECT_FLOAT_EQ(100, timeline->CurrentTimeInternal()); -} - -TEST_F(AnimationAnimationTimelineTest, EmptyForwardsKeyframeAnimation) { - AnimatableValueKeyframeEffectModel* effect = - AnimatableValueKeyframeEffectModel::Create( - AnimatableValueKeyframeVector()); - timing.fill_mode = Timing::FillMode::FORWARDS; - KeyframeEffect* keyframe_effect = - KeyframeEffect::Create(element.Get(), effect, timing); - - timeline->Play(keyframe_effect); - - UpdateClockAndService(0); - EXPECT_FLOAT_EQ(0, timeline->CurrentTimeInternal()); - EXPECT_TRUE(keyframe_effect->IsInEffect()); - - UpdateClockAndService(100); - EXPECT_FLOAT_EQ(100, timeline->CurrentTimeInternal()); -} - -TEST_F(AnimationAnimationTimelineTest, ZeroTime) { - bool is_null; - - document->GetAnimationClock().UpdateTime(100); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); - - document->GetAnimationClock().UpdateTime(200); - EXPECT_EQ(200, timeline->CurrentTimeInternal()); - EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); -} - -TEST_F(AnimationAnimationTimelineTest, PlaybackRateNormal) { - double zero_time = timeline->ZeroTime(); - bool is_null; - - timeline->SetPlaybackRate(1.0); - EXPECT_EQ(1.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(100); - EXPECT_EQ(zero_time, timeline->ZeroTime()); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); - - document->GetAnimationClock().UpdateTime(200); - EXPECT_EQ(zero_time, timeline->ZeroTime()); - EXPECT_EQ(200, timeline->CurrentTimeInternal()); - EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); -} - -TEST_F(AnimationAnimationTimelineTest, PlaybackRatePause) { - bool is_null; - - document->GetAnimationClock().UpdateTime(100); - EXPECT_EQ(0, timeline->ZeroTime()); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); - - timeline->SetPlaybackRate(0.0); - EXPECT_EQ(0.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(200); - EXPECT_EQ(100, timeline->ZeroTime()); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - - timeline->SetPlaybackRate(1.0); - EXPECT_EQ(1.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(400); - EXPECT_EQ(100, timeline->ZeroTime()); - EXPECT_EQ(300, timeline->CurrentTimeInternal()); - EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); - - EXPECT_FALSE(is_null); -} - -TEST_F(AnimationAnimationTimelineTest, PlaybackRateSlow) { - bool is_null; - - document->GetAnimationClock().UpdateTime(100); - EXPECT_EQ(0, timeline->ZeroTime()); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); - - timeline->SetPlaybackRate(0.5); - EXPECT_EQ(0.5, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(300); - EXPECT_EQ(-100, timeline->ZeroTime()); - EXPECT_EQ(200, timeline->CurrentTimeInternal()); - EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); - - timeline->SetPlaybackRate(1.0); - EXPECT_EQ(1.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(400); - EXPECT_EQ(100, timeline->ZeroTime()); - EXPECT_EQ(300, timeline->CurrentTimeInternal()); - EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); - - EXPECT_FALSE(is_null); -} - -TEST_F(AnimationAnimationTimelineTest, PlaybackRateFast) { - bool is_null; - - document->GetAnimationClock().UpdateTime(100); - EXPECT_EQ(0, timeline->ZeroTime()); - EXPECT_EQ(100, timeline->CurrentTimeInternal()); - EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); - EXPECT_FALSE(is_null); - - timeline->SetPlaybackRate(2.0); - EXPECT_EQ(2.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(300); - EXPECT_EQ(50, timeline->ZeroTime()); - EXPECT_EQ(500, timeline->CurrentTimeInternal()); - EXPECT_EQ(500, timeline->CurrentTimeInternal(is_null)); - - timeline->SetPlaybackRate(1.0); - EXPECT_EQ(1.0, timeline->PlaybackRate()); - document->GetAnimationClock().UpdateTime(400); - EXPECT_EQ(-200, timeline->ZeroTime()); - EXPECT_EQ(600, timeline->CurrentTimeInternal()); - EXPECT_EQ(600, timeline->CurrentTimeInternal(is_null)); - - EXPECT_FALSE(is_null); -} - -TEST_F(AnimationAnimationTimelineTest, PauseForTesting) { - float seek_time = 1; - timing.fill_mode = Timing::FillMode::FORWARDS; - KeyframeEffect* anim1 = - KeyframeEffect::Create(element.Get(), - AnimatableValueKeyframeEffectModel::Create( - AnimatableValueKeyframeVector()), - timing); - KeyframeEffect* anim2 = - KeyframeEffect::Create(element.Get(), - AnimatableValueKeyframeEffectModel::Create( - AnimatableValueKeyframeVector()), - timing); - Animation* animation1 = timeline->Play(anim1); - Animation* animation2 = timeline->Play(anim2); - timeline->PauseAnimationsForTesting(seek_time); - - EXPECT_FLOAT_EQ(seek_time, animation1->CurrentTimeInternal()); - EXPECT_FLOAT_EQ(seek_time, animation2->CurrentTimeInternal()); -} - -TEST_F(AnimationAnimationTimelineTest, DelayBeforeAnimationStart) { - timing.iteration_duration = 2; - timing.start_delay = 5; - - KeyframeEffect* keyframe_effect = - KeyframeEffect::Create(element.Get(), nullptr, timing); - - timeline->Play(keyframe_effect); - - // TODO: Put the animation startTime in the future when we add the capability - // to change animation startTime - EXPECT_CALL(*platform_timing, WakeAfter(timing.start_delay - MinimumDelay())); - UpdateClockAndService(0); - - EXPECT_CALL(*platform_timing, - WakeAfter(timing.start_delay - MinimumDelay() - 1.5)); - UpdateClockAndService(1.5); - - EXPECT_CALL(*platform_timing, ServiceOnNextFrame()); - Wake(); - - EXPECT_CALL(*platform_timing, ServiceOnNextFrame()); - UpdateClockAndService(4.98); -} - -TEST_F(AnimationAnimationTimelineTest, UseAnimationAfterTimelineDeref) { - Animation* animation = timeline->Play(0); - timeline.Clear(); - // Test passes if this does not crash. - animation->setStartTime(0, false); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/BUILD.gn b/third_party/WebKit/Source/core/animation/BUILD.gn index 6a30f3c..ff1442e8 100644 --- a/third_party/WebKit/Source/core/animation/BUILD.gn +++ b/third_party/WebKit/Source/core/animation/BUILD.gn
@@ -20,8 +20,6 @@ "AnimationEffectTimingReadOnly.h", "AnimationInputHelpers.cpp", "AnimationInputHelpers.h", - "AnimationTimeline.cpp", - "AnimationTimeline.h", "BasicShapeInterpolationFunctions.cpp", "BasicShapeInterpolationFunctions.h", "BasicShapePropertyFunctions.h", @@ -109,6 +107,7 @@ "DocumentAnimation.h", "DocumentAnimations.cpp", "DocumentAnimations.h", + "DocumentTimeline.cpp", "DocumentTimeline.h", "EffectInput.cpp", "EffectInput.h",
diff --git a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp index 0618730..d0b7975 100644 --- a/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp +++ b/third_party/WebKit/Source/core/animation/CompositorAnimationsTest.cpp
@@ -32,8 +32,8 @@ #include <memory> #include "core/animation/Animation.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CompositorPendingAnimations.h" +#include "core/animation/DocumentTimeline.h" #include "core/animation/ElementAnimations.h" #include "core/animation/KeyframeEffect.h" #include "core/animation/animatable/AnimatableDouble.h" @@ -77,7 +77,7 @@ Persistent<Document> document_; Persistent<Element> element_; - Persistent<AnimationTimeline> timeline_; + Persistent<DocumentTimeline> timeline_; std::unique_ptr<DummyPageHolder> page_holder_; void SetUp() override { @@ -108,7 +108,7 @@ document_ = &page_holder_->GetDocument(); document_->GetAnimationClock().ResetTimeForTesting(); - timeline_ = AnimationTimeline::Create(document_.Get()); + timeline_ = DocumentTimeline::Create(document_.Get()); timeline_->ResetForTesting(); element_ = document_->createElement("test"); }
diff --git a/third_party/WebKit/Source/core/animation/CompositorPendingAnimations.cpp b/third_party/WebKit/Source/core/animation/CompositorPendingAnimations.cpp index 265a18d..def6be2 100644 --- a/third_party/WebKit/Source/core/animation/CompositorPendingAnimations.cpp +++ b/third_party/WebKit/Source/core/animation/CompositorPendingAnimations.cpp
@@ -30,7 +30,7 @@ #include "core/animation/CompositorPendingAnimations.h" -#include "core/animation/AnimationTimeline.h" +#include "core/animation/DocumentTimeline.h" #include "core/animation/KeyframeEffect.h" #include "core/dom/Document.h" #include "core/frame/LocalFrameView.h"
diff --git a/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp b/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp similarity index 79% rename from third_party/WebKit/Source/core/animation/AnimationTimeline.cpp rename to third_party/WebKit/Source/core/animation/DocumentTimeline.cpp index 1752237..d9af1ad 100644 --- a/third_party/WebKit/Source/core/animation/AnimationTimeline.cpp +++ b/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp
@@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "core/animation/AnimationTimeline.h" +#include "core/animation/DocumentTimeline.h" #include <algorithm> #include "core/animation/AnimationClock.h" @@ -52,18 +52,18 @@ const Member<Animation>& right) { return Animation::HasLowerPriority(left.Get(), right.Get()); } -} +} // namespace // This value represents 1 frame at 30Hz plus a little bit of wiggle room. // TODO: Plumb a nominal framerate through and derive this value from that. -const double AnimationTimeline::kMinimumDelay = 0.04; +const double DocumentTimeline::kMinimumDelay = 0.04; -AnimationTimeline* AnimationTimeline::Create(Document* document, - PlatformTiming* timing) { - return new AnimationTimeline(document, timing); +DocumentTimeline* DocumentTimeline::Create(Document* document, + PlatformTiming* timing) { + return new DocumentTimeline(document, timing); } -AnimationTimeline::AnimationTimeline(Document* document, PlatformTiming* timing) +DocumentTimeline::DocumentTimeline(Document* document, PlatformTiming* timing) : document_(document), // 0 is used by unit tests which cannot initialize from the loader zero_time_(0), @@ -72,7 +72,7 @@ playback_rate_(1), last_current_time_internal_(0) { if (!timing) - timing_ = new AnimationTimelineTiming(this); + timing_ = new DocumentTimelineTiming(this); else timing_ = timing; @@ -82,17 +82,17 @@ DCHECK(document); } -bool AnimationTimeline::IsActive() { +bool DocumentTimeline::IsActive() { return document_ && document_->GetPage(); } -void AnimationTimeline::AnimationAttached(Animation& animation) { +void DocumentTimeline::AnimationAttached(Animation& animation) { DCHECK_EQ(animation.TimelineInternal(), this); DCHECK(!animations_.Contains(&animation)); animations_.insert(&animation); } -Animation* AnimationTimeline::Play(AnimationEffectReadOnly* child) { +Animation* DocumentTimeline::Play(AnimationEffectReadOnly* child) { if (!document_) return nullptr; @@ -105,7 +105,7 @@ return animation; } -HeapVector<Member<Animation>> AnimationTimeline::getAnimations() { +HeapVector<Member<Animation>> DocumentTimeline::getAnimations() { HeapVector<Member<Animation>> animations; for (const auto& animation : animations_) { if (animation->effect() && @@ -116,12 +116,12 @@ return animations; } -void AnimationTimeline::Wake() { +void DocumentTimeline::Wake() { timing_->ServiceOnNextFrame(); } -void AnimationTimeline::ServiceAnimations(TimingUpdateReason reason) { - TRACE_EVENT0("blink", "AnimationTimeline::serviceAnimations"); +void DocumentTimeline::ServiceAnimations(TimingUpdateReason reason) { + TRACE_EVENT0("blink", "DocumentTimeline::serviceAnimations"); last_current_time_internal_ = CurrentTimeInternal(); @@ -148,7 +148,7 @@ #endif } -void AnimationTimeline::ScheduleNextService() { +void DocumentTimeline::ScheduleNextService() { DCHECK_EQ(outdated_animation_count_, 0U); double time_to_next_effect = std::numeric_limits<double>::infinity(); @@ -164,23 +164,23 @@ } } -void AnimationTimeline::AnimationTimelineTiming::WakeAfter(double duration) { +void DocumentTimeline::DocumentTimelineTiming::WakeAfter(double duration) { if (timer_.IsActive() && timer_.NextFireInterval() < duration) return; timer_.StartOneShot(duration, BLINK_FROM_HERE); } -void AnimationTimeline::AnimationTimelineTiming::ServiceOnNextFrame() { +void DocumentTimeline::DocumentTimelineTiming::ServiceOnNextFrame() { if (timeline_->document_ && timeline_->document_->View()) timeline_->document_->View()->ScheduleAnimation(); } -DEFINE_TRACE(AnimationTimeline::AnimationTimelineTiming) { +DEFINE_TRACE(DocumentTimeline::DocumentTimelineTiming) { visitor->Trace(timeline_); - AnimationTimeline::PlatformTiming::Trace(visitor); + DocumentTimeline::PlatformTiming::Trace(visitor); } -double AnimationTimeline::ZeroTime() { +double DocumentTimeline::ZeroTime() { if (!zero_time_initialized_ && document_ && document_->Loader()) { zero_time_ = document_->Loader()->GetTiming().ReferenceMonotonicTime(); zero_time_initialized_ = true; @@ -188,18 +188,18 @@ return zero_time_; } -void AnimationTimeline::ResetForTesting() { +void DocumentTimeline::ResetForTesting() { zero_time_ = 0; zero_time_initialized_ = true; playback_rate_ = 1; last_current_time_internal_ = 0; } -double AnimationTimeline::currentTime(bool& is_null) { +double DocumentTimeline::currentTime(bool& is_null) { return CurrentTimeInternal(is_null) * 1000; } -double AnimationTimeline::CurrentTimeInternal(bool& is_null) { +double DocumentTimeline::CurrentTimeInternal(bool& is_null) { if (!IsActive()) { is_null = true; return std::numeric_limits<double>::quiet_NaN(); @@ -213,27 +213,27 @@ return result; } -double AnimationTimeline::currentTime() { +double DocumentTimeline::currentTime() { return CurrentTimeInternal() * 1000; } -double AnimationTimeline::CurrentTimeInternal() { +double DocumentTimeline::CurrentTimeInternal() { bool is_null; return CurrentTimeInternal(is_null); } -double AnimationTimeline::EffectiveTime() { +double DocumentTimeline::EffectiveTime() { double time = CurrentTimeInternal(); return std::isnan(time) ? 0 : time; } -void AnimationTimeline::PauseAnimationsForTesting(double pause_time) { +void DocumentTimeline::PauseAnimationsForTesting(double pause_time) { for (const auto& animation : animations_needing_update_) animation->PauseForTesting(pause_time); ServiceAnimations(kTimingUpdateOnDemand); } -bool AnimationTimeline::NeedsAnimationTimingUpdate() { +bool DocumentTimeline::NeedsAnimationTimingUpdate() { if (CurrentTimeInternal() == last_current_time_internal_) return false; @@ -250,12 +250,12 @@ return !animations_needing_update_.IsEmpty(); } -void AnimationTimeline::ClearOutdatedAnimation(Animation* animation) { +void DocumentTimeline::ClearOutdatedAnimation(Animation* animation) { DCHECK(!animation->Outdated()); outdated_animation_count_--; } -void AnimationTimeline::SetOutdatedAnimation(Animation* animation) { +void DocumentTimeline::SetOutdatedAnimation(Animation* animation) { DCHECK(animation->Outdated()); outdated_animation_count_++; animations_needing_update_.insert(animation); @@ -263,7 +263,7 @@ timing_->ServiceOnNextFrame(); } -void AnimationTimeline::SetPlaybackRate(double playback_rate) { +void DocumentTimeline::SetPlaybackRate(double playback_rate) { if (!IsActive()) return; double current_time = CurrentTimeInternal(); @@ -279,22 +279,22 @@ SetAllCompositorPending(true); } -void AnimationTimeline::SetAllCompositorPending(bool source_changed) { +void DocumentTimeline::SetAllCompositorPending(bool source_changed) { for (const auto& animation : animations_) { animation->SetCompositorPending(source_changed); } } -double AnimationTimeline::PlaybackRate() const { +double DocumentTimeline::PlaybackRate() const { return playback_rate_; } -void AnimationTimeline::InvalidateKeyframeEffects(const TreeScope& tree_scope) { +void DocumentTimeline::InvalidateKeyframeEffects(const TreeScope& tree_scope) { for (const auto& animation : animations_) animation->InvalidateKeyframeEffect(tree_scope); } -DEFINE_TRACE(AnimationTimeline) { +DEFINE_TRACE(DocumentTimeline) { visitor->Trace(document_); visitor->Trace(timing_); visitor->Trace(animations_needing_update_);
diff --git a/third_party/WebKit/Source/core/animation/DocumentTimeline.h b/third_party/WebKit/Source/core/animation/DocumentTimeline.h index a408df7..089ce86f 100644 --- a/third_party/WebKit/Source/core/animation/DocumentTimeline.h +++ b/third_party/WebKit/Source/core/animation/DocumentTimeline.h
@@ -31,26 +31,142 @@ #ifndef DocumentTimeline_h #define DocumentTimeline_h +#include <memory> #include "core/CoreExport.h" -#include "core/animation/AnimationTimeline.h" +#include "core/animation/AnimationEffectReadOnly.h" +#include "core/animation/EffectModel.h" +#include "core/animation/SuperAnimationTimeline.h" +#include "core/dom/Element.h" +#include "core/dom/TaskRunnerHelper.h" +#include "platform/Timer.h" +#include "platform/animation/CompositorAnimationTimeline.h" #include "platform/bindings/ScriptWrappable.h" +#include "platform/heap/Handle.h" +#include "platform/wtf/RefPtr.h" +#include "platform/wtf/Vector.h" namespace blink { +class Animation; +class AnimationEffectReadOnly; class Document; -class CORE_EXPORT DocumentTimeline final : public AnimationTimeline { +// DocumentTimeline is constructed and owned by Document, and tied to its +// lifecycle. +class CORE_EXPORT DocumentTimeline : public SuperAnimationTimeline { + DEFINE_WRAPPERTYPEINFO(); + public: - static DocumentTimeline* Create(Document* document) { - return new DocumentTimeline(document); + class PlatformTiming : public GarbageCollectedFinalized<PlatformTiming> { + public: + // Calls DocumentTimeline's wake() method after duration seconds. + virtual void WakeAfter(double duration) = 0; + virtual void ServiceOnNextFrame() = 0; + virtual ~PlatformTiming() {} + DEFINE_INLINE_VIRTUAL_TRACE() {} + }; + + static DocumentTimeline* Create(Document*, PlatformTiming* = nullptr); + + virtual ~DocumentTimeline() {} + + bool IsDocumentTimeline() const final { return true; } + + void ServiceAnimations(TimingUpdateReason); + void ScheduleNextService(); + + Animation* Play(AnimationEffectReadOnly*); + HeapVector<Member<Animation>> getAnimations(); + + void AnimationAttached(Animation&); + + bool IsActive(); + bool HasPendingUpdates() const { + return !animations_needing_update_.IsEmpty(); + } + double ZeroTime(); + double currentTime(bool& is_null) override; + double currentTime(); + double CurrentTimeInternal(bool& is_null); + double CurrentTimeInternal(); + double EffectiveTime(); + void PauseAnimationsForTesting(double); + + void SetAllCompositorPending(bool source_changed = false); + void SetOutdatedAnimation(Animation*); + void ClearOutdatedAnimation(Animation*); + bool HasOutdatedAnimation() const { return outdated_animation_count_ > 0; } + bool NeedsAnimationTimingUpdate(); + void InvalidateKeyframeEffects(const TreeScope&); + + void SetPlaybackRate(double); + double PlaybackRate() const; + + CompositorAnimationTimeline* CompositorTimeline() const { + return compositor_timeline_.get(); } + Document* GetDocument() { return document_.Get(); } + void Wake(); + void ResetForTesting(); + + DECLARE_VIRTUAL_TRACE(); + + protected: + DocumentTimeline(Document*, PlatformTiming*); + private: - DocumentTimeline(Document* document) : AnimationTimeline(document, nullptr) {} + Member<Document> document_; + double zero_time_; + bool zero_time_initialized_; + unsigned outdated_animation_count_; + // Animations which will be updated on the next frame + // i.e. current, in effect, or had timing changed + HeapHashSet<Member<Animation>> animations_needing_update_; + HeapHashSet<WeakMember<Animation>> animations_; + + double playback_rate_; + + friend class SMILTimeContainer; + static const double kMinimumDelay; + + Member<PlatformTiming> timing_; + double last_current_time_internal_; + + std::unique_ptr<CompositorAnimationTimeline> compositor_timeline_; + + class DocumentTimelineTiming final : public PlatformTiming { + public: + DocumentTimelineTiming(DocumentTimeline* timeline) + : timeline_(timeline), + timer_(TaskRunnerHelper::Get(TaskType::kUnspecedTimer, + timeline->GetDocument()), + this, + &DocumentTimelineTiming::TimerFired) { + DCHECK(timeline_); + } + + void WakeAfter(double duration) override; + void ServiceOnNextFrame() override; + + void TimerFired(TimerBase*) { timeline_->Wake(); } + + DECLARE_VIRTUAL_TRACE(); + + private: + Member<DocumentTimeline> timeline_; + TaskRunnerTimer<DocumentTimelineTiming> timer_; + }; friend class AnimationDocumentTimelineTest; }; +DEFINE_TYPE_CASTS(DocumentTimeline, + SuperAnimationTimeline, + timeline, + timeline->IsDocumentTimeline(), + timeline.IsDocumentTimeline()); + } // namespace blink #endif
diff --git a/third_party/WebKit/Source/core/animation/DocumentTimeline.idl b/third_party/WebKit/Source/core/animation/DocumentTimeline.idl index 4ef2f72c..71237885 100644 --- a/third_party/WebKit/Source/core/animation/DocumentTimeline.idl +++ b/third_party/WebKit/Source/core/animation/DocumentTimeline.idl
@@ -5,7 +5,6 @@ // https://w3c.github.io/web-animations/#the-documenttimeline-interface [ - RuntimeEnabled=WebAnimationsAPI, - ImplementedAs=AnimationTimeline + RuntimeEnabled=WebAnimationsAPI ] interface DocumentTimeline : AnimationTimeline { };
diff --git a/third_party/WebKit/Source/core/animation/DocumentTimelineTest.cpp b/third_party/WebKit/Source/core/animation/DocumentTimelineTest.cpp index 9b187bab..cab0eae 100644 --- a/third_party/WebKit/Source/core/animation/DocumentTimelineTest.cpp +++ b/third_party/WebKit/Source/core/animation/DocumentTimelineTest.cpp
@@ -30,32 +30,269 @@ #include "core/animation/DocumentTimeline.h" -#include "core/animation/KeyframeEffect.h" -#include "core/dom/Document.h" -#include "core/testing/DummyPageHolder.h" -#include "testing/gtest/include/gtest/gtest.h" #include <memory> +#include "core/animation/AnimationClock.h" +#include "core/animation/AnimationEffectReadOnly.h" +#include "core/animation/CompositorPendingAnimations.h" +#include "core/animation/KeyframeEffect.h" +#include "core/animation/KeyframeEffectModel.h" +#include "core/dom/Document.h" +#include "core/dom/Element.h" +#include "core/dom/QualifiedName.h" +#include "core/testing/DummyPageHolder.h" +#include "platform/weborigin/KURL.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" namespace blink { +class MockPlatformTiming : public DocumentTimeline::PlatformTiming { + public: + MOCK_METHOD1(WakeAfter, void(double)); + MOCK_METHOD0(ServiceOnNextFrame, void()); + + DEFINE_INLINE_TRACE() { DocumentTimeline::PlatformTiming::Trace(visitor); } +}; + class AnimationDocumentTimelineTest : public ::testing::Test { protected: virtual void SetUp() { page_holder = DummyPageHolder::Create(); document = &page_holder->GetDocument(); + document->GetAnimationClock().ResetTimeForTesting(); + element = Element::Create(QualifiedName::Null(), document.Get()); + platform_timing = new MockPlatformTiming; + timeline = DocumentTimeline::Create(document.Get(), platform_timing); + timeline->ResetForTesting(); + ASSERT_EQ(0, timeline->CurrentTimeInternal()); } virtual void TearDown() { document.Release(); + element.Release(); + timeline.Release(); ThreadState::Current()->CollectAllGarbage(); } + void UpdateClockAndService(double time) { + document->GetAnimationClock().UpdateTime(time); + document->GetCompositorPendingAnimations().Update( + Optional<CompositorElementIdSet>(), false); + timeline->ServiceAnimations(kTimingUpdateForAnimationFrame); + timeline->ScheduleNextService(); + } + std::unique_ptr<DummyPageHolder> page_holder; Persistent<Document> document; + Persistent<Element> element; Persistent<DocumentTimeline> timeline; Timing timing; + Persistent<MockPlatformTiming> platform_timing; + + void Wake() { timeline->Wake(); } + + double MinimumDelay() { return DocumentTimeline::kMinimumDelay; } }; +TEST_F(AnimationDocumentTimelineTest, EmptyKeyframeAnimation) { + AnimatableValueKeyframeEffectModel* effect = + AnimatableValueKeyframeEffectModel::Create( + AnimatableValueKeyframeVector()); + KeyframeEffect* keyframe_effect = + KeyframeEffect::Create(element.Get(), effect, timing); + + timeline->Play(keyframe_effect); + + UpdateClockAndService(0); + EXPECT_FLOAT_EQ(0, timeline->CurrentTimeInternal()); + EXPECT_FALSE(keyframe_effect->IsInEffect()); + + UpdateClockAndService(100); + EXPECT_FLOAT_EQ(100, timeline->CurrentTimeInternal()); +} + +TEST_F(AnimationDocumentTimelineTest, EmptyForwardsKeyframeAnimation) { + AnimatableValueKeyframeEffectModel* effect = + AnimatableValueKeyframeEffectModel::Create( + AnimatableValueKeyframeVector()); + timing.fill_mode = Timing::FillMode::FORWARDS; + KeyframeEffect* keyframe_effect = + KeyframeEffect::Create(element.Get(), effect, timing); + + timeline->Play(keyframe_effect); + + UpdateClockAndService(0); + EXPECT_FLOAT_EQ(0, timeline->CurrentTimeInternal()); + EXPECT_TRUE(keyframe_effect->IsInEffect()); + + UpdateClockAndService(100); + EXPECT_FLOAT_EQ(100, timeline->CurrentTimeInternal()); +} + +TEST_F(AnimationDocumentTimelineTest, ZeroTime) { + bool is_null; + + document->GetAnimationClock().UpdateTime(100); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); + + document->GetAnimationClock().UpdateTime(200); + EXPECT_EQ(200, timeline->CurrentTimeInternal()); + EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); +} + +TEST_F(AnimationDocumentTimelineTest, PlaybackRateNormal) { + double zero_time = timeline->ZeroTime(); + bool is_null; + + timeline->SetPlaybackRate(1.0); + EXPECT_EQ(1.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(100); + EXPECT_EQ(zero_time, timeline->ZeroTime()); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); + + document->GetAnimationClock().UpdateTime(200); + EXPECT_EQ(zero_time, timeline->ZeroTime()); + EXPECT_EQ(200, timeline->CurrentTimeInternal()); + EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); +} + +TEST_F(AnimationDocumentTimelineTest, PlaybackRatePause) { + bool is_null; + + document->GetAnimationClock().UpdateTime(100); + EXPECT_EQ(0, timeline->ZeroTime()); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); + + timeline->SetPlaybackRate(0.0); + EXPECT_EQ(0.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(200); + EXPECT_EQ(100, timeline->ZeroTime()); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + + timeline->SetPlaybackRate(1.0); + EXPECT_EQ(1.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(400); + EXPECT_EQ(100, timeline->ZeroTime()); + EXPECT_EQ(300, timeline->CurrentTimeInternal()); + EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); + + EXPECT_FALSE(is_null); +} + +TEST_F(AnimationDocumentTimelineTest, PlaybackRateSlow) { + bool is_null; + + document->GetAnimationClock().UpdateTime(100); + EXPECT_EQ(0, timeline->ZeroTime()); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); + + timeline->SetPlaybackRate(0.5); + EXPECT_EQ(0.5, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(300); + EXPECT_EQ(-100, timeline->ZeroTime()); + EXPECT_EQ(200, timeline->CurrentTimeInternal()); + EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); + + timeline->SetPlaybackRate(1.0); + EXPECT_EQ(1.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(400); + EXPECT_EQ(100, timeline->ZeroTime()); + EXPECT_EQ(300, timeline->CurrentTimeInternal()); + EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); + + EXPECT_FALSE(is_null); +} + +TEST_F(AnimationDocumentTimelineTest, PlaybackRateFast) { + bool is_null; + + document->GetAnimationClock().UpdateTime(100); + EXPECT_EQ(0, timeline->ZeroTime()); + EXPECT_EQ(100, timeline->CurrentTimeInternal()); + EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); + EXPECT_FALSE(is_null); + + timeline->SetPlaybackRate(2.0); + EXPECT_EQ(2.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(300); + EXPECT_EQ(50, timeline->ZeroTime()); + EXPECT_EQ(500, timeline->CurrentTimeInternal()); + EXPECT_EQ(500, timeline->CurrentTimeInternal(is_null)); + + timeline->SetPlaybackRate(1.0); + EXPECT_EQ(1.0, timeline->PlaybackRate()); + document->GetAnimationClock().UpdateTime(400); + EXPECT_EQ(-200, timeline->ZeroTime()); + EXPECT_EQ(600, timeline->CurrentTimeInternal()); + EXPECT_EQ(600, timeline->CurrentTimeInternal(is_null)); + + EXPECT_FALSE(is_null); +} + +TEST_F(AnimationDocumentTimelineTest, PauseForTesting) { + float seek_time = 1; + timing.fill_mode = Timing::FillMode::FORWARDS; + KeyframeEffect* anim1 = + KeyframeEffect::Create(element.Get(), + AnimatableValueKeyframeEffectModel::Create( + AnimatableValueKeyframeVector()), + timing); + KeyframeEffect* anim2 = + KeyframeEffect::Create(element.Get(), + AnimatableValueKeyframeEffectModel::Create( + AnimatableValueKeyframeVector()), + timing); + Animation* animation1 = timeline->Play(anim1); + Animation* animation2 = timeline->Play(anim2); + timeline->PauseAnimationsForTesting(seek_time); + + EXPECT_FLOAT_EQ(seek_time, animation1->CurrentTimeInternal()); + EXPECT_FLOAT_EQ(seek_time, animation2->CurrentTimeInternal()); +} + +TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart) { + timing.iteration_duration = 2; + timing.start_delay = 5; + + KeyframeEffect* keyframe_effect = + KeyframeEffect::Create(element.Get(), nullptr, timing); + + timeline->Play(keyframe_effect); + + // TODO: Put the animation startTime in the future when we add the capability + // to change animation startTime + EXPECT_CALL(*platform_timing, WakeAfter(timing.start_delay - MinimumDelay())); + UpdateClockAndService(0); + + EXPECT_CALL(*platform_timing, + WakeAfter(timing.start_delay - MinimumDelay() - 1.5)); + UpdateClockAndService(1.5); + + EXPECT_CALL(*platform_timing, ServiceOnNextFrame()); + Wake(); + + EXPECT_CALL(*platform_timing, ServiceOnNextFrame()); + UpdateClockAndService(4.98); +} + +TEST_F(AnimationDocumentTimelineTest, UseAnimationAfterTimelineDeref) { + Animation* animation = timeline->Play(0); + timeline.Clear(); + // Test passes if this does not crash. + animation->setStartTime(0, false); +} + TEST_F(AnimationDocumentTimelineTest, PlayAfterDocumentDeref) { timing.iteration_duration = 2; timing.start_delay = 5;
diff --git a/third_party/WebKit/Source/core/animation/SuperAnimationTimeline.h b/third_party/WebKit/Source/core/animation/SuperAnimationTimeline.h index e582d1e3..9295883 100644 --- a/third_party/WebKit/Source/core/animation/SuperAnimationTimeline.h +++ b/third_party/WebKit/Source/core/animation/SuperAnimationTimeline.h
@@ -16,7 +16,7 @@ virtual double currentTime(bool&) = 0; - virtual bool IsAnimationTimeline() const { return false; } + virtual bool IsDocumentTimeline() const { return false; } DEFINE_INLINE_VIRTUAL_TRACE() {} };
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp index 0d8fe07..7da43f6 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp +++ b/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp
@@ -34,7 +34,6 @@ #include "core/HTMLNames.h" #include "core/MediaTypeNames.h" #include "core/StylePropertyShorthand.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CSSInterpolationEnvironment.h" #include "core/animation/CSSInterpolationTypesMap.h" #include "core/animation/ElementAnimations.h"
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp index 8ded0bc..79c6a392 100644 --- a/third_party/WebKit/Source/core/dom/Element.cpp +++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -35,7 +35,6 @@ #include "core/CSSValueKeywords.h" #include "core/SVGNames.h" #include "core/XMLNames.h" -#include "core/animation/AnimationTimeline.h" #include "core/animation/CustomCompositorAnimations.h" #include "core/animation/css/CSSAnimations.h" #include "core/css/CSSIdentifierValue.h"
diff --git a/third_party/WebKit/Source/core/exported/WebFrame.cpp b/third_party/WebKit/Source/core/exported/WebFrame.cpp index 21ac08c..7513a770 100644 --- a/third_party/WebKit/Source/core/exported/WebFrame.cpp +++ b/third_party/WebKit/Source/core/exported/WebFrame.cpp
@@ -84,7 +84,7 @@ v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); WindowProxyManager::GlobalProxyVector global_proxies; - old_frame->GetWindowProxyManager()->ClearForNavigation(); + old_frame->GetWindowProxyManager()->ClearForSwap(); old_frame->GetWindowProxyManager()->ReleaseGlobalProxies(global_proxies); // Although the Document in this frame is now unloaded, many resources
diff --git a/third_party/WebKit/Source/core/exported/WebMemoryStatistics.cpp b/third_party/WebKit/Source/core/exported/WebMemoryStatistics.cpp index 465a85a..d1800ac 100644 --- a/third_party/WebKit/Source/core/exported/WebMemoryStatistics.cpp +++ b/third_party/WebKit/Source/core/exported/WebMemoryStatistics.cpp
@@ -9,37 +9,10 @@ namespace blink { -namespace { - -class LightPartitionStatsDumperImpl : public WTF::PartitionStatsDumper { - public: - LightPartitionStatsDumperImpl() : total_active_bytes_(0) {} - - void PartitionDumpTotals( - const char* partition_name, - const WTF::PartitionMemoryStats* memory_stats) override { - total_active_bytes_ += memory_stats->total_active_bytes; - } - - void PartitionsDumpBucketStats( - const char* partition_name, - const WTF::PartitionBucketMemoryStats*) override {} - - size_t TotalActiveBytes() const { return total_active_bytes_; } - - private: - size_t total_active_bytes_; -}; - -} // namespace - WebMemoryStatistics WebMemoryStatistics::Get() { - LightPartitionStatsDumperImpl dumper; WebMemoryStatistics statistics; - - WTF::Partitions::DumpMemoryStats(true, &dumper); - statistics.partition_alloc_total_allocated_bytes = dumper.TotalActiveBytes(); - + statistics.partition_alloc_total_allocated_bytes = + WTF::Partitions::TotalActiveBytes(); statistics.blink_gc_total_allocated_bytes = ProcessHeap::TotalAllocatedObjectSize() + ProcessHeap::TotalMarkedObjectSize();
diff --git a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp index df097aed..c0a70f3 100644 --- a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp +++ b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.cpp
@@ -548,7 +548,7 @@ return Response::OK(); } -AnimationTimeline& InspectorAnimationAgent::ReferenceTimeline() { +DocumentTimeline& InspectorAnimationAgent::ReferenceTimeline() { return inspected_frames_->Root()->GetDocument()->Timeline(); }
diff --git a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.h b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.h index 2cb22937..47212c1 100644 --- a/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.h +++ b/third_party/WebKit/Source/core/inspector/InspectorAnimationAgent.h
@@ -15,7 +15,7 @@ namespace blink { -class AnimationTimeline; +class DocumentTimeline; class InspectedFrames; class InspectorCSSAgent; @@ -79,7 +79,7 @@ std::unique_ptr<protocol::Animation::KeyframesRule> keyframe_rule = nullptr); double NormalizedStartTime(blink::Animation&); - AnimationTimeline& ReferenceTimeline(); + DocumentTimeline& ReferenceTimeline(); blink::Animation* AnimationClone(blink::Animation*); String CreateCSSId(blink::Animation&);
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc index 6a04416..b277bea9 100644 --- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc +++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
@@ -162,7 +162,7 @@ NGInlineItemResult(item_index_, offset_, item.EndOffset())); NGInlineItemResult* item_result = &item_results->back(); if (item.Type() == NGInlineItem::kText) { - state = HandleText(item, item_result); + state = HandleText(*item_results, item, item_result); } else if (item.Type() == NGInlineItem::kAtomicInline) { state = HandleAtomicInline(item, item_result); } else if (item.Type() == NGInlineItem::kControl) { @@ -208,7 +208,15 @@ content_offset_.block_offset); } +bool NGLineBreaker::IsFirstBreakOpportunity( + unsigned offset, + const NGInlineItemResults& results) const { + unsigned line_start_offset = results.front().start_offset; + return break_iterator_.NextBreakOpportunity(line_start_offset) >= offset; +} + NGLineBreaker::LineBreakState NGLineBreaker::HandleText( + const NGInlineItemResults& results, const NGInlineItem& item, NGInlineItemResult* item_result) { DCHECK_EQ(item.Type(), NGInlineItem::kText); @@ -234,9 +242,22 @@ if (auto_wrap_) { // Try to break inside of this text item. BreakText(item_result, item, available_width - position_); - position_ += item_result->inline_size; + LayoutUnit next_position = position_ + item_result->inline_size; + bool is_overflow = next_position > available_width; - bool is_overflow = position_ > available_width; + // If overflow and no break opportunities exist, and if 'break-word', try to + // break at every grapheme cluster boundary. + if (is_overflow && break_if_overflow_ && + IsFirstBreakOpportunity(item_result->end_offset, results)) { + DCHECK_EQ(break_iterator_.BreakType(), LineBreakType::kNormal); + break_iterator_.SetBreakType(LineBreakType::kBreakCharacter); + BreakText(item_result, item, available_width - position_); + break_iterator_.SetBreakType(LineBreakType::kNormal); + next_position = position_ + item_result->inline_size; + is_overflow = next_position > available_width; + } + + position_ = next_position; item_result->no_break_opportunities_inside = is_overflow; if (item_result->end_offset < item.EndOffset()) { offset_ = item_result->end_offset; @@ -608,16 +629,24 @@ if (auto_wrap_) { break_iterator_.SetLocale(style.LocaleForLineBreakIterator()); - if (style.WordBreak() == EWordBreak::kBreakAll || - style.WordBreak() == EWordBreak::kBreakWord) { - break_iterator_.SetBreakType(LineBreakType::kBreakAll); - } else if (style.WordBreak() == EWordBreak::kKeepAll) { - break_iterator_.SetBreakType(LineBreakType::kKeepAll); - } else { - break_iterator_.SetBreakType(LineBreakType::kNormal); + switch (style.WordBreak()) { + case EWordBreak::kNormal: + break_if_overflow_ = style.OverflowWrap() == EOverflowWrap::kBreakWord; + break_iterator_.SetBreakType(LineBreakType::kNormal); + break; + case EWordBreak::kBreakAll: + break_if_overflow_ = false; + break_iterator_.SetBreakType(LineBreakType::kBreakAll); + break; + case EWordBreak::kBreakWord: + break_if_overflow_ = true; + break_iterator_.SetBreakType(LineBreakType::kNormal); + break; + case EWordBreak::kKeepAll: + break_if_overflow_ = false; + break_iterator_.SetBreakType(LineBreakType::kKeepAll); + break; } - - // TODO(kojii): Implement word-wrap/overflow-wrap property } spacing_.SetSpacing(style.GetFontDescription());
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h index 780f7a0..774c961 100644 --- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h +++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h
@@ -64,7 +64,8 @@ kForcedBreak }; - LineBreakState HandleText(const NGInlineItem&, + LineBreakState HandleText(const NGInlineItemResults&, + const NGInlineItem&, NGInlineItemResult*); void BreakText(NGInlineItemResult*, const NGInlineItem&, @@ -84,6 +85,7 @@ void SetShouldCreateLineBox(); void SetCurrentStyle(const ComputedStyle&); + bool IsFirstBreakOpportunity(unsigned, const NGInlineItemResults&) const; void MoveToNextOf(const NGInlineItem&); void MoveToNextOf(const NGInlineItemResult&); @@ -105,6 +107,7 @@ ShapeResultSpacing<String> spacing_; bool auto_wrap_; + bool break_if_overflow_; // We don't create "certain zero-height line boxes". // https://drafts.csswg.org/css2/visuren.html#phantom-line-box
diff --git a/third_party/WebKit/Source/core/loader/PingLoader.cpp b/third_party/WebKit/Source/core/loader/PingLoader.cpp index b86bbe12..c95e703 100644 --- a/third_party/WebKit/Source/core/loader/PingLoader.cpp +++ b/third_party/WebKit/Source/core/loader/PingLoader.cpp
@@ -54,6 +54,7 @@ #include "platform/loader/fetch/FetchContext.h" #include "platform/loader/fetch/FetchInitiatorTypeNames.h" #include "platform/loader/fetch/FetchUtils.h" +#include "platform/loader/fetch/RawResource.h" #include "platform/loader/fetch/ResourceError.h" #include "platform/loader/fetch/ResourceFetcher.h" #include "platform/loader/fetch/ResourceLoaderOptions.h" @@ -459,7 +460,6 @@ if (!frame->GetDocument()) return false; - // TODO(mkwst): CSP is not enforced on redirects, crbug.com/372197 if (!ContentSecurityPolicy::ShouldBypassMainWorld(frame->GetDocument()) && !frame->GetDocument()->GetContentSecurityPolicy()->AllowConnectToSource( url)) { @@ -476,12 +476,20 @@ ResourceRequest request(url); request.SetHTTPMethod(HTTPNames::POST); request.SetHTTPHeaderField(HTTPNames::Cache_Control, "max-age=0"); - FinishPingRequestInitialization(request, frame, - WebURLRequest::kRequestContextBeacon); - + request.SetKeepalive(true); + request.SetRequestContext(WebURLRequest::kRequestContextBeacon); beacon.Serialize(request); + FetchParameters params(request); + params.MutableOptions().initiator_info.name = FetchInitiatorTypeNames::beacon; - return SendPingCommon(frame, request, FetchInitiatorTypeNames::beacon); + Resource* resource = + RawResource::Fetch(params, frame->GetDocument()->Fetcher()); + if (resource && resource->GetStatus() != ResourceStatus::kLoadError) { + frame->Loader().Client()->DidDispatchPingLoader(request.Url()); + return true; + } + + return false; } } // namespace
diff --git a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp index e441f728..6171a36d 100644 --- a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp +++ b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
@@ -256,10 +256,10 @@ DCHECK(IsTimelineRunning()); DCHECK(!wakeup_timer_.IsActive()); - if (delay_time < AnimationTimeline::kMinimumDelay) { + if (delay_time < DocumentTimeline::kMinimumDelay) { ServiceOnNextFrame(); } else { - ScheduleWakeUp(delay_time - AnimationTimeline::kMinimumDelay, + ScheduleWakeUp(delay_time - DocumentTimeline::kMinimumDelay, kFutureAnimationFrame); } }
diff --git a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp index a87671d0..34d4cc11 100644 --- a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp +++ b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp
@@ -164,6 +164,10 @@ if (!script_state->ContextIsValid()) return; DCHECK(preload_response_property_); + if (preload_response_property_->GetState() != + PreloadResponseProperty::kPending) { + return; + } preload_response_property_->Reject( ServiceWorkerError::Take(nullptr, *error.get())); }
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp index f325f02..3af6858 100644 --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
@@ -1025,6 +1025,11 @@ existing_resource->Options().synchronous_policy) return false; + if (existing_resource->GetResourceRequest().GetKeepalive() || + params.GetResourceRequest().GetKeepalive()) { + return false; + } + // securityOrigin has more complicated checks which callers are responsible // for. @@ -1523,10 +1528,14 @@ void ResourceFetcher::StopFetching() { HeapVector<Member<ResourceLoader>> loaders_to_cancel; - for (const auto& loader : non_blocking_loaders_) - loaders_to_cancel.push_back(loader); - for (const auto& loader : loaders_) - loaders_to_cancel.push_back(loader); + for (const auto& loader : non_blocking_loaders_) { + if (!loader->GetKeepalive()) + loaders_to_cancel.push_back(loader); + } + for (const auto& loader : loaders_) { + if (!loader->GetKeepalive()) + loaders_to_cancel.push_back(loader); + } for (const auto& loader : loaders_to_cancel) { if (loaders_.Contains(loader) || non_blocking_loaders_.Contains(loader))
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp index d3fe5cf..43b2095 100644 --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp
@@ -87,6 +87,9 @@ DCHECK(loader_); loader_->SetDefersLoading(Context().DefersLoading()); + if (request.GetKeepalive()) + keepalive_ = this; + if (is_cache_aware_loading_activated_) { // Override cache policy for cache-aware loading. If this request fails, a // reload with original request will be triggered in DidFail(). @@ -106,6 +109,7 @@ void ResourceLoader::Restart(const ResourceRequest& request) { CHECK_EQ(resource_->Options().synchronous_policy, kRequestAsynchronously); + keepalive_.Clear(); loader_.reset(); Start(request); } @@ -449,6 +453,7 @@ resource_->SetEncodedBodyLength(encoded_body_length); resource_->SetDecodedBodyLength(decoded_body_length); + keepalive_.Clear(); loader_.reset(); network_instrumentation::EndResourceLoad( @@ -478,6 +483,7 @@ return; } + keepalive_.Clear(); loader_.reset(); network_instrumentation::EndResourceLoad( @@ -556,4 +562,8 @@ is_cache_aware_loading_activated_ = true; } +bool ResourceLoader::GetKeepalive() const { + return resource_->GetResourceRequest().GetKeepalive(); +} + } // namespace blink
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.h b/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.h index 9d114e7..d887df5 100644 --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.h +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.h
@@ -31,6 +31,8 @@ #include <memory> #include "platform/PlatformExport.h" +#include "platform/heap/Handle.h" +#include "platform/heap/SelfKeepAlive.h" #include "platform/loader/fetch/ResourceLoaderOptions.h" #include "platform/loader/fetch/ResourceRequest.h" #include "platform/wtf/Forward.h" @@ -75,6 +77,7 @@ } ResourceFetcher* Fetcher() { return fetcher_; } + bool GetKeepalive() const; // WebURLLoaderClient // @@ -132,6 +135,11 @@ std::unique_ptr<WebURLLoader> loader_; Member<ResourceFetcher> fetcher_; Member<Resource> resource_; + + // Set when the request's "keepalive" is specified (e.g., for SendBeacon). + // https://fetch.spec.whatwg.org/#request-keepalive-flag + SelfKeepAlive<ResourceLoader> keepalive_; + bool is_cache_aware_loading_activated_; };
diff --git a/third_party/WebKit/Source/platform/testing/UnitTestHelpers.cpp b/third_party/WebKit/Source/platform/testing/UnitTestHelpers.cpp index d0e10b6..b2ec3e8 100644 --- a/third_party/WebKit/Source/platform/testing/UnitTestHelpers.cpp +++ b/third_party/WebKit/Source/platform/testing/UnitTestHelpers.cpp
@@ -89,6 +89,9 @@ return FilePathToWebString(BlinkRootFilePath()); } +// TODO(sashab): Once all tests from web/ are removed, add CoreTestDataPath() at +// Source/core/testing/data and update callers to use CoreTestDataPath() or +// PlatformTestDataPath() as required. String WebTestDataPath(const String& relative_path) { return FilePathToWebString( BlinkRootFilePath()
diff --git a/third_party/WebKit/Source/platform/wtf/allocator/Partitions.cpp b/third_party/WebKit/Source/platform/wtf/allocator/Partitions.cpp index b96cc6e..3dae2e353 100644 --- a/third_party/WebKit/Source/platform/wtf/allocator/Partitions.cpp +++ b/third_party/WebKit/Source/platform/wtf/allocator/Partitions.cpp
@@ -117,6 +117,36 @@ partition_stats_dumper); } +namespace { + +class LightPartitionStatsDumperImpl : public WTF::PartitionStatsDumper { + public: + LightPartitionStatsDumperImpl() : total_active_bytes_(0) {} + + void PartitionDumpTotals( + const char* partition_name, + const WTF::PartitionMemoryStats* memory_stats) override { + total_active_bytes_ += memory_stats->total_active_bytes; + } + + void PartitionsDumpBucketStats( + const char* partition_name, + const WTF::PartitionBucketMemoryStats*) override {} + + size_t TotalActiveBytes() const { return total_active_bytes_; } + + private: + size_t total_active_bytes_; +}; + +} // namespace + +size_t Partitions::TotalActiveBytes() { + LightPartitionStatsDumperImpl dumper; + WTF::Partitions::DumpMemoryStats(true, &dumper); + return dumper.TotalActiveBytes(); +} + static NEVER_INLINE void PartitionsOutOfMemoryUsing2G() { size_t signature = 2UL * 1024 * 1024 * 1024; base::debug::Alias(&signature);
diff --git a/third_party/WebKit/Source/platform/wtf/allocator/Partitions.h b/third_party/WebKit/Source/platform/wtf/allocator/Partitions.h index 2b17085c..f24d4b4 100644 --- a/third_party/WebKit/Source/platform/wtf/allocator/Partitions.h +++ b/third_party/WebKit/Source/platform/wtf/allocator/Partitions.h
@@ -95,6 +95,8 @@ return total_size; } + static size_t TotalActiveBytes(); + static void DecommitFreeableMemory(); static void ReportMemoryUsageHistogram();
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index f47f58a..927af53a 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -8724,8 +8724,7 @@ <int value="2" label="Unknown"/> </enum> - -<enum name="DXGI_COLOR_SPACE_TYPE" type="int"> +<enum name="DXGI_COLOR_SPACE_TYPE"> <summary> DirectX color space type. Documented here: https://msdn.microsoft.com/en-us/library/windows/desktop/dn903661(v=vs.85).aspx @@ -8752,7 +8751,7 @@ <int value="19" label="DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020"/> </enum> -<enum name="DxgiFramePresentationMode" type="int"> +<enum name="DxgiFramePresentationMode"> <int value="0" label="Composed"/> <int value="1" label="Overlay"/> <int value="2" label="None (Unknown)"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 486537a55..1da648b 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -5837,6 +5837,17 @@ <summary>A type of Blink GC.</summary> </histogram> +<histogram name="BlinkGC.LowMemoryPageNavigationGC.Reduction" units="MB"> + <owner>keishi@chromium.org</owner> + <summary> + Amount of memory reduced with the GC triggered on page navigation while the + device is in a low memory state. Only implemented on low end Android devices + at the moment. Memory usage is approximated by summing the memory usage of + the following allocators: BlinkGC, PartitionAlloc, and V8 main thread + isolate heap. + </summary> +</histogram> + <histogram name="BlinkGC.ObjectSizeAfterGC" units="KB"> <owner>haraken@chromium.org</owner> <summary> @@ -23758,8 +23769,8 @@ <owner>media-dev@chromium.org</owner> <summary> Records the output color space of the monitor as reported by Windows. - Recorded once for each monitor when the gpu process starts. - If monitor enumeration fails, this metric will not be provided. + Recorded once for each monitor when the gpu process starts. If monitor + enumeration fails, this metric will not be provided. </summary> </histogram> @@ -23767,9 +23778,9 @@ <owner>hubbe@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> - Records if any connected monitor is HDR capable. Recorded when the gpu process - starts. Only recorded on Windows as of M-61. - If monitor enumeration fails, this metric will not be provided. + Records if any connected monitor is HDR capable. Recorded when the gpu + process starts. Only recorded on Windows as of M-61. If monitor enumeration + fails, this metric will not be provided. </summary> </histogram> @@ -23777,9 +23788,9 @@ <owner>hubbe@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> - Records the display maximum lumens as reported by Windows. - Recorded once for each monitor when the gpu process starts. - If monitor enumeration fails, this metric will not be provided. + Records the display maximum lumens as reported by Windows. Recorded once for + each monitor when the gpu process starts. If monitor enumeration fails, this + metric will not be provided. </summary> </histogram> @@ -29402,6 +29413,10 @@ </histogram> <histogram name="Media.InfoLoadDelay" units="ms"> + <obsolete> + Deprecated June 2017. Found that the MediaInfoLoader class (the only user of + this histogram) is no longer used by anyone. + </obsolete> <owner>qinmin@chromium.org</owner> <summary> The time it takes to perform redirect tracking and a CORS access check while
diff --git a/tools/perf/page_sets/data/loading_mobile.json b/tools/perf/page_sets/data/loading_mobile.json index b1059e4..bfda028 100644 --- a/tools/perf/page_sets/data/loading_mobile.json +++ b/tools/perf/page_sets/data/loading_mobile.json
@@ -1,5 +1,8 @@ { "archives": { + "Facebook": { + "DEFAULT": "loading_mobile_002.wpr" + }, "http://enquiry.indianrail.gov.in/mntes/MntesServlet?action=MainMenu&subAction=excep&excpType=EC": { "DEFAULT": "loading_mobile_000.wpr" },
diff --git a/tools/perf/page_sets/data/loading_mobile_002.wpr.sha1 b/tools/perf/page_sets/data/loading_mobile_002.wpr.sha1 new file mode 100644 index 0000000..ecb4104 --- /dev/null +++ b/tools/perf/page_sets/data/loading_mobile_002.wpr.sha1
@@ -0,0 +1 @@ +9c7c37e0e21f1e76eb4c20bd592eb6d78e68b888 \ No newline at end of file
diff --git a/tools/perf/page_sets/loading_mobile.py b/tools/perf/page_sets/loading_mobile.py index 5012968..3031073 100644 --- a/tools/perf/page_sets/loading_mobile.py +++ b/tools/perf/page_sets/loading_mobile.py
@@ -174,6 +174,3 @@ # self.DisableStory('Detik', [story.expectations.ALL], 'crbug.com/653775') # self.DisableStory( # 'Blogspot', [story.expectations.ALL], 'crbug.com/653775') - - self.DisableStory('Facebook', [story.expectations.ANDROID_NEXUS7], - 'crbug.com/736877')
diff --git a/ui/message_center/views/notification_header_view.cc b/ui/message_center/views/notification_header_view.cc index 97cdd36..0911609 100644 --- a/ui/message_center/views/notification_header_view.cc +++ b/ui/message_center/views/notification_header_view.cc
@@ -4,6 +4,8 @@ #include "ui/message_center/views/notification_header_view.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/font_list.h" @@ -28,6 +30,8 @@ constexpr gfx::Insets kHeaderPadding(0, 12, 0, 2); constexpr int kHeaderHorizontalSpacing = 2; constexpr int kAppInfoConatainerTopPadding = 12; +// Bullet character. The divider symbol between different parts of the header. +constexpr base::char16 kNotificationHeaderDividerSymbol = 0x2022; } // namespace @@ -62,6 +66,23 @@ app_name_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT); app_info_container->AddChildView(app_name_view_); + // Summary text divider + summary_text_divider_ = + new views::Label(base::ASCIIToUTF16(" ") + + base::string16(1, kNotificationHeaderDividerSymbol) + + base::ASCIIToUTF16(" ")); + summary_text_divider_->SetFontList(font_list); + summary_text_divider_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + summary_text_divider_->SetVisible(false); + app_info_container->AddChildView(summary_text_divider_); + + // Summary text view + summary_text_view_ = new views::Label(base::string16()); + summary_text_view_->SetFontList(font_list); + summary_text_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + summary_text_view_->SetVisible(false); + app_info_container->AddChildView(summary_text_view_); + // Expand button view expand_button_ = new views::ImageButton(listener); expand_button_->SetImage( @@ -106,6 +127,18 @@ app_name_view_->SetText(name); } +void NotificationHeaderView::SetProgress(int progress) { + summary_text_view_->SetText(l10n_util::GetStringFUTF16Int( + IDS_MESSAGE_CENTER_NOTIFICATION_PROGRESS_PERCENTAGE, progress)); + has_summary_text_ = true; + UpdateSummaryTextVisibility(); +} + +void NotificationHeaderView::ClearProgress() { + has_summary_text_ = false; + UpdateSummaryTextVisibility(); +} + void NotificationHeaderView::SetExpandButtonEnabled(bool enabled) { expand_button_->SetVisible(enabled); } @@ -159,4 +192,10 @@ Layout(); } +void NotificationHeaderView::UpdateSummaryTextVisibility() { + summary_text_divider_->SetVisible(has_summary_text_); + summary_text_view_->SetVisible(has_summary_text_); + Layout(); +} + } // namespace message_center
diff --git a/ui/message_center/views/notification_header_view.h b/ui/message_center/views/notification_header_view.h index b5fbbc0a..640f6be 100644 --- a/ui/message_center/views/notification_header_view.h +++ b/ui/message_center/views/notification_header_view.h
@@ -22,11 +22,13 @@ NotificationHeaderView(views::ButtonListener* listener); void SetAppIcon(const gfx::ImageSkia& img); void SetAppName(const base::string16& name); + void SetProgress(int progress); void SetExpandButtonEnabled(bool enabled); void SetExpanded(bool expanded); void SetSettingsButtonEnabled(bool enabled); void SetCloseButtonEnabled(bool enabled); void SetControlButtonsVisible(bool visible); + void ClearProgress(); bool IsExpandButtonEnabled(); bool IsSettingsButtonEnabled(); bool IsCloseButtonEnabled(); @@ -38,8 +40,11 @@ private: void UpdateControlButtonsVisibility(); + void UpdateSummaryTextVisibility(); views::Label* app_name_view_ = nullptr; + views::Label* summary_text_divider_ = nullptr; + views::Label* summary_text_view_ = nullptr; views::ImageView* app_icon_view_ = nullptr; views::ImageButton* expand_button_ = nullptr; PaddedButton* settings_button_ = nullptr; @@ -48,6 +53,7 @@ bool settings_button_enabled_ = false; bool close_button_enabled_ = false; bool is_control_buttons_visible_ = false; + bool has_summary_text_ = false; DISALLOW_COPY_AND_ASSIGN(NotificationHeaderView); };
diff --git a/ui/message_center/views/notification_view_md.cc b/ui/message_center/views/notification_view_md.cc index 66e70fd5..2cb5d8b 100644 --- a/ui/message_center/views/notification_view_md.cc +++ b/ui/message_center/views/notification_view_md.cc
@@ -551,6 +551,7 @@ if (notification.type() != NOTIFICATION_TYPE_PROGRESS) { left_content_->RemoveChildView(progress_bar_view_); progress_bar_view_ = nullptr; + header_row_->ClearProgress(); return; } @@ -566,6 +567,8 @@ progress_bar_view_->SetValue(notification.progress() / 100.0); progress_bar_view_->SetVisible(notification.items().empty()); + + header_row_->SetProgress(notification.progress()); } void NotificationViewMD::CreateOrUpdateListItemViews(
diff --git a/ui/strings/ui_strings.grd b/ui/strings/ui_strings.grd index 7fa2afa0..c9af803 100644 --- a/ui/strings/ui_strings.grd +++ b/ui/strings/ui_strings.grd
@@ -634,6 +634,9 @@ <message name="IDS_MESSAGE_CENTER_LIST_NOTIFICATION_OVERFLOW_INDICATOR" desc="The overflow indicator shown when a list notification has more list items than visible ones. Should be same as AndroidPlatform msgId 1863231301642314183. (frameworks/base/packages/SystemUI/res/values/strings.xml:notification_group_overflow_indicator)"> + <ph name="NUMBER">$1<ex>3</ex></ph> </message> + <message name="IDS_MESSAGE_CENTER_NOTIFICATION_PROGRESS_PERCENTAGE" desc="The summary text in a notification that is shown with progress bar."> + <ph name="NUMBER">$1<ex>75</ex></ph> % + </message> <if expr="not use_titlecase"> <message name="IDS_MESSAGE_CENTER_QUIET_MODE_BUTTON_TOOLTIP" desc="The tooltip text for the do not disturb button."> Do not disturb